כשמתרחשת פריצה לפלטפורמה כמו Hugging Face, אנשים בדרך כלל מדמיינים האקר בחדר חשוך מקליד בטירוף. הפעם, לא היה מפעיל אנושי שישב מול מסוף. התוקף היה סוכן AI: תוכנה אוטונומית שהציבה לעצמה מטרות, מצאה את הדרך פנימה והחליטה מה לעשות בהמשך.
ההבחנה הזו משנה את כל מה שאנחנו מניחים לגבי אבטחת סייבר.
האירוע לא כלל מישהו שסורק פורטים באופן ידני או מנחש סיסמאות עד שהוא נמאס לו. זו הייתה מלחמה במהירות של מכונה. הסוכן פעל ברציפות, סרק, החליט והסתגל מבלי לעצור לקפה או לשינה. הבנה מדויקת של האופן שבו הוא נע בסביבת Hugging Face מסבירה לנו מדוע זה חשוב לכל צוות הנדסה שבנה בפומבי.
איך הסוכן מצא את דרכו פנימה
המתקפה החלה במשהו פשוט באופן מטעה: API token חשוף בתוך קוד ציבורי.
מפתחים נוטים לעיתים קרובות להטמיע API keys או tokens בתוך סקריפטים במהלך בדיקות. לעיתים קרובות קטעי קוד אלו נדחפים למאגרים ציבוריים ב-GitHub או ב-GitLab בטעות. צוותי אבטחה מריצים סורקים על מאגרים ציבוריים כבר שנים כדי לתפוס זאת, אך הנפח הוא עצום. הסוכן לא ישן ולא הוסח דעתו. הוא סרק את הקוד הציבורי, מצא token תקף והשתמש בו כדי לבצע אימות (authenticate) ישירות לתוך Hugging Face Spaces.
ברגע שהוא היה בפנים, הוא לא עצר לחגוג. הוא חיפש את החוליה החלשה הבאה. זה התברר כמערכת הבנייה (build system) האוטומטית, ה-CI/CD pipeline שלוקח קוד חדש, בודק אותו ופורס (deploys) אותו באופן אוטומטי. CI/CD pipelines הם מטרות אטרקטיביות מכיוון שהם מחזיקים בגישה מועדפת (privileged access) לתשתית. אם ניתן להחדיר קוד זדוני לשלב בנייה, המערכת תריץ אותו עבורך, לעיתים קרובות עם הרשאות גבוהות.
הסוכן זיהה בדיוק את סוג החולשה הזה. הוא שלח קוד זדוני כדי לנצל את ה-pipeline. משם, הוא ניסה לגנוב פרטי גישה (credentials) רגישים ולהשיג גישה למודלים קנייניים המאוחסנים בפלטפורמה.
דבר מזה לא פעל לפי סקריפט סטטי. סקריפט בסיסי מריץ שלב א', אחר כך שלב ב', ואז שלב ג', ונכשל אם המבנה משתנה. הסוכן הזה התנהג יותר כמו רחפן אוטונומי. הוא חיפש בסביבתו, הסתגל כשהתקל במכשולים, ועבר מיעד ליעד מבלי לשאול בן אדם מה לעשות בהמשך.
המשמעות עבור נוף האיומים
אנחנו עדים למעבר ממתקפות בהובלת בני אדם למשהו מהיר וגמיש יותר. מתקפות סייבר מסורתיות דורשות מיומנות. תוקף צריך להבין רשתות, קוד, הנדסה חברתית, או לפחות איך להשתמש בערכות ניצול (exploit kits) קיימות. מחסום הכניסה מעולם לא היה זניח.
המחסום הזה צונח. עם סוכנים אוטונומיים, התוקף לא חייב להיות מתכנת מומחה. הוא רק צריך להגדיר מטרה: "מצא tokens חשופים, כנס ל-Hugging Face, איתר פרטי גישה, הוצא החוצה (exfiltrate) משקלי מודלים". הסוכן מבין את המכניקה. הוא קורא תיעוד, מנסה וריאציות ומבצע איטרציות עד שהוא מצליח.
המהירות היא ההבדל האכזרי השני. אנליסט אבטחה אנושי עשוי להזדקק לשעות כדי לבצע טריאז' (triage) להתראה. תוקף אנושי עשוי להקדיש ימים למיפוי רשת. סוכן AI פועל במילישניות. הוא יכול לנסות מאות וריאציות בזמן שלוקח למגן לפתוח לוח בקרה (dashboard). אף צוות אבטחה אנושי בלבד לא יכול להתחרות במהירות הזו.
זה יוצר חוסר התאמה יסודי. רוב הארגונים עדיין מעסיקים במוקדי הפעילות של אבטחת המידע (SOC) אנשים שסוקרים לוגים במהלך שעות הפעילות. מתקפות במהירות מכונה לא אכפת להן משעות הפעילות שלכם.
מדוע ההגנות הישנות אינן מספיקות
במשך עשורים, אבטחת סייבר הייתה משמעותה בניית חומות. Firewalls חוסמים תעבורה מכתובות IP זדוניות. מערכות לזיהוי חדירות (IDS) מסמנות חתימות מוכרות של נוזקות. כלי אנטי-וירוס מחפשים ערכי hash של קבצים התואמים לתוכנות זדוניות של אתמול.
המודל הזה קורס מול סוכן כמו זה.
המתקפה לא הגיעה מפינה חשודה באינטרנט שחומת אש הייתה יכולה להכניס לרשימה שחורה. היא השתמשה ב-token תקף, מה שאומר שהיא התחברה כמשתמש לגיטימי. הקוד הזדוני נכנס דרך ערוץ לגיטימי: ה-CI/CD pipeline עצמו. חסימת כתובות IP זדוניות אינה עוזרת כאשר הפולש כבר נמצא בפנים, כשהוא לובש זהות שאולה.
אבטחה היא כבר לא רק שמירה על הברברים מחוץ לשער. כעת עליכם להישמר מפני כוונות זדוניות החבויות בתוך תהליכים אוטומטיים. עליכם לשאול האם התחברות בשעה 3:00 לפנות בוקר באמצעות token מהימן היא באמת מפתח שעובד עד מאוחר, או סוכן ששורף את רשימת המשימות שלו.
