תוכנת קוד פתוח נמצאת בכל מקום - בשימוש כמעט בכל יישום מודרני - אך אתגרי האבטחה העומדים בפניה ממשיכים לגדול יותר ויותר. בהסתמך על עמוד השדרה של מתנדבים, נקודות תורפה הופכות אותו כעת למטרה מרכזית להתקפות סייבר על ידי האקרים זדוניים ושחקנים ממלכתיים כאחד. השיחה הקרובה עם התקפת הדלת האחורית של xz Utils מדגישה עד כמה אבטחת קוד פתוח יכולה להיות שברירית. מכיוון שכלי קוד פתוח הם חיוניים הן עבור חברות פרטיות והן עבור ממשלות, תידרש השקעה גדולה יותר מהמגזר הפרטי והמגזר הציבורי.
חלק גדול מהקוד של מקורות המונים באינטרנט חשוף לחדירת שחקנים רעים ומדינות לאום. תוכנת קוד פתוח נמצאת ב"לב האינטרנט", היא מתוחזקת ברובה על ידי קומץ מתנדבים וזה הופך אותה לסיכון אבטחה גדול עבור תאגידים וממשלות כאחד, דיווח האקונומיסט . תוכנת קוד פתוח נפרסת בדרך כלל על פני תשתית דיגיטלית בגלל העלות הנמוכה שלה. תשתית זו, המוטבעת ברחבי העולם הדיגיטלי, מותקפת על ידי מדינות אויב שונות.
מרטין וודוורד, סמנכ"ל קשרי מפתחים ב-GitHub אמר בעבר, "תוכנת קוד פתוח היא הבסיס של 99% מהתוכנות בעולם". בסביבות 97% מהאפליקציות משתמשות בקוד קוד פתוח, כאשר 90% מהחברות משלבות או משתמשות בו בקיבולת מסוימת.
תקרית xz Utils הייתה דוגמה מצמררת למה שעל כף המאזניים. ב-29 במרץ 2024, אנדרס פרוינד, מהנדס תוכנה במיקרוסופט, "מצא בטעות דלת אחורית מוסתרת בתוכנה שהיא חלק ממערכת ההפעלה לינוקס". הדלת האחורית הזו הגיעה מ-tarballs לשחרור עבור xz Utils, אשר טופלו בהם, ואיפשרו גישה לא מורשית למערכות המשתמשות בגרסאות המושפעות. קוד המקור שנפגע היה של כלי העזר לדחיסת הנתונים xz Utils בקוד פתוח במערכות לינוקס. ה"ניו יורק טיימס" כתב שהמהנדס מנע "מתקפת סייבר היסטורית פוטנציאלית".
מכיוון ש-xz Utils היא תוכנת קוד פתוח, הקוד שלה נגיש לציבור, ומאפשר לכל אחד לצפות בשינויים שבוצעו. עם זאת, הפתיחות הזו נוצלה בצורה ערמומית במיוחד: המתקפה כוונה רק לקוד ב-tarballs של השחרור (קובץ ארכיון דחוס לגרסה של מהדורת תוכנה), והותירה את הסניף הראשי של המאגר ללא פגע. הטקטיקה החכמה הזו הפכה את הפשרה לקשה יותר לזיהוי. ללא ערנות של מפתח ומבט מזל, המתקפה הייתה יכולה לגרום לנזק עצום ולפרוץ אינספור מערכות ברחבי העולם.
מפתח בשם Jia Tan החל לתרום קוד מועיל לפרויקט ולאט לאט לזכות באמון. ואז עם הזמן, השחקן הרע הבריח תוכנות זדוניות. אחד המרכיבים המפתיעים ביותר של התקפת הדלת האחורית של xz Utils היה האופן שבו הקוד הזדוני הוצג באמצעות commits של git לא מזיקות לכאורה. במקום לשנות ישירות את קוד המקור xz Utils, התוכנה הזדונית הוסתרה כקוד אובייקט x86_64 בתוך קובצי בדיקה בינאריים, במסווה של בדיקות יחידה למקרי קצה בפירוק XZ. שירות הביון הזר של רוסיה, SVR, החשוד כמי שעומד מאחורי התקיפות , הוא אותו שירות ביון שעומד מאחורי מתקפת SolarWinds.
אירוע זה אינו מבודד. פרויקטי קוד פתוח הם יעדים אטרקטיביים עבור שחקנים ממלכתיים מכיוון שהקוד הוא ציבורי. למרות שפתיחות זו מצוינת לשיתוף פעולה, היא גם מעניקה לתוקפים גישה קלה ללמוד את הקוד ואת העדכונים שלו. קוד פתוח ממלא תפקיד חיוני בתשתית גלובלית; דוח מ-Lineaje בשנת 2023 חשף כי 70% מכל התוכנות כיום הן קוד פתוח וכי 82% מרכיבי התוכנה בקוד פתוח הם "מסוכנים מטבעם". למרבה הצער, השימוש בו בכל מקום הופך את הפגיעות שלו למסוכנות עוד יותר.
דיווחים מ-Lineaje ואחרים מדגישים את הסיכונים: 82% מרכיבי הקוד הפתוח נחשבים למסוכנים עקב תחזוקה לקויה, קוד מיושן או פגמי אבטחה. רבים מהפרויקטים הללו מנוהלים על ידי צוותים קטנים או מתנדבים בודדים עם משאבים מוגבלים, מה שמותיר אותם פגיעים להתקפות.
נוסף על סיכונים אלה עלייתם של מודלים גדולים של שפה (LLMs) . בעוד ש-LLMs עוזרים למפתחים במשימות כמו איתור באגים או אוטומציה של זרימות עבודה, ניתן גם לעשות בהם שימוש לרעה. תוקפים יכולים להשתמש ב-LLMs כדי לנתח במהירות קוד פתוח לאיתור פגיעויות, מה שמקל על מציאת פגמים שניתנים לניצול. כלי בינה מלאכותית אלה יכולים גם ליצור הודעות פישינג משכנעות או תרומות מזויפות לפרויקטים של קוד פתוח, מה שמקשה על זיהוי שחקנים רעים. היכולת של LLMs לחקות אינטראקציה אנושית מגדילה את הסיכוי של קוד זדוני לחמוק ללא תשומת לב דרך דיוג ווקטורי תקיפה אחרים שניתן לבצע אוטומטית.
למרות הסיכונים, LLMs מציעים גם הזדמנויות לשפר את אבטחת הקוד הפתוח. אבל יש איזון שכן זה יכול להיות יקר, מכיוון שסביר שחברות לא ישקיעו בהפעלת מנתחים מבוססי LLM על קוד קוד פתוח ללא תקציב. לדוגמה, מערכות AI יכולות לסמן שינויים חשודים בבסיס קוד או לזהות דפוסים חריגים בהתנהגות התורמים. מנהלי לימודים בקוד פתוח גם "נהנים מהבסיס ההולך וגדל במהירות של קהילות מפתחים שדוחפות את גבולותיהן ומתרחבות מדי יום כדי לפתור אתגרי אבטחת סייבר מורכבים".
עם זאת, אותה טכנולוגיה שמחזקת את ההגנות ניתנת גם לנשק . פריסת LLM בקוד פתוח על שרת או בסביבת ענן מציגה את הסיכון של גישה לא מורשית למודל או לנתונים הרגישים שהוא מטפל בו, אם אין בקרות אבטחה מתאימות. שחקנים זדוניים יכולים להתעסק בנתוני אימון או במודל עצמו, להחדיר קוד מזיק או הטיות שגורמות לתוכן מטעה או זדוני. בנוסף, LLMs מאובטחים בצורה לא נכונה עלולים לדלוף מידע רגיש, בין אם באמצעות טקסט שנוצר או התקפות המכוונות לארכיטקטורת המודל.
מה שהושג פעם עם מאגר יחיד באמצעות כלים כמו xz Utils יכול להיות קנה מידה במאות על ידי אדם בודד הממנף טכנולוגיות GenAI מתקדמות במהלך השנים הבאות - וסביר להניח שהשינוי הזה כבר החל. מחסום הכניסה ירד באופן דרמטי, ועבר מדרישת משאבים ברמת מדינת הלאום או מסירות קיצונית למשהו שניתן כעת לייצור המוני. זה סביר לחלוטין שבשנים הקרובות, רוב העדכונים הקטנים או המינוריים למאגרים יופקו על ידי GenAI.
למרות שתרומות פיתוח משמעותיות ואיכותיות נותרו אתגר אחר, תפקידם של המתחזקים עשוי להשתנות גם כן. במקום להיות מפתחים מיומנים התורמים קוד באופן אקטיבי, מתחזקים עשויים להיות יותר ויותר כאלה שמצטיינים בניהול עבודת גרוט והצגת תדמית של מועילות, ומשאירים את המשימות המורכבות או החדשניות יותר לקבוצה קטנה יותר של מפתחים ייעודיים.
התקפות דיוג מסורתיות מתמקדות בהשגת המדריך הפנימי של החברה ובמיקוד ליחידי מפתח - או כאלה שהם סומכים עליהם. עם מערכת התלות הנרחבת של NPM, הנגישה לציבור, לתוקפים יש זווית אחרת. הם יכולים לזהות את המספר הקטן של מתחזקים לחבילה נתונה, להעריך את צבר הבעיות ולהשתמש במידע זה כדי לפרוס בוטים שנראים מועילים על ידי תרומה של תיקונים או מתן סיוע. זה יוצר שדרה להשגת אמון ולהטמעה בתוך תהליך הפיתוח.
הזהויות המזויפות הטובות ביותר נוצרות עם נתונים מהעולם האמיתי, מועשרות לאורך זמן באמצעות פוסטים במדיה חברתית, רשומות אקדמיות ועוד. תעודה מזהה מזויפת משכנעת כוללת סיפור רקע מפורט, עם תמונות, קשרים ונוכחות מקוונת. GenAI מפשט את יצירת הזהויות הללו, ובמקביל גם משפר אותן על ידי הדמיית פעילות קידוד בפלטפורמות כמו GitHub.
תרומות מוקדמות רבות לפרויקטי קוד פתוח הן קטנות וקלות לאימות - כמו תיקון שגיאות הקלדה בהערות או עדכון תלות. פעילויות אלו הן אידיאליות עבור תוקפים המשתמשים ב-LLM, מכיוון שניתן לבצע אותן אוטומטיות בקנה מידה. זה מאפשר יצירת מאות זהויות מזויפות, כל אחת עם פרופילי LinkedIn, חשבונות מדיה חברתית והיסטוריית GitHub המכילה אלפי תרומות קטנות אך לגיטימיות.
זהויות אלה יכולות להשתתף במספר פרויקטים, שעלולים להיות חופפים, ולבנות רקורד של מועילות. עם הזמן, שחקן זדוני עלול להשתמש באחת מהזהויות הללו כדי להגיש תרומות קריטיות יותר. אפילו תרומות אלו עשויות להיראות תקפות ומועילות בתחילה. במאמצים מתואמים, כמו אלה של מדינות לאום או קולקטיבים של האקרים, זהות אחת יכולה לחזק את האמינות של אחרת, לחזק נרטיב או להשיג השפעה.
כבר ראינו דוגמאות כמו תקרית xz utils, שבה נעשה שימוש במספר זהויות כדי לתמרן אמון. עם חשיפת התקיפה, זהויות אלה הושלכו. בפעולות ידניות, אובדן נכסים כאלה יהיה יקר. עם זאת, עם GenAI, יצירת זהויות חדשות מגיעות בעלות מינימלית, מה שמוריד משמעותית את ההימור עבור התוקפים.
מתקפת שרשרת אספקת התוכנה לאחרונה כוונה לספריית npm @solana/web3.js הפופולרית, שנמצאת בשימוש נרחב לבניית יישומים מבוססי Solana, תוך התפשרות על גרסאות 1.95.6 ו-1.95.7 עם קוד זדוני כדי לגנוב מפתחות פרטיים של משתמשים ולרוקן מטבעות קריפטוגרפיים ארנקים. המתקפה ניצלה מסע דיוג שאפשר לשחקני איומים לקבל גישה לפרסום ולהחדיר פונקציית דלת אחורית, תוך הסתננות של מפתחות פרטיים דרך כותרות Cloudflare בעלות מראה לגיטימי. הגרסאות המושפעות הוסרו, ומשתמשים מתבקשים לעדכן לגרסה 1.95.8 ולשקול לסובב את המפתחות שלהם כדי להפחית סיכונים.
התקפות שרשרת אספקת התוכנה צפויות לעלות ב-2025 עקב התלות הגוברת בספריות קוד פתוח ועלייתן של שיטות התקפה מתוחכמות כמו פישינג והנדסה חברתית. על פי מחקר של Synopsys , פגיעויות בתוכנת קוד פתוח הולכות וגדלות בהתמדה. בנוסף, האינטגרציה המוגברת של כלי קוד פתוח במערכות ארגוניות מספקת לתוקפים החזר גבוה יותר על ההשקעה, מה שהופך הפרות כאלה לאטרקטיביות עוד יותר הן לפושעי רשת והן לגורמים בחסות המדינה.
תקרית xz Utils, בדומה למתקפת SolarWinds, משמשת כקריאת השכמה, המדגישה את הצורך בהשקעה ושיתוף פעולה גדולים יותר בין המגזר הציבורי והפרטי כדי לאבטח תוכנת קוד פתוח ולשמור על ערכה כמוצר ציבורי דיגיטלי. חברות שנהנות מכלי קוד פתוח צריכות להגביר ולתמוך בפרויקטים הללו. תמיכה זו יכולה לכלול מימון, מתן זמן למפתחים או מתן מומחיות באבטחה. פרויקטי קוד פתוח זקוקים גם לניהול טוב יותר, כמו תהליכי סקירת קוד מחמירים יותר ואחריות משותפת לעדכונים. תיקון מהיר יותר של פגיעויות הוא עדיפות נוספת, שכן עיכובים משאירים את המערכות חשופות להתקפות לתקופות ארוכות יותר.
שחקנים ממלכתיים נותרו אחד האיומים הגדולים ביותר. תוכנת קוד פתוח מציעה להם יעד בעלות נמוכה ותגמול גבוה עבור ריגול, חבלה והפרעה. מתקפת SolarWinds, על אף שהיא מעורבת בתוכנה קניינית, היא דוגמה מצוינת לכמה הפרצות שרשרת האספקה הללו יכולות להזיק.
ככל הנראה תוקפים ימשיכו למקד לתחזוקה בודדים בתדירות גבוהה יותר, תוך שימוש בטקטיקות הנדסה חברתית מתקדמות כדי להתפשר על פרויקטים. כלי בינה מלאכותית ימשיכו לשפר את יכולות התוקפים והמגנים כאחד, ויצרו מירוץ להקדים את האיומים החדשים. ממשלות צפויות גם להיות מעורבות יותר, ולסייע בקידום שותפויות ציבוריות-פרטיות כדי לשפר את האבטחה ברחבי המערכת האקולוגית הרחבה יותר. במקביל, עשויות להכנס תקנות מחמירות יותר, שידחפו חברות לקחת אחריות רבה יותר על רכיבי הקוד הפתוח שהן משתמשות בהן.
כשמדובר בתקרית SolarWinds, האם הוא נמוג מהזיכרון תלוי בפרספקטיבה. בעוד שתשומת הלב הציבורית עשויה להשתנות, פקידי ממשל ומומחי אבטחת סייבר נותרו ממוקדים בהתייחסות ללקחים שנלמדו. חלק גדול מהעבודה השוטפת באבטחת שרשרת אספקת התוכנה, כגון יוזמות של OpenSSF (כמו SLSA ו-GUAC), היא תגובה ישירה לצורך בהגנות חזקות יותר, מונעת על ידי סוכנויות כמו CISA , אך ההתקדמות הייתה איטית, ולא הכל. ארגונים אימצו הגנות אלה. הממשל הפדרלי עצמו הוא אחד הצרכנים הגדולים ביותר של תוכנות קוד פתוח ותמשיך להגביר את מעורבותו בתחום.
בעוד המאמצים הללו נמשכים מאחורי הקלעים, ייתכן שהשפעת התקרית לא זכתה לתהודה מלאה בקרב הציבור הרחב, במיוחד בקרב מפתחי תוכנה עצמאיים או תחביבים, שאולי לא מבינים במלואם את ההשלכות הרחבות יותר.
בסופו של דבר, כפי שציינה המומחית מיכל זלבסקי, "השורה התחתונה היא שיש לנו טריליוני דולרים רבים שנוסעים על גבי קוד שפותח על ידי חובבים". זה מדגיש את האפשרות שדלתות אחוריות אחרות אולי עדיין אורבות, שלא התגלו, בתוך התוכנה הקריטית שמהווה את עמוד השדרה של האינטרנט.
בעוד שזיהוי נקודות תורפה הוא דאגה, הנושא הגדול יותר טמון בשחיקת האמון בתוך מערכות אקולוגיות בקוד פתוח. קוד פתוח משגשג על תרומותיהם של מפתחים חסרי פנים שעובדים בתום לב, לרוב ללא אינטראקציה ישירה או אימות זהות. GenAI מערער את הבסיס הזה בכך שהוא מאפשר לרבים מאותם תורמים חסרי פנים להיות מפוברקים לחלוטין.
התקפות דיוג כבר מסוכנות מכיוון שהן מנצלות אמון במקום לפרוץ הגנות טכניות - הן מרמות אנשים לבצע קוד זדוני בסביבה מהימנה. GenAI מגביר את הסיכון הזה בכך שהוא מאפשר לתוקפים להטמיע קוד זדוני בחבילות קוד פתוח מהימנות במסווה של תרומות לגיטימיות.
זה ככל הנראה יעורר מירוץ בין שחקנים זדוניים המשתמשים ב-GenAI כדי לחדור לפרויקטים וכלים הגנתיים הממנפים את GenAI כדי לזהות ולנטרל פגיעויות לפני שניתן יהיה לנצל אותן. השאלה הופכת אם אמון בקוד פתוח יכול לשרוד בעולם שבו תורמים עלולים להיות יותר ויותר בלתי ניתנים להבחין בין מתחזים מונעי בינה מלאכותית.
כשאנחנו נכנסים לשנת 2025, תוכנת קוד פתוח נמצאת בנקודה קריטית. האיומים הופכים מתוחכמים יותר, מונעים על ידי גורמים ממלכתיים, שימוש לרעה בכלי בינה מלאכותית כמו LLMs, והתמקדות בהפרעות בשרשרת האספקה כדי לגרום נזק מרבי. עם זאת, עם צעדים יזומים, השקעה גדולה יותר ואחריות משותפת, אפשר ליצור עתיד שבו הקוד הפתוח ממשיך לשגשג ככוח לחדשנות ולהתקדמות, ולא כחולשה שממתינה לניצול.