מתקפת שרשרת אספקה ​​של AsyncAPI npm מעבירה תוכנות זדוניות רב-שלביות ליותר מ-2 מיליון הורדות שבועיות

העדכון אחרון: 07/15/2026
מחבר: C SourceTrail
  • ארבע חבילות @asyncapi npm נפגעו ב-14 ביולי 2026, באמצעות מתקפת CI/CD, וכתוצאה מכך נוצרו חמש גרסאות זדוניות.
  • הנוזקה מופעלת בעת ייבוא ​​החבילה, לא בזמן ההתקנה, ומורידה מסגרת בוטנט מתוחכמת מ-IPFS.
  • המטען כולל גניבת אישורים, הרעלת כלי בינה מלאכותית, התפשטות דמוית תולעת ו-C2 רב-ערוצי באמצעות HTTP, Nostr, IPFS, BitTorrent, libp2p ואת'ריום.
  • כל הגרסאות הזדוניות הוסרו מ-npm, אך ארגונים חייבים ליצור מחדש קבצי נעילה, לסובב אישורים ולבקר מערכות שנפגעו.

אינפוגרפיקה של מתקפת שרשרת אספקה ​​של AsyncAPI npm

ב-14 ביולי 2026, מתקפה מתואמת של שרשרת האספקה ​​פגעה במערכת האקולוגית של קוד פתוח AsyncAPI, ופגעה בארבע חבילות npm הנמצאות בשימוש נרחב, אשר יחד זוכות ליותר מ -2.25 מיליון הורדות שבועיות . המתקפה ניצלה צינורות פרסום מהימנים ב-GitHub Actions, ואפשרה לקוד זדוני לחדור דרכם מבלי להסתמך על ווי התקנה מסורתיים של npm. במקום זאת, הנוזקה מופעלת ברגע שמפתח מייבא את המודול הפגוע, מה שהופך אותה למסוכנת במיוחד עבור סביבות CI/CD ותחנות עבודה של מפתחים.

חוקרי אבטחה מחברות מרובות - כולל StepSecurity, OX Security, Socket, Wiz ו-SafeDep - אישרו באופן בלתי תלוי את התקרית. התוקף קיבל גישה באמצעות דחיפה לשני מאגרי GitHub נפרדים של AsyncAPI (אסינקאפי/גנרטור ו asyncapi/spec-json-schemas) והשתמשו בזרימות העבודה של הפרויקטים עצמם כדי לפרסם חבילות עם אישורי מקור SLSA תקפים. לא נגנב אסימון npmהפשרה ניצלה את זרימת עבודה של פעולות GitHub שתצורתן לא נכונה שאפשרו לתוקף לדחוף פקודות קומיט תחת זהות git placeholder (Your Name ).

ציר זמן של התקפה וחבילות מושפעות

ההתקפה הראשונה פגעה ב אסינקאפי/גנרטור מאגר בשעה 06:58 UTC. הוצאה זדונית של commit אל ה- next הענף עורר את release-with-changesets.yml זרימת עבודה, פרסום שלוש חבילות עם טרויאנים: @asyncapi/generator@3.3.1, @asyncapi/generator-helpers@1.1.1, ו @asyncapi/generator-components@0.7.1. רק 15 דקות לאחר מכן, התוקף הסתובב לכיוון asyncapi/spec-json-schemas מאגר, דוחף סדרה של קומיטים אל ה- master ענף. כתוצאה מכך נוצרו שתי גרסאות זדוניות נוספות: @asyncapi/specs@6.11.2 ו @asyncapi/specs@6.11.2-alpha.1כל חמש הגרסאות פורסמו בין השעות 07:10 ל-08:30 UTC, וחלון החשיפה נמשך עד 11:18 UTC, אז בוטלו סופית החבילות.

מה שהופך את ההתקפה הזו לחסרת משמעות במיוחד הוא ש הקוד הזדוני מבוצע בזמן הייבוא, לא בזמן ההתקנההמטען מוטמע ישירות בקבצי ה-JavaScript העיקריים של כל חבילה - אין צורך בסקריפטים שלפני ההתקנה או לאחר ההתקנה. לדוגמה, ב- @asyncapi/generator, הטפטפת נמצאת ב apps/generator/lib/templates/config/validator.jsכאשר עבודת בנייה או CI קוראת לספרייה, קוד ה-JavaScript המעורפל יוצר תהליך צאצא נסתר שמוריד את השלב הבא מ-IPFS.

תוכנה זדונית רב-שלבית: מסגרת Miasma

