גניבת הקריפטו הגאונית: איך תוקף השתלט על עסקת Multisig של Bybit
ב-21 בפברואר 2025 התרחש אירוע מדאיג בעולם הקריפטו: Bybit, אחת מפלטפורמות המסחר המובילות, דיווחה על פעילות לא מורשית בארנק קר של מטבעות ETH (את'ריום). מה שהתחיל כעסקה שגרתית הפך במהירות לגניבה מתוחכמת, כאשר תוקף הצליח להשתלט על העסקה ולהעביר את הכספים לארנק שבשליטתו.
דוח חקירה של חברת אבטחת הסייבר Sygnia חושף את המכניקה מאחורי המתקפה הזו, ומספק הצצה ללוגיקה של העסקה ושל הגניבה עצמה. אז איך זה קרה?
העסקה: תמונת הרקע
הסיפור מתחיל בעסקה פשוטה לכאורה. Bybit רצתה להעביר כמות מסוימת של ETH מארנק קר לארנק חם. ארנק קר הוא כמו כספת דיגיטלית: הוא מנותק מהאינטרנט כדי להגן על הכספים מפני האקרים, ומשמש בדרך כלל לאחסון לטווח ארוך. לעומתו, ארנק חם מחובר לאינטרנט ומשמש לפעילות תפעולית יומיומית.
כדי לבצע את ההעברה הזו, Bybit השתמשה ב-Safe{Wallet}, שירות שמאפשר עסקאות רב-חתימות (Multisig) – סוג של עסקה שדורשת אישור ממספר גורמים לפני שהיא מתבצעת. התהליך הזה נועד להוסיף שכבת אבטחה נוספת, כמו דלת עם כמה מנעולים שכל אחד דורש מפתח שונה.
במקרה הזה, שלושה חותמים – כנראה עובדים או מערכות של Bybit – היו אמורים לאשר את העסקה דרך הממשק של Safe{Wallet}. הכספים היו אמורים לעבור מהארנק הקר לארנק החם, והכל היה אמור להסתיים כמתוכנן. אבל כאן נכנס התוקף לתמונה.
המתקפה: שינוי בזמן אמת
הדוח של Sygnia מגלה שהתוקף התערב בדיוק ברגע שבו העסקה עברה את תהליך החתימה. הוא לא פרץ ישירות לארנק הקר ולא השתלט על המחשבים של החותמים. במקום זאת, הוא השתמש בטקטיקה מתוחכמת יותר: הזרקת קוד זדוני לתשתית של Safe{Wallet}, ובאופן ספציפי לדלי ה-AWS S3 שבו מאוחסנים קבצי ה-JavaScript שמריצים את ממשק העסקאות.
הקוד הזדוני הזה פעל כמו "מתווך מושחת". כשהחותמים השתמשו בדפדפני Chrome שלהם כדי לאשר את העסקה, הקוד שינה את תוכן העסקה בזמן אמת. במקום שה-ETH יעבור לארנק החם של Bybit, הקוד הפנה את הכספים לארנק שבשליטת התוקף.
מה שהופך את המתקפה הזו למיוחדת הוא שהקוד לא פעל על כל עסקה – הוא תוכנן להפעיל את עצמו רק כשמקור העסקה תאם לכתובת החוזה של Bybit (ועוד כתובת לא מזוהה, כנראה של התוקף לצורך בדיקות). זה מראה תכנון קפדני וממוקד.
השתלטות על הארנק הקר
אבל התוקף לא הסתפק רק בשינוי היעד של העסקה. הוא גם הצליח להשתלט על הארנק הקר עצמו ולהעביר את כל היתרה שבו לארנק שלו. איך? ככל הנראה, הקוד הזדוני אפשר לו לנצל את תהליך החתימה כדי לחשוף את המפתחות הפרטיים של הארנק או לשנות את ההרשאות שלו. ברגע שהשליטה הייתה בידיו, הוא רוקן את הארנק לחלוטין.
טשטוש העקבות
התוקף לא השאיר את הראיות חשופות לאורך זמן. שתי דקות לאחר שהעסקה הזדונית בוצעה, גרסאות חדשות של קבצי ה-JavaScript הועלו לדלי ה-AWS S3 של Safe{Wallet}, כבר בלי הקוד הזדוני. זה הקשה על החוקרים לגלות את המתקפה בזמן אמת, אבל ניתוח של זיכרון המטמון בדפדפני החותמים וארכיוני אינטרנט חשף את האמת: הקוד הזדוני הוכנס כבר ב-19 בפברואר, יומיים לפני העסקה.
החקירה של Sygnia קובעת שהמתקפה נבעה מתשתית של Safe{Wallet}, לא של Bybit. התוקף ניצל את ממשק העסקאות של Safe{Wallet} כנקודת תורפה, והצליח לגנוב את ה-ETH בלי להשאיר עקבות ישירות אצל הקורבן.
הסיפור הזה מדגיש את החשיבות של אבטחת כל שרשרת האספקה הדיגיטלית – גם שירותי צד שלישי כמו Safe{Wallet} יכולים להפוך לשער להתקפות מתוחכמות. Bybit יצאה מהאירוע הזה ללא פגיעה ישירה בתשתית שלה, אבל השאלה הגדולה נותרת: איך אפשר למנוע את המקרה הבא?