ספר הדרכה לתולעת npm

ספר המשחק של תולעת npm: אותה התקפה, שלוש פעמים בשמונה חודשים

שלוש פעמים בשמונה חודשים, אותו ספר הפעלה של תולעת npm עבד. תוקפים שונים, חבילות שונות, אותה מכניקה, ואותו חלון זמן בין פרסום לגילוי שאפשרו כל אחת מהן. אם אתם שואלים מהי בעצם תולעת npm ומדוע הדפוס ממשיך לחזור במקום להתוקן, זוהי התשובה הכנה, אירועים, מכניקה, והפער היחיד שאפילו מסגרת הגנתית איתנה עדיין משאירה פתוח.

מהי תולעת npm?

תולעת npm היא פיסת קוד זדונית המתפרסמת ברישום npm ומפיצה את עצמה אוטומטית לחבילות אחרות לאחר שהיא פועלת, בדרך כלל על ידי גניבת אישורי הפרסום של המתחזק ושימוש בהם כדי להזריק את אותו מטען לכל חבילה שהמתחזק שולט בה. זוהי "תולעת" במובן הקלאסי: היא לא מחכה שמישהו יתקין אותה בכוונה, היא מתפשטת בעצמה, מחבילה לחבילה, מחשבון לחשבון, במהירות מכונה.

התפשטות עצמית זו היא מה שמבדיל בין אירוע של תולעת npm לבין חבילה זדונית רגילה. חבילה פגומה בודדת היא מחט בערימת שחת. תולעת npm הופכת כל מתחזק שנפגע לנקודת הפצה חדשה, וערימת השחת מתחילה לייצר מחטים משלה.

תקריות תולעי ה-npm הגדולות ביותר עד כה

בשנה האחרונה ניתנו לתבנית התולעת npm שלוש ניסויים בעולם האמיתי, כל אחת יעילה יותר מהקודמת:

  • שי-חולוד (ספטמבר 2025). תולעת ה-npm הראשונה שתועדה מתפשטת מעצמה. היא פגעה באישורי מתחזקים, ולאחר מכן השתמשה בהם כדי לפרסם גרסאות זדוניות של כל חבילה תחת שליטתו של אותו מתחזק, והפכה את המפתחים עצמם למנגנון האספקה ​​של השלב הבא של התולעת.
  • אקסיוס (מרץ 2026). תוכנה זדונית של מדינות לאום שהוסתרה בתוך חבילה שנשלפה כ-100 מיליון פעמים בשבוע. לא תולעת במובן המדויק של התפשטות, אבל הוכחה לכך שאותו מודל אמון של מערכת אקולוגית של npm ששי-חולוד ניצלה יכול לשאת מטען בקנה מידה עצום באמת.
  • SAP npm (אפריל 2026). תואר באותה תקופה כשי-חולוד מיניאטורי: אותה תבנית תולעים, שחוזרת על עצמה בקנה מידה גדול, פחות משנה לאחר התקרית המקורית. המנגנון לא השתנה. גם ההגנות לרוב לא.

שלושה מקרים של תולעת npm, דפוס חוזר אחד: לפגוע במוציא לאור מהימן, להשתמש באישורים שלו כדי להפיץ באופן אוטומטי, ולסמוך על הפער בין הפרסום לזיהוי הקהילה שיעשה את השאר.

ציר זמן של מתקפות שרשרת האספקה ​​הגדולות ביותר של מערכות NPM, 2025-2026 שמונה מתקפות שרשרת אספקה ​​npm מאוגוסט 2025 עד יוני 2026. כתום מסמן קמפיינים של תולעים מתפשטות מעצמן; אפור מסמן פגיעות באישורים או באסימונים. אוגוסט 26, 2025 פשרה בין Nx ל-s1ngularity אסימון פרסום נגנב ספטמבר 8, 2025 חטיפת גיר/ניפוי שגיאות חשבון מתחזק שנפגע ספטמבר 14, 2025 תולעת שי-חולוד התולעת הראשונה שמתרבה מעצמה נובמבר 24, 2025 שי-חולוד 2.0 וריאנט תולעת חמקמק יותר מר 2026 תוכנות זדוניות של מדינת אקסיוס תוכנות זדוניות של המדינה, 100 מיליון דיל לשבוע אפריל 2026 פשרה של SAP npm Enterpriseדפוס תולעים בקנה מידה מאי 11, 2026 טאן סטאק CI/CD פשרה גניבת אסימוני CI, 84 גרסאות יוני 1, 2026 פשרה במרחב השמות של רד האט SLSA תקף, עדיין זדוני תולעת מתפשטת עצמית פגיעה באישורים או באסימונים
שמונה מתקפות שרשרת אספקה ​​npm, אוגוסט 2025 עד יוני 2026. כתום מסמן קמפיינים של תולעים מתפשטות מעצמן.

הדפוס שחוזר על עצמו

