תוקפים כבר אינם מבצעים דיוג לעובדים סופיים, אלא למפתחים ומתחזקים של חבילות קוד פתוח כדי להזריק קוד זדוני לתלויות קריטיות. מקרים כמו xz-utils (2024), event-stream (2018) ו־ua-parser-js (2021) חושפים דפוס: דיוג בשרשרת האספקה הוא וקטור ההתקפה החדש והשקט, וההגנות המסורתיות — כמו חומות אש או אימות רב־גורמי — אינן עוצרות אותו.
מדוע מפתחים הם היעד החדש לדיוג?
דיוג מסורתי מתמקד במשתמשים סופיים באמצעות הודעות כלליות ("חשבונך נחסם"). לעומת זאת, דיוג בשרשרת האספקה (supply chain phishing) הוא מותאם אישית במיוחד: התוקפים חוקרים את מתחזקי חבילות הקוד הפתוח, את המאגרים שלהם, ואפילו את הדיונים שלהם ב־GitHub או Discord. המטרה אינה גניבת אישורים, אלא השגת גישה כדי להזריק קוד זדוני לתלויות שמתפשטות לאחר מכן לאלפי פרויקטים במורד הזרם.
דוגמה מובהקת היא המקרה של xz-utils (CVE-2024-3094). ב־2024, תוקף התחזה למפתח לגיטימי במשך שנתיים, וזכה באמונו של המתחזק המקורי. הוא השתמש בטכניקות של הנדסה חברתית מתקדמות: הציע עזרה בבאגים, שיפר תיעוד, ואפילו יצר חשבונות מזויפים כדי לאמת את תרומותיו. התוצאה: דלת אחורית בכלי דחיסה המשמש בהפצות לינוקס כמו Fedora ו־Debian. הספרות הקיימת מצביעה על כך שסוג זה של התקפות גדל ב־633% בין 2022 ל־2023 (CISA, 2023), אך המספר האמיתי עשוי להיות גבוה יותר, שכן אירועים רבים אינם מדווחים.
מה שהופך וקטור זה לייחודי הוא אפקט ההכפלה. חבילה אחת שנפרצה יכולה להשפיע על מאות פרויקטים תלויים. ב־2021, החבילה ua-parser-js (המשמשת חברות כמו Facebook ו־Microsoft) נחטפה באמצעות התקפת דיוג על המתחזק. הקוד הזדוני גנב אישורים וכרה מטבעות קריפטוגרפיים בשרתי המשתמשים הסופיים. צוות CyberShield אימת כי באמריקה הלטינית, 42% מהעסקים הקטנים והבינוניים משתמשים לפחות בתלות אחת פגיעה מבלי לדעת זאת, על פי ביקורות שנערכו ב־2023.
טקטיקות דיוג בשרשרת האספקה: כיצד פועלים התוקפים
התוקפים אינם משתמשים בתבניות כלליות. הטכניקות שלהם כוללות:
- התחזות למפתחים: יצירת חשבונות GitHub/GitLab עם שמות דומים למתחזקים אמיתיים (למשל:
johndoe-devלעומתjohndoe) ושליחת בקשות משיכה עם שינויים "תמימים" שמתפתחים בהמשך לקוד זדוני. - דיוג באמצעות תרומות: שליחת מיילים למתחזקים המציעים עזרה בבאגים או שיפורי ביצועים. דוגמה: ההתקפה על
event-stream(2018) החלה בהודעה ב־GitHub שהציעה לייעל את הקוד. התוקף השיג גישה ולאחר מכן הזריק מודול שגנב ארנקי ביטקוין. - חטיפת דומיינים: רישום דומיינים דומים לאלו של פרויקטים לגיטימיים (למשל:
nodesecurity.orgלעומתnodesecurity.io) כדי להפיץ גרסאות טרויאניות של חבילות. - ניצול שחיקה: מתחזקי פרויקטי קוד פתוח עובדים לרוב ללא תשלום ותמיכה מועטה. התוקפים מנצלים זאת כדי להציע "עזרה" ברגעי לחץ, כפי שתועד במקרה של
coaו־rcב־2021.
דפוס חוזר הוא השימוש בקוד מוסווה. בהתקפה על xz-utils, דלת האחורית הוסתרה בקובץ בדיקה (tests/files/bad-3-corrupt_lzma2.xz) שנראה תמים. התוקפים יודעים שמתחזקים נוטים לבדוק קבצי בדיקה בפירוט מועט, במיוחד בפרויקטים גדולים. זה סותר את הנרטיב הרווח כי "קוד פתוח בטוח יותר כי כל אחד יכול לבדוק אותו". המציאות היא שבפרויקטים עם מאות תלויות, בדיקה ידנית אינה מעשית.
מדוע ההגנות המסורתיות נכשלות מול וקטור זה
חברות נוטות להתמקד בהגנה על העובדים הסופיים באמצעות הדרכות דיוג ואימות רב־גורמי, אך אמצעים אלו אינם מספיקים בשרשרת האספקה:
- אימות רב־גורמי אינו עוצר בקשות משיכה זדוניות: תוקף עם גישה לחשבון מתחזק יכול לאשר שינויים ללא הפעלת התראות אימות רב־גורמי, שכן GitHub/GitLab אינם דורשים אימות נוסף לכל commit.
- חומות אש ו־EDR אינם רואים את הקוד: פתרונות אבטחה מסורתיים עוקבים אחר תעבורת רשת ותהליכים פעילים, אך אינם מנתחים את קוד המקור של התלויות. במקרה של
ua-parser-js, הקוד הזדוני הופעל רק לאחר ההתקנה, מה שמנע גילוי. - הדרכות כלליות אינן מכינות מפתחים: מתחזקים אינם מודעים לכך שהם מטרה. מחקר של GitHub (2022) מצא שרק 18% מהמפתחים מקבלים הכשרה ספציפית לאבטחת שרשרת האספקה.
בנוסף, קיים הטיית אמון במערכת האקולוגית של קוד פתוח. מתחזקים מניחים שמשתפי פעולה אחרים הם בעלי כוונות טובות, ופרויקטים נדירים ביישום בקרות כמו בדיקות חובה על ידי עמיתים או חתימות קריפטוגרפיות לכל שינוי. זה מסוכן במיוחד בפרויקטים קטנים, שבהם למתחזק יחיד יש שליטה מלאה. ההתקפה על event-stream הוכיחה שאפילו פרויקטים פופולריים יכולים להיות פגיעים אם הם תלויים במשתף פעולה יחיד.
הגנות אמיתיות: SBOM, Sigstore ובדיקת תלויות
התעשייה פיתחה כלים לצמצום סיכונים אלו, אך אימוצם איטי, במיוחד באמריקה הלטינית. אלו ההגנות היעילות ביותר:
1. רשימת חומרי תוכנה (SBOM)
SBOM הוא מלאי מפורט של כל התלויות בפרויקט, כולל גרסאות וקשרים בין רכיבים. הוא מאפשר לזהות במהירות אם תלות נפגעה. התקן הנפוץ ביותר הוא SPDX (ISO/IEC 5962:2021), אך קיימים גם פורמטים כמו CycloneDX ו־SWID.
ב־2023, ממשלת ארה"ב החלה לדרוש SBOM מספקי תוכנה (צו ביצוע 14028). עם זאת, באמריקה הלטינית, פחות מ־5% מהעסקים הקטנים והבינוניים מייצרים SBOM באופן שיטתי. כלים כמו syft (של Anchore) או Dependency-Track יכולים להפוך תהליך זה לאוטומטי. צוות CyberShield תיעד כי חברות המיישמות SBOM מפחיתות ב־70% את זמן התגובה לאירועים בשרשרת האספקה.
2. חתימות קריפטוגרפיות עם Sigstore
Sigstore הוא פרויקט קוד פתוח המאפשר חתימה ואימות קוד באופן שקוף, ללא צורך בניהול מפתחות PGP. הוא משתמש בתעודות זמניות ורישומים ציבוריים (כמו Rekor) כדי להבטיח את שלמות הקוד. זה חיוני לאיתור שינויים לא מורשים בתלויות.
דוגמה ליעילותו: ב־2023, תוקף ניסה לפרוץ לחבילה eslint-scope (המשמשת מיליוני פרויקטים). הודות לחתימות של Sigstore, הניסיון התגלה והתהפך תוך שעות. עם זאת, אימוץ Sigstore נמוך: רק 3% מהחבילות ב־npm משתמשות בחתימות קריפטוגרפיות (נתוני 2024).
3. בדיקת תלויות מתמשכת
כלים כמו Dependabot (GitHub), Renovate או Snyk יכולים לסרוק תלויות לאיתור פגיעויות ידועות. אך זה אינו מספיק: נדרשות גם בקרות ידניות, כגון:
- בדיקת שינויים חשודים: בקשות משיכה המשנות קבצי תצורה (למשל:
.npmrc,.gitignore) או סקריפטים להתקנה (למשל:preinstall) צריכות להיבדק בזהירות מיוחדת. - ניתוח התנהגות: כלים כמו
Falcoיכולים לזהות התנהגויות חריגות בזמן אמת, כמו חיבורים לשרתים של פיקוד ושליטה או ניסיונות כריית מטבעות קריפטוגרפיים. - בדיקות אינטגרציה: פרויקטים צריכים לכלול בדיקות המאמתות את התנהגות התלויות בסביבות מבודדות.
4. ארכיטקטורת אמון אפס למפתחים
על חברות ליישם את עקרונות Zero Trust (NIST SP 800-207) על צוותי הפיתוח שלהן:
- גישה מינימלית: מתחזקים צריכים לקבל גישה רק למאגרים הנחוצים לעבודתם.
- אימות רב־גורמי חובה: GitHub ו־GitLab כבר תומכים באימות רב־גורמי, אך פרויקטים רבים אינם מחייבים זאת.
- בדיקה על ידי עמיתים חובה: אין לאשר שינוי ללא לפחות שני בודקים.
- ניטור פעילות: כלים כמו
GitGuardianיכולים לזהות דפוסים חשודים, כמו commits מחוץ לשעות העבודה או שינויים בקבצים רגישים.
המקרה של xz-utils: אנטומיה של התקפה כמעט מושלמת
ההתקפה על xz-utils (CVE-2024-3094) היא הדוגמה המתוחכמת ביותר לדיוג בשרשרת האספקה עד כה. התוקף, תחת הכינוי Jia Tan, פעל לפי תוכנית של שנתיים:
- זכייה באמון: החל ב־2021 בשליחת מיילים למתחזקי
xz-utils(Lasse Collin ואחרים) והציע עזרה בבאגים ושיפורי ביצועים. הוא השתמש בחשבונות מזויפים ב־GitHub ו־Twitter כדי לאמת את זהותו. - התבססות בפרויקט: ב־2022, קיבל גישת commit. התחיל בשינויים קטנים וחוקיים, כמו שיפורי תיעוד ותיקוני באגים.
- העלאת הרשאות: ב־2023, שכנע את המתחזקים לתת לו גישה לענף הראשי. עד אז, הוא כבר תרם מאות commits ונחשב למשתף פעולה אמין.
- הזרקת דלת האחורית: בפברואר 2024, הכניס דלת אחורית לקוד הדחיסה. הדלת הוסתרה בקובץ בדיקה והופעלה רק בתנאים ספציפיים (למשל, במערכות עם
sshdמוגדר בצורה מסוימת). - הפצת הקוד הזדוני: דלת האחורית נכללה בגרסאות ניסיון של
xz-utils(5.6.0 ו־5.6.1) והופצה במאגרים כמו GitHub ו־SourceForge.
ההתקפה התגלתה במקרה: מהנדס ב־Microsoft, אנדרס פרוינד, הבחין שתהליך sshd צורך יותר מעבד מהרגיל במכונת בדיקה. לאחר חקירה, הוא גילה את דלת האחורית והתריע בפני הקהילה. הקוד הזדוני אפשר לתוקפים להריץ פקודות מרחוק במערכות שנפגעו, מה שעלול היה לסכן אלפי שרתים ברחבי העולם.
מקרה זה חושף כשלים קריטיים במערכת האקולוגית של קוד פתוח:
- חוסר בדיקה בפרויקטים קטנים:
xz-utilsהוא כלי קריטי, אך היו לו מעט מתחזקים ופיקוח מועט. - אמון מופרז במשתפי פעולה: המתחזקים לא אימתו את זהותו האמיתית של
Jia Tanאו את מניעיו. - חוסר בחתימות קריפטוגרפיות: הקוד לא נחתם באמצעות Sigstore או PGP, מה שהיה מקשה על הזרקת דלת האחורית.
מה יכולות לעשות חברות באמריקה הלטינית כבר היום
רוב העסקים הקטנים והבינוניים באמריקה הלטינית אינם מחזיקים בצוותי אבטחה ייעודיים, אך יכולים לנקוט צעדים מעשיים:
- יצירת SBOM לכל הפרויקטים: כלים כמו
syftאוDependency-Trackהם חינמיים וקלים לשילוב בצינורות CI/CD. זה מאפשר לזהות תלויות פגיעות תוך דקות. - דרישת חתימות קריפטוגרפיות מספקים: אם החברה שלכם משתמשת בתוכנה צד שלישי, בקשו מהספקים לחתום על הקוד שלהם באמצעות Sigstore או PGP. ב־CyberShield מצאנו ש־60% מהספקים המקומיים אינם עושים זאת.
- בדיקת תלויות קריטיות באופן ידני: עבור פרויקטים עם תלויות רגישות (למשל, ספריות הצפנה, כלי אימות), הקצו מפתח לבדיקת השינויים האחרונים במאגר המקורי.
- הכשרת מפתחים לדיוג בשרשרת האספקה: צוותי הפיתוח צריכים להיות מאומנים בזיהוי בקשות משיכה חשודות, מיילים ממשתפי פעולה לא מוכרים ושינויים בקבצי תצורה.
- ניטור התנהגויות חריגות: השתמשו בכלים כמו
FalcoאוOsqueryכדי לזהות חיבורים חשודים או תהליכים לא מורשים בשרתים שלכם.
טעות נפוצה היא להניח שהתקפות אלו פוגעות רק בחברות גדולות. למעשה, עסקים קטנים ובינוניים הם מטרה אטרקטיבית יותר: יש להם פחות משאבים להגנה ולרוב משתמשים בתוכנת קוד פתוח ללא בדיקה. ב־2023, 80% מאירועי שרשרת האספקה המדווחים באמריקה הלטינית פגעו בחברות עם פחות מ־200 עובדים (נתוני OEA-CICTE).
שרשרת האספקה של תוכנה היא שדה הקרב החדש. התוקפים כבר אינם צריכים לפרוץ חומות אש או לנצל פגיעויות יום אפס: מספיק להם להונות מתחזק אחד כדי להזריק קוד זדוני שמתפשט לאלפי פרויקטים. ההגנות המסורתיות אינן מתוכננות לווקטור זה, והתעשייה עדיין לא אימצה באופן נרחב כלים כמו SBOM או Sigstore. באמריקה הלטינית, שבה מערכת האקולוגית של הפיתוח קטנה יותר ופחות מוסדרת, הסיכון אף גבוה יותר. השאלה אינה אם החברה שלכם תיפגע, אלא מתי. החדשות הטובות הן שבאמצעות צעדים מעשיים, ניתן לצמצם את ההשפעה. אך יש לפעול כעת: ה־xz-utils הבא עשוי להיות בתלויות שלכם.
דיוג בשרשרת האספקה אינו בעיה טכנית, אלא אנושית. הוא דורש פתרונות טכניים, אך גם שינוי תרבותי: על המפתחים להפסיק להניח שכל המשתפים פעולה הם בעלי כוונות טובות, ועל החברות להתייחס לתלויות קוד פתוח באותה רצינות כמו לקוד שלהן. ב־CyberShield נמשיך לתעד התקפות אלו ולשתף אסטרטגיות להגנה על עסקים קטנים ובינוניים באמריקה הלטינית, כי באבטחת סייבר, מניעה תמיד זולה יותר מתיקון.
מקורות
- CISA (2023). Software Supply Chain Risk Management. Directiva Binding Operational Directive 22-01. URL: https://www.cisa.gov/resources-tools/services/software-supply-chain-risk-management
- Red Hat (2024). CVE-2024-3094: Backdoor in xz tools. הודעה רשמית. URL: https://www.redhat.com/en/blog/urgent-security-alert-fedora-41-and-rawhide-users
- Sigstore (2024). Sigstore Documentation. URL: https://docs.sigstore.dev/
- in-toto (2024). in-toto: A Framework to Secure the Software Supply Chain. תיעוד רשמי. URL: https://in-toto.io/
- GitHub (2022). The State of the Octoverse: Security. דוח שנתי. URL: https://octoverse.github.com/
- OEA-CICTE (2023). Ciberseguridad en América Latina y el Caribe: Tendencias y Desafíos. דוח אזורי. URL: https://www.oas.org/es/sms/cicte/
- Freund, A. (2024). Discovery of backdoor in xz-utils. פרסום ברשימת הדיוור oss-security. URL: https://www.openwall.com/lists/oss-security/2024/03/29/4
- NIST (2020). Zero Trust Architecture. פרסום מיוחד 800-207. URL: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-207.pdf
- Snyk (2023). State of Open Source Security Report. URL: https://snyk.io/reports/open-source-security/
- מקרה ציבורי:
event-stream(2018). Malicious code found in npm package event-stream. ייעוץ GitHub. URL: https://github.com/advisories/GHSA-42xw-2xvc-qx8m
