ההיסטוריה של אבטחת קוד פתוח רצופה בדוגמאות של כשלים קטסטרופליים וכמעט הרסניים. קמפיין תוכנות זדוניות קריפטוגרפיות שהתגלה בתחילת ספטמבר נופל איפשהו בין השניים. דיווחים, גורם איום לא מזוהה פרץ לחשבון יחיד של מתחזק npm, ובאמצעות גישה זו, פרס קוד זדוני בחבילות עם למעלה משני מיליארד הורדות שבועיות.
זה כבר תואר כפשרה הגדולה ביותר בשרשרת האספקה בהיסטוריה של npm - שהוא עצמו רישום התוכנה הגדול בעולם. אם זהו סימן לבאות, כיצד משתמשים תאגידיים בקוד פתוח מבודדים את עצמם מפני סיכון סייבר גובר?
מה קרה ל-npm?
ב-8 בספטמבר, ג'וש ג'ונון (הידוע גם בשם "qix"), מפתח ומתחזק קוד פתוח, חשף ברשתות החברתיות כי חשבון ה-npm שלו נפרץ. הוא גילה זאת לאחר שהחשבון החל לפרסם גרסאות טרויאניות של חבילות פופולריות כמו chalk (300 מיליון הורדות שבועיות), debug (357 מיליון) ו-ansi-styles (371 מיליון).
הקוד הזדוני "מיירט בשקט פעילות קריפטו ו-web3 בדפדפן, מתמרן אינטראקציות עם הארנק וכותב מחדש יעדי תשלום כך שכספים ואישורים מופנים לחשבונות הנשלטים על ידי התוקף ללא כל סימנים ברורים למשתמש", על פי אייקידו.
דווח כי ג'ונון הייתה מטרה למתקפת הנדסה חברתית מתוחכמת. גורמי האיום רשמו דומיין מסוג typosquatting מספר ימים קודם לכן והשתמשו בו כדי להתחזות למנהלי npm לגיטימיים בדוא"ל איפוס אימות דו-שלבי. ג'ונון טענה שזה "נראה לגיטימי מאוד".
בריחה בר מזל?
בסופו של דבר, קהילת הקוד הפתוח התאחדה, ובאופן מרשים - כל גרסאות החבילות הזדוניות הוסרו פחות מארבע שעות לאחר מכן.
"כולם עובדים יחד. ניתן לשתף מידע. מספר האנשים שעובדים על זה כעת אינו רק גדול יותר מצוות האבטחה שלכם, הוא גדול יותר מהחברה שלכם", אמר סגן נשיא האבטחה של אנקור, ג'וש ברסרס. דיווחים באותה תקופה הצביעו על כך שגורמי האיום הצליחו לגנוב פחות מ-1000 דולר מארנקי הקריפטו של הקורבנות, למרות הפוטנציאל העצום של הקמפיין.
עם זאת, זה לא היה סוף הסיפור. אפילו בחלון הזמן הקצר שבו החבילות הופצו בטבע, הן התפשטו לכל עבר. לדברי ספקית האבטחה Wiz, 10% מסביבות הענן הושפעו.
"במהלך פרק הזמן הקצר של שעתיים שבהן הגרסאות היו זמינות להורדה, אם הן שולבו בבניית ממשק משתמש ונשלחו כנכסי אינטרנט, כל דפדפן שטוען את האתר המושפע היה מבצע מטען זדוני שמחבר ממשקי API של הרשת והארנק על מנת לכתוב מחדש בשקט מקבלי/אישורי מטבעות קריפטוגרפיים לפני החתימה, כך שעסקאות יופנו לארנקים הנשלטים על ידי התוקף", טען הספק.
מאוחר יותר התברר כי גורמי האיום כיוונו גם לתוכנות מתחזקות וחבילות אחרות, כולל duckdb, proto-tinker-wc, prebid-universal-creative, ו-prebid ו-prebid.js. אמנם למרבה המזל, המטען הזדוני היה "רק" תוכנה זדונית לגניבת קריפטוגרפיה, ולא משהו רציני יותר, אך זוהי בוודאי אזהרה לעתיד.
מתחזקים על הכוונת
אין דרך להחזיר את הג'יני של קוד פתוח לבקבוק. מעל 6.6 טריליון רכיבי קוד פתוח הורדו בשנת 2024, כאשר npm היו אחראים ל-4.5 טריליון בקשות, לפי סוג Sonatypeאבל מדאיג שמנהלי חבילות פופולריות מאוד, שלעתים קרובות חסרי משאבים ולחוצים יתר על המידה, נמצאים תחת מטרה במספרים גדולים יותר. סגן נשיא אזורי של סונטיפ, מיטון זאברי, משווה את הקמפיין האחרון הזה לזה... מיקוד ב-xz Utils בשנה שעברה.
"ראינו דפוס ברור שבו גורמי איום מכוונים לתחזוקה של פרויקטים הנמצאים בשימוש נרחב אך אינם מקבלים משאבים מספקים. הפגיעה האחרונה בחבילות npm כמו chalk ו-debug משקפת את מה שראינו בניסיון הפריצה של xZ Utils דרך דלת אחורית. בשני המקרים, היריב בנה בסבלנות אמון כדי להשיג שליטה, מה שמראה שהנדסה חברתית היא כעת שלב מפתח בפריצה לשרשרת האספקה", הוא אומר ל-ISMS.online.
"התעשייה חייבת להכיר בכך שמנהלי קוד פתוח הם חלק מהתשתית הקריטית שלנו ולהתחיל לספק להם משאבים בהתאם באמצעות מימון, כלי אבטחה ורשתות תמיכה. עבודתנו על xz Utils הראתה שהתרעה מוקדמת שיתופית ותגובה מהירה ברחבי המערכת האקולוגית יכולים לעצור את ההתקפות הללו לפני שהן מתפשטות."
נניח פשרה
סגן נשיא למחקר אבטחה ב-JFrog, סחר מנשה, טוען שהאתגר במתקפות כאלה הוא המהירות שלהן.
"ברגע שחבילה מהימנה נפגעת, היא יכולה להתפשט במהירות דרך צינורות CI/CD ובפרויקטים שונים. גישת אפס אמון היא קריטית: אין לסמוך על אף חבילה רק בגלל שהיא פופולרית", הוא אומר ל-ISMS.online. "כדי למתן את ההתקפות הללו, ארגונים צריכים לחייב אימות דו-שלבי. זה כבר נאכף ב-npm וב-PyPI, אך לא במאגרים אחרים כמו Maven ו-NuGet."
באופן אידיאלי, חבילות צריכות לעבור בדיקה לפני שהן נכנסות לארגון, עם כללים מוגדרים וניתוח של תלויות ישירות וטרנזיטיביות בהקשר, ממשיך מנשה.
"דחיית שדרוגים גם עוזרת. למעשה, המחקר שלנו מראה שהמתנה של לפחות 14 יום לפני פריסת גרסאות חבילות חדשות מספקת אמצעי הגנה חזק, שכן חבילות חטופות כמעט תמיד מזוהות ומוסרות במסגרת זמן זו", הוא אומר.
זאברי מסונאטייפ טוען כי גם נראות של רכיבים וחבילות בקוד פתוח היא המפתח.
"ארגונים צריכים להניח שפגיעה אפשרית ולהיות מוכנים להגיב על ידי שמירה על רשימת חומרים מדויקת של תוכנה (SBOM), ניטור שינויים חשודים בתלות ובניית ארגז חול", הוא מסביר. "כאשר חקרנו את תקרית xz Utils, ראינו כיצד הנראות הזו אפשרה לזהות ולהסיר במהירות רכיבים פגומים."
גם סטנדרטים של אבטחה יכולים לסייע לארגונים, טוען זאברי.
"מסגרות כמו ISO 27001 יכולות לסייע באכיפת תהליכי ניהול סיכונים, בקרת גישה ותגובה לאירועים, אך יש ליישם אותן מנקודת מבט של שרשרת האספקה", הוא מסכם. "הטמעת בקרות אבטחה בקוד פתוח בתקנים אלה יכולה להפוך ארגונים לעמידים יותר בפני סוג של השתלטות על חשבונות שראינו זה עתה."
דבר אחד בטוח: ההתקפות הללו יחזרו חזק יותר בכל פעם. ימים ספורים לאחר שהקמפיין הזה נחת, תוכנה זדונית ראשונה אי פעם הניתנת לתולעת פגע במערכת האקולוגית של npm. מה שלא יקרה, מנהלי מערכות מידע לא יכולים להרשות לעצמם נקודה עיוורת של אבטחת קוד פתוח בארגון שלהם.