השלב השני, קובץ מוצפן בשם sync.js (כ-8.25 מגה-בייט), נלקח מ- ipfs.io/ipfs/QmQobZSp1wRPrpSEQ56qnyq7ecZh5Bg5k1fnjt4SUwwHb9 ונשמרו בספריות ספציפיות לפלטפורמה (למשל, %LOCALAPPDATA%\NodeJS\sync.js ב-Windows). לאחר פענוח באמצעות HKDF-SHA256 ו-AES-256-GCM, מופיע המטען הסופי: א מסגרת בוטנט מודולרית של 3.09 מגה-בייט שמזדהה כ"Miasma v3". המסגרת כוללת למעלה מ-744 מודולים ותומכת בשישה ערוצי פיקוד ובקרה עצמאיים, כולל HTTP REST, Nostr relays, IPFS gateways, BitTorrent DHT, libp2p GossipSub, ואפילו חוזים חכמים של Ethereum. עיצוב רב-ערוצי זה מבטיח שהתוקף יוכל לשמור על תקשורת גם אם נקודות קצה מסוימות חסומות.

שרשרת התקפות תוכנות זדוניות של מיאסמה

יכולותיה של הנוזקה חורגות הרבה מעבר לגניבת אישורים. על פי ניתוח סטטי, היא כוללת מודולים עבור קצירת אישורים (סיסמאות דפדפן, מפתחות SSH, אסימוני npm, אישורי AWS, מחזיק מפתחות macOS), הרעלת כלי בינה מלאכותית (מכוון ל-Claude Code, GitHub Copilot ו-Cursor), תנועה צידית של LAN, ו התפשטות דמוית תולעת על פני רישומי npm, PyPI ו-Cargo. הוא גם נושא מנוע מטמורפי שמטשטש מחדש כל עותק, מה שמקשה על הזיהוי. ראוי לציין, שהאופרטורים קובעים propagate.npm: false בפריסה זו, מה שמרמז על קמפיין ממוקד ולא על תולעת המונית.

תיקון ולקחים ארוכי טווח

כל חמש הגרסאות הזדוניות הוסרו מ-npm, ותגיות ה-dist האחרונות מצביעות כעת על גרסאות נקיות. עם זאת, קבצי נעילה קיימים שנוצרו במהלך חלון החשיפה ייתכן שעדיין נעילת הגרסאות שנפגעו (07:10–11:18 UTC). ארגונים צריכים למחוק וליצור מחדש קבצי נעילה, ולאחר מכן להפעיל בדיקה חדשה. npm installבנוסף, עליהם לבדוק את הדברים הנסתרים NodeJS/sync.js קובץ בכל המערכות המושפעות, להרוג כל תהליכי צאצא יתומים, ולסובב כל אישור שהיה קיים במחשב - כולל אסימוני GitHub, מפתחות SSH, אישורי AWS וסיסמאות שנשמרו בדפדפן.

צוותי אבטחה צריכים גם לבדוק יומני בנייה ו-CI לאיתור חיבורים יוצאים בלתי צפויים לשערי IPFS, שרת C2 בכתובת 85.137.53.71 , צמתי אתחול של BitTorrent או דומייני ממסר Nostr. ההתקפה מדגישה נקודה עיוורת קריטית: אישורי מקור (SLSA) מאמתים שחבילה הגיעה מתהליך עבודה מורשה, אך הם אינם מבטיחים שה-commit שהופעל היה לגיטימי . ככל שהתקפות בשרשרת האספקה ​​מתפתחות, ניטור התנהגות בזמן ריצה - לא רק בדיקות בזמן התקנה - הופך חיוני.

תקרית זו היא תזכורת חדה לכך ששרשרת אספקת התוכנה מאובטחת רק כמו החוליה החלשה ביותר בצינור CI/CD. התוקף לא היה צריך לשבור את ההגנות של npm; הם פשוט השתמשו בכלים של הפרויקט עצמו נגדה. בהמשך, ארגונים צריכים ליישם תקופות צינון עבור גרסאות חבילה חדשות, לאכוף את הרשאות הנמוכות ביותר עבור פעולות GitHub, ולהשתמש בכלי ניטור זמן ריצה כמו Harden-Runner כדי לזהות פעילות רשת חריגה. קהילת AsyncAPI הגיבה במהירות, אך רדיוס הפיצוץ - המשפיע על מיליוני הורדות שבועיות - מראה כיצד אישור דחיפה יחיד שנפגע יכול להתפשט ברחבי המערכת האקולוגית כולה.

הודעות קשורות: