הגליון המאה שבעים ושמונה של DigitalWhisper שוחרר!



ברוכים הבאים לדברי הפתיחה של הגליון ה-178 של DigitalWhisper!   

חודש סוער עבר עלינו, ובמיוחד לחובבי הז'אנר של עולמות ה-Supply Chain ואבטחת ענן, והפעם GitHub ו-Azure היו במרכז העניינים!

למקרה שלא התעדכנתם, יצא לנו לחוות החודש מספר מתקפות מעניינות ומסוכנות סביב פלטפורמת Github.

זה התחיל מבוקר אחד בו אלפי Repositories בשם s1ngularity צצו להם בן רגע ברחבי Github ובהם הרבה סודות, Token-ים, מפתחות וקטעי קוד שאמורים היו להיות פרטיים.

חוקרים מחברות אבטחה רבות החלו לשתף פרטים מניתוחים שעשו על המתקפה והרכיבו את הפאזל סביב האירוע. הסתבר שלפני מספר שבועות תוקף הצליח לנצל מיס-קונפיגורציה ב-Github Actions (מערכת האוטומציה של GitHub, שמריצה Workflows כמו בנייה ובדיקות קוד) שאפשרה לו להשיג גישה לסודות של Workflows שונים ובחלק מהמקרים אף לערוך את ה-Workflow-ים עצמם כך שיזליגו את ה-Token שבו השתמש אותו ה-Workflow. חלק מהסודות שדלפו היו מפתחות ל-AWS ו-npm-tokens לספריות שונות.

התוקפים זיהו מספר חבילות Nx (Framework פופולרי לניהול פרויקטי Monorepo ב-JavaScript/TypeScript), שהורדו על ידי אלפי משתמשים, והחלו להרעיל אותן בקוד שגונב סודות ומפתחות נוספים מהמפתחים שהורדיו והתקינו את אותן החבילות.

