86 דקות הספיקו: גרסה מורעלת של ספריית Rust פופולרית גנבה סיסמאות מדפדפנים
ב-07:15 לפי שעון UTC עלתה ל-crates.io, מאגר החבילות של שפת התכנות Rust, גרסה חדשה של ספרייה בשם arrayref. ב-08:41 היא כבר הוסרה משם. בין שתי השעות האלה, כל מי שהריץ בנייה של פרויקט שמשתמש בספרייה קיבל למחשב קוד שמחפש את הסיסמאות השמורות בדפדפן ושולח אותן החוצה.
מה קרה
הכול התחיל שש שעות קודם. ב-01:17 נפתח בגיטהאב חשבון שמתחזה למפתח Rust מוכר בשם דיוויד טולנאי, ובאמצעותו השתלטו התוקפים על חשבון התחזוקה שמחזיק שלוש ספריות: arrayref, append-only-vec ו-internment. חברות האבטחה StepSecurity, SafeDep ו-Aikido זיהו את הגרסה החדשה במקביל, הדיווח הגיע ב-07:54, ותוך פחות משעה הגרסה ירדה מהמאגר.
הטריק עצמו אלגנטי ומגעיל. במקום להשתיל את הקוד הזדוני בספרייה, התוקפים הוסיפו לה תלות בחבילה בשם proc-macro1, שם שנבדל באות אחת מהחבילה הלגיטימית והנפוצה proc-macro2. לשיטה של רישום חבילה בשם שנראה כמו שגיאת הקלדה של חבילה אמיתית קוראים typosquatting. הקוד בחבילה המזויפת רץ בשלב הבנייה של הפרויקט, לפני שורה אחת של הקוד שהמפתח עצמו כתב, כך שדי היה בקומפילציה כדי להידבק. הוא הרכיב את כתובות השרתים שלו מקטעים מקודדים, בחר מטען שמתאים למערכת ההפעלה, קרא את מסדי הנתונים שבהם Chrome, Brave ו-Edge שומרים פרטי התחברות, ודאג לשימור אחיזה במחשב דרך מנגנוני ההפעלה האוטומטית של Windows, macOS ולינוקס.
על היקף החשיפה יש שני מספרים שונים במחזור: ב-BleepingComputer מדווחים על כ-53 מיליון הורדות של arrayref בתשעים הימים האחרונים, וב-The Hacker News מופיע מספר מצטבר גדול בהרבה, 245 מיליון, שמתייחס לכלל החבילות שנפגעו. החוקרים גם מציינים חפיפה בין התשתית כאן לבין קמפיינים קודמים שיוחסו לצפון קוריאה, אבל זו הערכה שלהם ולא ייחוס מאושר.
למה זה חשוב לכם
המטרה הישירה כאן היא מפתחי תוכנה, וישראל מלאה בהם. אבל מה שהקוד חיפש על המחשבים האלה שייך לכולם: הסיסמאות שאתם מבקשים מהדפדפן לזכור בשבילכם. נוזקת גניבת מידע לא מנחשת סיסמאות ולא שוברת הצפנה, היא פשוט קוראת את הקובץ שבו הדפדפן שמר אותן, ושמונים אחוז מהעבודה נגמרו.
מה עושים?
אם בניתם פרויקט Rust בין 07:15 ל-08:41 בשעון UTC ב-20 באוגוסט, התייחסו למחשב כאל מחשב שנפגע: החליפו סיסמאות ומפתחות גישה, בדקו את קובץ הנעילה של הפרויקט אחרי arrayref בגרסה 0.3.10 ואחרי proc-macro1, וחפשו תעבורה יוצאת לכתובת 23.254.165.112.
הוציאו את הסיסמאות מהדפדפן ועברו למנהל סיסמאות ייעודי עם סיסמת אב. זה בדיוק ההבדל בין דליפה אחת לבין דליפה של כל החשבונות שלכם.
הפעילו אימות דו-שלבי בחשבונות המרכזיים, כדי שסיסמה גנובה לבדה לא תספיק לאף אחד.
מפתחים: בנו בסביבות CI עם גרסאות נעולות במקום לשלוף אוטומטית את החדשה ביותר, ואל תריצו בנייה של קוד לא מוכר על מחשב שיש עליו פרטי גישה לייצור.
חלון של 86 דקות נשמע כמו כלום, והוא בדיוק אורך הפסקת הצהריים שבה רצה הבנייה האוטומטית.
תגובות