מודול תוכנה משותף המריץ סביבת Ethereum Virtual Machine (EVM) על גבי רשתות בלוקצ'יין מבוססות Cosmos SDK הכיל כשל חמור בטיפול ביתרות חשבונות, שאיפשר לתוקפים ליצור כספים שלא היו קיימים בפועל ולמשוך אותם החוצה. בין ה-20 ל-25 באוגוסט תוקפים ניצלו את הפגיעות בשש רשתות שונות וגנבו יחד כ-5.72 מיליון דולר. מה שהופך את הפרשה לחמורה במיוחד: היצרן, Cosmos Labs, ידע על הבאג כבר מאפריל והעריך בטעות שהוא לא מסכן רשתות פעילות.

הפרטים
הפגיעות, המתועדת תחת המזהה GHSA-7g4w-cg88-2cq2 וללא ציון CVE או CVSS רשמי, נבעה מאופן שגוי שבו המודול תיאם בין מצב ה-EVM לבין מודול היתרות (x/bank) של Cosmos SDK. כאשר חשבון מסוג vesting האציל (delegate) סכום גדול מהיתרה הפנויה שלו בפועל, המערכת חישבה את היתרה החדשה בצורה שגויה ויצרה בפועל כספים יש מאין.
לפי ציר הזמן שפרסמה החברה, הבאג דווח לראשונה דרך תוכנית תגמול הבאגים שלה כבר ב-25 באפריל, אך הצוות לא הצליח לשחזר אותו ברשתות עם 6 ספרות עשרוניות והסיק בטעות שהוא רלוונטי רק לתצורות נדירות יותר. רק ב-13 באוגוסט אושר שכל רשתות ה-Cosmos EVM חשופות ללא קשר לתצורת העשרוניות שלהן, והתיקון (גרסאות 0.6.2 ו-0.7.2) יצא ב-19 באוגוסט — יום לפני שהניצול בפועל החל.
נקודות לשים לב
- אם אתם מפעילים רשת המבוססת על מודול Cosmos EVM — ודאו שדרוג לגרסה 0.6.2 ומעלה או 0.7.2 ומעלה בהקדם.
- מדובר בעדכון מסוג state-breaking שדורש שדרוג רשת מתואם בין כל הצמתים, ולא רק החלפת קוד בשרת בודד.
- מפעילי רשת שלא יכולים לשדרג באופן מיידי קיבלו הנחיה לעצור את ייצור הבלוקים, לחסום יצירת הודעות vesting חדשות, או להשבית את ה-precompile של הסטייקינג עד לשדרוג.
- הלקח הרחב מעבר לבלוקצ'יין: הערכת סיכון ראשונית שגויה לפגיעות שדווחה באחריות (responsible disclosure) עלולה להישאר בתוקף חודשים ארוכים אם אין תהליך לבחון אותה מחדש כשמשתנה ההקשר — כאן בדיוק הפער בין "לא מסוכן" ל-"מסוכן לכולם" עלה כסף אמיתי.
- אין להסיק מהפרשה חשיפה של רשת Ethereum הרגילה או רשתות EVM אחרות שאינן מבוססות על מודול Cosmos SDK הספציפי הזה.
מקורות: The Hacker News · The Defiant

₿ אהבת את הפוסט?
אפשר לשלוח לי ביטקוין ישירות לכתובת שלי. סרקו את הקוד, או העתיקו את הכתובת:
bc1qsn043qmlv4ejxydeknkfm9u6e93e6tegmq9x85
שימו לב: העברה on-chain כרוכה בעמלת רשת שאינה תלויה בסכום, ולכן סכומים קטנים מאוד אינם כדאיים.