הספריות האלו הכילו קוד JS זדוני, שמינף את כלי ה-AI הלוקאלי (Copilot ודומיו), בכך שנתן לו prompt פשוט, המבקש לאסוף רשימה של סודות (משתני סביבה, GitHub Credentials וכו').

לאחר מכן, הקוד העלה את כל המידע שהשיג, מקודד פעמיים ב-base64, ל-Repository פומבי (תחת המשתמש שהתקין את החבילה) בשם s1ngularity. מה שאומר שמעבר לתוקף, כל העולם יכל לראות את הסודות האלו.

לפי מה שראיתי, חלק מה-repositories האלו הורדו אחרי יותר מידי זמן, ויש יותר מידי אנשים שעשו Scraping לכל ה-Repositories עם השם הזה על כל סודותיהם.

זו לא פעם ראשונה שיש חבילות npm זדוניות, אני זוכרת הרבה כאלו בעיקר למטרות crypto-mining, אך זו היתה ממש רועשת, בעיקר בגלל יצירת ה-Repositories הפומביים, המידע הרגיש שהכילו, ואיך אפשר שלא - השימוש ב-AI. בכל פעם שאחד מהסודות שהודלפו במסגרת המתקפה היה npm-token, עלתה גרסא חדשה פורסמה חבילה זדונית נוספת.

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

אחד ה-Payload-ים הזדוניים שנוספו לספריה הזו, היה שכאשר חבילה זו מותקנת, היא מריצה כלי בשם TruffleHog (כלי קוד פתוח לסריקת קוד ומאגרים לאיתור סודות), שסורק סביבות ענן AWS, GCP וכו' בחיפוש אחר Credentials. במידה והסקריפט מצא GitHub token, הוא יוצר Repository פומבי בשם Shai-Hulud, המכיל את כל המידע שנסרק.

ולמה דווקא השם הזה? אם קראתם את הספר "חולית" (או ראיתם את הסרטים), אני מאמינה שהשם "Shai-Hulud" לא זר לכם (אך לטובת השאר: מדובר בתולעת ענקית ומפלצתית מסדרת הספרים). כאשר הסקריפט נתקל ב-npm-token, הוא משתמש בו כדי "להתפשט" לחבילות נוספות - כמו תולעת. ובסיפור שלנו היא ה-Sequel למתקפת ה-s1ngularity.

התוקף, באמצעות התולעת הזאת, הצליח להשיג גישה ולהרעיל ספריות שכמות ההורדות השבועית של כולן יחד עומדת על יותר מ-2.5 מיליארד!

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

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

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

ואם כל זה לא הספיק, החודש פורסמה מה שכנראה נחשבת "החולשה הכי מפחידה שהיתה אי פעם ב-Azure".

החוקר Dirk-jan (אין מצב שחקרתם קצת על Azure והשם הזה זר לכם), גילה חולשה אדירה המאפשרת לכל בן אדם עם ידיעה של TenantId ומשתנה בשם netid, להשיג token לכל משתמש, בכל tenant, לא משנה איזה פוליסות מוחלות עליו.

במהלך המחקר שביצע Dirk-jan, הסתבר שיש ב-Azure אובייקט לא מתועד המכונה "Actor Token", מדובר ב-token פנימי שאיננו אמורים להיות מודעים אליו. הוא נוצר בעת ההתקנה של hybrid exchange. המטרה שלו היא לאפשר ל-exchange לתקשר עם שירותים בשם המשתמש (on behalf of) שמבקש אותם, אני מניחה שאתם כבר מבינים לאן זה הולך...

על מנת לייצר Token שכזה, התוקף נדרש לדעת מה הוא ערך ה-netid של המשתמש אליו הוא רוצה להתחזות (שזה אומנם מזהה פנימי, אך ניתן לגלות על ידי הרצת שאילתה די פשוטה מכל משתמש ב-Tenant, או כפי ש-Dirk-jan הציע, ניתן גם לנסות לעשות לו Brute force).

אגב כשאני אומרת כל משתמש, אני מתכוונת לכל משתמש, כן, בכל tenant. ויותר מכך, Dirk-jan גילה של-token הזה לא מתבצעת אכיפה של Conditional Access Policies או MFA.

בגדול, אפשר לומר ש-Dirk-jan ניצח את עולם הענן עם החולשה הזו... מזל שהוא בצד של הטובים והחליט לדווח עליה!

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

 

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


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

     

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

 
  • הצפנה מקצה לקצה – המשך - מאת עידן שכטר
    עידן ממשיך בסדרה על הצפנה מקצה לקצה ומתרכז בפן המאתגר ביותר שלה: מה קורה כשמפתח פרטי נחשף לגורם שלישי? במאמר זה הוא בוחן את הקשיים בפרוטוקוליE2E  תחת איום ייחוס גבוה, מסביר מדוע חשיפת מפתח פרטי מסכנת את הסוד המשותף וכיצד זה מאפשר פענוח הודעות, ומציג גישות ומנגנונים מתקדמים שמטרתם לצמצם או למנוע את הנזק במצבים כאלה.
  
  • Booty Call - When the Firmware Answers the Wrong Ring - מאת רן אברהם
    רן לוקח אותנו מאחורי הכפתור: מסביר בצעדים פשוטים מה באמת קורה בתהליך ה-Boot מדגים למה זה רגיש במיוחד, ומראה איך ניתן לעקוף מנגנונים כמו Secure Boot ו-TPM, כולל מתווה תקיפה מבוסס החלפת תמונה של היצרן.


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

     

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

     

 
   
 
 
  קריאה נעימה,
אפיק קסטיאל וספיר פדרובסקי



תגובות על 'הגליון המאה שבעים ושמונה של DigitalWhisper שוחרר!':



#1 

אורח (אורח):
יניב אתה אלוףףףףף!
02.10.2025 20:31:56

#2 

פרטוש (אורח):
ספיר ואפיק תודה רבה !!
ותודה לשאר הכותבים , הגליון מעולה!
03.10.2025 14:03:01

#3 

cP (אורח):
3>
07.10.2025 22:34:33



הוסף את תגובתך:
כינוי:
תגובה:
קוד אבטחה:
העתק לכאן את הקוד:
 
Digital Whisper © 2009 - 2025 - כל הזכויות שמורות ל-אפיק קסטיאל ול-ניר אדר.