הסירו את הפרטים הספציפיים וכל תקרית של תולעת npm תעקוב אחר אותן ארבע פעימות:

  • פגיעה בחשבון. אסימון פרסום של מתחזק, npm login, או שאישורי CI נגנבים, בדרך כלל באמצעות פישינג, סוד שדלף או תלות שנפגעה במעלה השרשרת שלהם.
  • הזרקה שקטה. התוקף דוחף גרסה חדשה של חבילה לגיטימית ומהימנה עם קוד זדוני נוסף, לרוב בתוך סקריפט לאחר ההתקנה או סקריפט מחזור חיים אחר שפועל אוטומטית ברגע שמישהו מתקין אותו.
  • התפשטות אוטומטית. אם המתחזק שנפגע שולט בחבילות אחרות, או אם הסקריפט הזדוני עצמו אוסף אישורים נוספים, התולעת מתפשטת לחבילה הבאה ולמתחזק הבא ללא פעולה נוספת מצד התוקף.
  • השהיית הגילוי. החבילה נמצאת ברישום, ניתנת להתקנה על ידי כל אחד, עד שמישהו שם לב, מדווח עליה, והיא נשלפת. השהייה הזו, שעות עבור תקריות מסוימות, ימים עבור אחרות, היא כל החלון שהתולעת צריכה.

זיהוי הפעימה הרביעית הוא מה שחשוב באמת להגנה. כל אסטרטגיית הפחתה לאירוע של תולעת npm היא, בליבתה, ניסיון לצמצם או לעקוף את השהיית הגילוי הזו.

מסגרת שכדאי לצטט: התשובה של SIP לבעיית ה-Cooldown

לא כל תגובה לדפוס הזה מגיעה מספק. אחת הברורות ביותר היא SIP, תוכנית הביטחון המיידית של מוחמד-עלי עראבי, מסגרת חירום בת חמש בקרות לסיכון שרשרת אספקה ​​של תוכנה, שנבעה משאלה מעשית מאוד שנשאלה בסוף מפגש SafeDev: "אם אנחנו יכולים לעשות רק כמה דברים, מה עלינו לעשות קודם?"

הבקרה השנייה של SIP מכוונת ישירות לבעיית תולעת ה-npm: הקפאת תלויות שלא נבדקו עם תקופת צינון של חמישה ימים, והשבתת סקריפטים של מחזור חיים כך שפוסט-התקנה זדונית לא תוכל להתבצע אוטומטית במהלך ההתקנה. בפועל, זה... min-release-age=5 ו ignore-scripts=true בפרויקט .npmrc, נאכף ב-CI כך שקובץ נעילה לא יכול לפתור בשקט חבילה שפורסמה אתמול. זוהי בקרה אמיתית, הדורשת מאמץ נמוך, והיא מכוונת ישירות לאותו השהיית זיהוי שכל אירוע תולעת npm תלוי בו. צללו פנימה:

היכן שחלון הצינון עדיין משאיר פער

תקופת צינון היא הימור: שהקהילה תבחין ותדווח על חבילה זדונית לפני שתקופת ההמתנה תסתיים. ברוב המקרים, הימור זה משתלם. חלק משמעותי מהחבילות שנפגעו מסומנות בימים הראשונים לפרסום, וזו בדיוק הסיבה שחלון של חמישה ימים הוא ברירת מחדל סבירה.

אבל תולעת npm לא מתנהגת כמו חבילה זדונית טיפוסית, וזה משנה את מה שזמן קירור קבוע יכול ומה לא יכול לעשות בשבילך.

להיות מראשcisלגבי מהירות: תולעת שמתפשטת במהירות לא באמת מביסה את זמן הקירור עצמו. אם אוכפים גיל שחרור מינימלי קפדני, חבילות שפורסמו במהלך הגל הראשוני הזה עדיין חדשות מדי כדי להיכנס לבנייה, לא משנה כמה חבילות התולעת פוגעת בו בינתיים. מהירות חשובה, אבל היא חשובה לכל מי שמפעיל קירור, לא כדי לנצח אחד שכבר נאכף.

המגבלה האמיתית היא סבלנות. מטען זהיר יותר יכול להישאר רדום מעבר לתקופת הצינון, ולהיות מופעל רק לאחר שהימים עברו והחבילה הגיעה לאזור ה"מהימן", לפני...cisאלי כי הוא יודע שזמן קירור עוקב אחריו. זהו התרחיש שבו זמן קירור קבוע לבדו אינו מספיק, ובדיוק שבו משהו כמו הזיהוי מבוסס הראיות של MEW צריך לשבת לצדו, לא במקומו.

אף אחד ממצבי הכישלון אינו פגם בחשיבה של SIP. זמן קירור הוא הימור לגילוי קהילתי, ולגילוי קהילתי יש סף: הוא לא יכול לתפוס את מה שאף אחד עדיין לא דיווח עליו. זה לא פער ייחודי ל-SIP, זוהי מגבלה מבנית של כל הגנה שמחכה לחתימה, ייעוץ או דוח ציבורי לפני פעולה.

כיצד MEW סוגר את פער חלון הצינון

זה טרוםcisאלי הפער התרעה מוקדמת מפני תוכנות זדוניות (MEW) של Xygeni בנוי להיסגר. במקום להמתין לדוחות קהילה או לחתימה שפורסמה, MEW סורק באופן רציף את NPM, PyPI ו-Maven כאשר חבילות וגרסאות חדשות מתפרסמות, ומנתח התנהגות במקום להתאים לאיומים ידועים. כאשר משהו נראה זדוני, הוא מוכנס להסגר והממצא מאושר על ידי חוקרי אבטחה לפני הגילוי לציבור, לא לאחר מכן.

הבחנה זו חשובה עבור שני מצבי הכשל של תולעת ה-npm הנ"ל. כנגד תולעת המתפשטת במהירות, זיהוי חתימה מוקדמת אינו זקוק לחמשת הימים שזמן קירור מניח שיש לו. כנגד מטען סבלני ורדום, ניתוח ההתנהגות של MEW אינו מחפש גיל או מוניטין, הוא מחפש מה הקוד באמת עושה, כך שהמתנה של חלון קירור לא קונה לתוקף כלום.

חומת האש של MEW, Dependency Firewall, מרחיבה זאת עד לנקודת ההתקנה עצמה, וחוסמת חבילה זדונית בזמן אמת גם אם היא עברה בדיקות קודמות, ואותה שכבת גילוי מכסה את... CI/CD צד של תקרית תולעת npm: דפוס הנעילה-פתיחה, ההזרקה והנעילה מחדש המאפשר לתוקף לדחוף קוד זדוני commit ולכסות בשקט את עקבותיהם, עם נתיב ביקורת מלא אם זה יקרה בכל מקרה.

SIP ו-MEW עונים על אותה שאלה, בשכבות שונות

שום דבר מזה לא הופך את בקרת זמן הקירור של SIP לשגויה, וראוי לומר זאת בפשטות: זמן קירור של חמישה ימים עם סקריפטים של מחזור החיים מושבתים הוא עדיין אחת ההגנות המהירות והזולות ביותר שצוות יכול להציב כנגד תקרית של תולעת npm רגילה, והוא שייך לכל תוכנית רצינית לחיזוק שרשרת האספקה. מה שהוא לא יכול לעשות, מעצם התכנון, הוא לתפוס את מה שהקהילה עדיין לא מצאה. זוהי משימה של גילוי רציף, מבוסס התנהגות, הפועל מתחת לזמן הקירור, לא במקומו.

בשילוב שכבות, שתי הגישות מכסות את שני קצוות אותה בעיה: SIP מקשה את הבנייה pipeline, הקפאת התלות, ותמונת המכולה סביב נוף איומים ידוע ונחשף, בעוד שזיהוי טרום-חתימה של MEW מכסה את אירועי תולעת ה-npm שטרם נחשפו, אלו שחלון קירור, מכוח ההיגיון שלו, אינו יכול לצפות להם.

שאלות נפוצות

מהי תולעת npm, במשפט אחד?
קוד זדוני שפורסם ב-npm ומפזר את עצמו אוטומטית לחבילות אחרות, בדרך כלל על ידי גניבת אישורי מתחזק ושימוש בהם להזרמת אותו מטען במקום אחר, ללא פעולה נוספת מצד התוקף.

האם כל חבילת npm זדונית היא תולעת npm?
לא. חבילה זדונית שאינה מתפשטת מעצמה היא מתקפת שרשרת אספקה, אך לא תולעת. מה שמגדיר באופן ספציפי תקרית של תולעת npm הוא שלב ההתפשטות העצמית: פשרה אחת מובילה אוטומטית לבאה.

האם תקופת צינון של תלות עוצרת תולעת npm?
זה מפחית משמעותית את הסיכון, מכיוון שרוב החבילות הזדוניות מדווחות בתוך הימים הראשונים לפרסום. אבל זמן קירור הוא הימור על מהירות זיהוי הקהילה, וניתן לבנות תולעת npm המתפשטת במהירות או רדומה במכוון במיוחד כדי להתגבר על חלון זה.

מה באמת תופס תולעת npm לפני תקופת צינון?
סריקה רציפה, מבוססת התנהגות, שאינה תלויה בחתימה או בדוח ציבורי שעדיין קיים. זהו הפער הספציפי שכלי זיהוי טרום-חתימה כמו MEW של Xygeni נועדו לסגור.

כלי SCA לניתוח קומפוזיציה - תוכנה
תעדוף, תיקון ואבטחת סיכוני התוכנה שלך
קבל את החשבון החינמי שלך.
אין צורך בכרטיס אשראי.

אבטחו את פיתוח ואספקת התוכנה שלכם

עם חבילת המוצרים Xygeni