פוסט זה מנתח את המתקפה על Ledger כדוגמה לאופן שבו פישינג באמצעות חריצים (Spear Phising) הוביל למתקפת שרשרת אספקה של תוכנה (SSC) על כלי חיבור התוכנה בו השתמשו ארנקי החומרה של החברה, מה שאפשר לשחקן לרוקן כספים בשווי 600,000 דולר לפחות.
מתקפה זו הגיעה בסוף שנה מוכת תקריות בשרשרת האספקה. בפוסט זה ננתח את המתקפה, את השפעתה, כיצד טופלה ואילו לקחים ניתן להפיק.
לדג'ר ומשתמשי ארנק החומרה שלו הם מטרות ברורות עבור פושעי סייבר. גנבי ארנקים תקפו משתמשי לדג'ר באמצעות ניסיונות פישינג בממשקי הרשת של אפליקציות הקריפטו, והפושעים צריכים לדעת את קואורדינטות המשתמש כדי להניע את קמפייני הפישינג. לדג'ר היה... פרצת נתונים עד יולי 2023 כמו גם להיות חלק מ- גניבת נתונים בספטמבר 2020 בחנות המסחר האלקטרוני שלהם, Shopify, אירוע בעל השפעה גדולה. הפוסט "עדכון: מאמצים להגן על הנתונים שלך ולהעמיד לדין את שולחי הספאם"מראה עד כמה עמוקות היו הפרצות הללו.
לדג'ר צריכה להתייחס ברצינות לאבטחה (זהו חלק מרכזי בעסק שלהם), עם מעבדת מחקר פנימית (דונג'ון) טיפול הסמכת אבטחת מכשירים, באג באונטי תָכְנִית, עלוני אבטחה, ו דוגמנות איומיםעד כה הכל טוב...
כיצד בוצעה ההתקפה
Ledger זיהה פרצה באמצעות Ledger's ערכת DApp Connect ביום חמישי, ה-14 בדצמבר 2023. ניצול לרעה זה החדיר קוד זדוני לתוך יישומים מבוזרים (DApps) מבוססי את'ריום שהשתמשו ב-Ledger Connect Kit, והטעה משתמשים לחתום על עסקאות שרוקנו את הארנקים שלהם.
הניצול התגלה במהירות ופתרון יושם זמן קצר לאחר מכן. בינתיים, מספר קטן של משתמשים נפלו תחת המתקפה וחתמו על עסקאות שרוקנו את ארנקיהם.
ההתקפה החלה כאשר עובד לשעבר של Ledger נפל קורבן למתקפת פישינג שהשיגה גישה לחשבון ה-NPM שלו באמצעות אסימון הסשן. התוקפים פרסמו גרסאות זדוניות של @ledgerhq/connect-kit (1.1.5, 1.1.6 ו-1.1.7, כעת מחוץ לתחום). התוקפים יכלו להריץ קוד שרירותי עם אותה רמת הרשאות כמו אפליקציית הארנק: תוקפים יכולים לרוקן את כספי המשתמשים באופן מיידי ללא אינטראקציה, להפיץ קישורי פישינג רבים כדי להונות משתמשים, או לנצל את הפאניקה של משתמשים על ידי שכנועם להעביר נכסים לכתובת חדשה, וכתוצאה מכך לאובדן נכסים עקב הורדת ארנק מזויף.
אפליקציות ממשקי ארנק (dApps) השתמשו בדרך כלל ב- טוען-ערכת-חיבור חבילה מ-Ledger כדי לטעון את ערכת החיבור בזמן ריצה מ-JavaScript CDN (jsDelivr). לרוע המזל, כתובת ה-URL https://cdn.jsdelivr.net/npm/@ledgerhq/connect-kit@1 לא הצמיד את הגרסה המדויקת (1.1.4 באותה עת), כך שכאשר הגרסאות הזדוניות הועלו, הן נשלחו (ונשמרו במטמון) על ידי ה-CDN. ולא נעשה שימוש בסכום בדיקה כדי להבטיח שהמשאב שהורד מה-CDN היה אכן המשאב הצפוי (שיש להשתמש בו בעת הפצת קוד מ-CDN). סכימה מבוססת סכום בדיקה זו נקראת יושרה לעצמם-משנה (SRI).
הקוד שהוזרק כנראה ביצע מניפולציות בנתוני העסקאות, והטעה משתמשים לאשר תשלומים מניפולטיביים. לדוגמה, משתמש שאישר תשלום אסימון כדי לאפשר פונקציונליות של אפליקציה, ייתכן שראה במקום זאת אישור לתשלום לכתובת של ההאקר. לא משנה כמה מאובטח ארנק החומרה, הכספים נוקזו.
גילוי וחקירה
משתמשים שונים החלו לפרסם הודעות ב-X (הידוע גם כטוויטר) לפיהן ממשק המשתמש של Zapper "נחטף". הקרדיט מגיע למתיו לילי, מנהל הטכנולוגיה הראשי של סושי, שהזהיר לראשונה... פוסט לצפצף ש"מחבר web3 נפוץ" נפרץ. מאוחר יותר הוא הצביע על ערכת חיבור/LedgerHQ כספרייה שנפגעה, ונתן הערכה ראשונית, מעט בגסות:
מה קרה?
— אני תוכנה 🦇🔊 (@MatthewLilley) דצמבר 14, 2023
בקצרה, @פִּנקָס עשה שרשרת של טעויות נוראיות.
1. הם טוענים JS מ-CDN.
2. הם לא JS טעון עם נעילת גרסה.
3. רשת ה-CDN שלהם נפגעה.
הייתי נמנע משימוש בכל אפליקציית dApp עד שהצוותים שלהם יאשרו שהם הפחיתו את ההתקפה. https://t.co/a3brXNQSx9
המשתמש 0xViva פתח פנייה במאגר הפרויקטים של GitHub: [דחוף] מאגר זה משתמש בגרסה זדונית של חבילת npm @ledgerhq/connect-kit, גרסה 1.1.7.
ב-15 בדצמבר 2023, טופס אבטחת הבלוקצ'יין SlowMost פרסם... פוסט ניתוח מתן פרטים מלאים על הגרסאות הזדוניות.
ארנק החומרה של Ledger לא נפגע, אלא רק ערכת Ledger Connect. עם זאת, מכיוון שיישומים רבים משתמשים בספרייה זו, כגון SushiSwap, Zapper, MetalSwap, Harvest Finance, Revoke.cash וכו', היקף ההשפעה היה משמעותי. לדברי bittrace.io, כמה קורבנות, מתוך פאניקה, ניסו להעביר נכסים לכתובת חדשה, אך הורידו אפליקציית ארנק מזויפת!
באותו היום ממש, ג'יימסון לופ במדויק צייץ על הפגמים שאפשרו להצלחת המתקפה:
נשמע שתקרית האבטחה של היום הייתה שיאם של 3 כשלים נפרדים ב-Ledger:
- ג'יימסון לופ (@lopp) דצמבר 14, 2023
1. טעינה עיוורת של קוד מבלי להצמיד גרסה ובדיקת סכום ספציפיים.
2. אי אכיפת "חוקי שני אנשים" סביב סקירת קוד ופריסה.
3. אי ביטול גישת עובדים לשעבר.
כיצד טופל האירוע
מנכ"ל לדג'ר, פסקל גוטייה, פרסם באותו יום של התקיפה מכתב גילוי נאות מתן פרטים נוספים על האירוע, וזה בהחלט טוב: לטמון את הראש בחול כמו יען היא הדרך הגרועה ביותר להתמודד עם כל אירוע אבטחת סייבר.
מבנה המכתב מעניין: הוא זיהה מיד את קיומן של גרסאות זדוניות של הספרייה שגוזלות כסף, וזה טוב (להכחיש את המציאות זה שטויות):
"היום חווינו פרצה בערכת Ledger Connect Kit, ספריית Javascript שמיישמת כפתור המאפשר למשתמשים לחבר את מכשיר ה-Ledger שלהם ל-DApps (אתרי אינטרנט המחוברים לארנק) של צד שלישי."
ניצול לרעה זה נבע מכך שעובד לשעבר נפל קורבן למתקפת פישינג, שאפשרה לגורם זדוני להעלות קובץ זדוני ל-NPMJS של Ledger (מנהל חבילות לקוד Javascript המשותף בין אפליקציות).
עבדנו במהירות, יחד עם שותפנו WalletConnect, כדי לטפל בניצול הקורונה, ועדכנו את NPMJS כדי להסיר ולנטרל את הקוד הזדוני תוך 40 דקות מרגע הגילוי. זוהי דוגמה טובה לעבודה משותפת מהירה בתעשייה כדי להתמודד עם אתגרי אבטחה."
מה? לא נשללו מהעובד לשעבר עם זכויות פרסום שלו ב-NPM?
המנכ"ל פירט את בקרות האבטחה הקיימות, אך רמז שמשהו חולש בגישה ל-NPM:
"כעת, אני רוצה להתייחס לסיבה לכך שזה קרה, כיצד נשפר את נוהלי האבטחה שלנו כדי להפחית את הסיכון הספציפי הזה בעתיד, ולשתף את המלצתנו עם התעשייה, כדי שנוכל להיות חזקים יותר יחד."
השמיים standard הנוהג ב-Ledger הוא שאף אדם בודד אינו יכול לפרוס קוד ללא בדיקה על ידי מספר גורמים. יש לנו בקרות גישה חזקות, ביקורות פנימיות וחתימות מרובות קוד בכל הנוגע לרוב חלקי הפיתוח שלנו. זה המצב ב-99% מהמערכות הפנימיות שלנו. כל עובד שעוזב את החברה, גישתו נשללת מכל מערכת Ledger.
זה היה מקרה בודד ומצער. זוהי תזכורת לכך שאבטחה אינה סטטית, ולדג'ר חייבת לשפר ללא הרף את מערכות ותהליכי האבטחה שלה. בתחום זה, לדג'ר תיישם בקרות אבטחה חזקות יותר, שיחברו את הבנייה שלנו pipeline שמיישם קפדני software supply chain security לערוץ ההפצה של NPM."
ובכן, נראה שחשבון ה-NPM עם הרשאות לפרסם גרסאות חדשות של הספרייה כלל בקרות אבטחה פחות מחמירות מאשר חלקים אחרים בתשתית התוכנה שלהם. תקרית בודדת שנגרמה עקב חוסר מזל?
סוף המכתב הוא יותר standard סעיף של התקשרות עם הרשויות, "הצהרת "תחת שליטה" והתנצלויות:
"לדג'ר יצרה קשר עם הרשויות ועושה כל שביכולתה לסייע ככל שהחקירה הזו מתפתחת. לדג'ר תתמוך במשתמשים שנפגעו במציאת הגורם הפוגע הזה, להביא אותו לדין, לעקוב אחר הכספים ולעבוד עם רשויות אכיפת החוק כדי לסייע בהשבת נכסים גנובים מההאקר. אנו מצטערים מאוד על האירועים שהתרחשו היום עבור האנשים שנפגעו."
המצב כעת בשליטה והאיום חלף. אנו מבינים את הפאניקה שזה גרם לקהילה ולמערכת האקולוגית הרחבה יותר."
המכתב מצרף ציר זמן, דבר שעוזר למשתמשים להבין כיצד התגלה התקרית, אילו פעולות בלימה ותיקון ספציפיות ננקטו, וכיצד הנזק שנגרם למשתמשים שנפגעו יוחזר/ייפצה. זהו החלק הספציפי ביותר למטבע:
"הבוקר CET, עובד לשעבר של Ledger נפל קורבן למתקפת פישינג שהשיגה גישה לחשבון NPMJS שלו. התוקף פרסם גרסה זדונית של ערכת Ledger Connect (המשפיעה על גרסאות 1.1.5, 1.1.6 ו-1.1.7). הקוד הזדוני השתמש בפרויקט WalletConnect סורר כדי לנתב כספים לארנק של האקר." צוותי הטכנולוגיה והאבטחה של Ledger קיבלו התרעה ותיקון נפרס תוך 40 דקות מרגע ש-Ledger נודע על כך. הקובץ הזדוני היה פעיל במשך כ-5 שעות, אולם אנו סבורים שחלון הזמן בו התרוקנו הכספים הוגבל לתקופה של פחות משעתיים.Ledger תיאם עם WalletConnect אשר השבית במהירות את הפרויקט הנוכל. ערכת Ledger Connect Kit גרסה 1.1.8 המקורית והמאומתת מופצת כעת ובטוחה לשימוש.
עבור בוני קוד המפתחים ומקיימים אינטראקציה עם קוד ערכת Ledger Connect: צוות הפיתוח של connect-kit בפרויקט NPM פועל כעת לקריאה בלבד ואינו יכול לדחוף ישירות את חבילת NPM מסיבות בטיחות. ביצענו סבב פנימי של הסודות לפרסום ב-GitHub של Ledger. מפתחים, אנא בדקו שוב שאתם משתמשים בגרסה העדכנית ביותר, 1.1.8.
לדג'ר, יחד עם ארנק חיבור ושותפינו, דיווחו על כתובת הארנק של הגורם הפוגע. הכתובת גלויה כעת ב שרשרת. לִקְשׁוֹר הקפיא את ה-USDT של השחקן הרע."
לפי דיווח זה, הבלימה הייתה מהירה, שכן פרויקט WalletConnect הסורר לניתוב כספים הושבת באופן מיידי. אך אפילו עם זאת, חלק מהארנקים התרוקנו.
השלכות: כיצד הגיבה התעשייה
חלק מהמשתמשים הביעו כעס על Ledger על שלא הצליח למנוע את הפשרה, בעוד שאחרים הזהירו מפני הסכנות הטמונות בהסתמכות על ספריות של צד שלישי.
לתעשיית הסייבר יש נישה בתחום הסייבר-מטבעות. קמפיינים של ניקוז ארנקים ידועים, המשתמשים בעיקר באתרי פישינג כדי להונות משתמשי קצה. לעסקי ה-SaaS הרגילים (Scam-as-a-Service) יש גורמים המתמחים בניקוז ארנקים, כמו ספקי הונאה. מייבש תופת אשר הפסקת פעילות שהוכרזה בנובמבר 2023. נראה שמדובר בדגל כוזב בכל מקרה, לפי הפעילות האחרונה שנראתה ב-Dune's @scamsnifferהתוכנית שהם פועלים בה הוסברה בפוסט הזה של Group-IB:
כמה אנליסטים רמזו למה שלא איפשר את ההתקפה. תגובה מאת המשתמש brianddk בכרטיס במאגר של הפרויקט נותן לנו תובנות לגבי שורש הבעיה:

A תגובה של משתמש אחר, HenryQW, הצביע על הדבר השני שאפשר לגרסאות הזדוניות להתפשט דרך CDN:

מוקדם מדי לראות יוזמות ארוכות טווח כדי להפוך את חזיתות ארנקי הקריפטו לחזקות יותר מפני התקפות פישינג. נראה כי נדרשת הקפדה על... standard דומה למה שה PA-DSS הצעות עבור ספקי תוכנה של יישומי תשלום עשויות להתקבל בברכה בתעשיית הקריפטו.
ועכשיו, לקחים נלמדו!
זה מדהים איך ארנק חומרה, התגלמות אבטחת הקריפטו, נפרץ פשוט על ידי גניבת גישה לאישורי NPM של "עובד לשעבר" של Ledger (כנראה שם משתמש/סיסמה ללא הגנה דו-שלבית, או אסימון גישה). תקרית זו משמשת כתזכורת בולטת לכך שכאשר אתם נמצאים תחת אש, יש להגן על תשתית התוכנה שלכם באותה זהירות כמו על מוצרי התוכנה או החומרה שלכם.
רוב התקפות שרשרת האספקה של תוכנה מתחילות בפגיעה בחשבון פנימי (לעתים קרובות של מפתח או מהנדס devops). לאחר מכן התוקפים נעים לרוחב כדי לפרוץ למערכות פנימיות בתשתית התוכנה כמו... CI/CD מערכת או כלי פריסה, או מצליחים להוסיף לוגיקה זדונית למאגרי קוד מקור, דבר שניתן לזהות אם טיפול נכון בשינויים עם הגנת ענפים וסקירות קוד יתבצעו. אבל תוקפים לא צריכים להעמיק כל כך כאשר המטרה היא ספרייה פופולרית שפורסמה ברישום ציבורי, במיוחד אם הם יכולים לקבל גישה לאישורי פרסום (כתיבה). וזה מה שקרה בהתקפה הזו.
אימות 2FA, במיוחד שימוש באלמנטים חזקים כמו מפתחות אבטחה, מגביל את הסיכון בפעולות אינטראקטיביות. CI/CD pipelines, אסימוני גישה עם גישה מוגבלת המאוחסנים כ- CI/CD סוד הוא הדרך הרגילה (ואסימון הגישה לא אמור לדלוף). למרבה הצער, נראה שלעובד לא היה סט 2FA חזק. NPM מאפשר ארגונים לאכיפת 2FA (אבל זה אופציונלי, לא ברירת המחדל), וזה כנראה מה ש-Ledger צריך לכלול. ואל תשכחו להוסיף אפשרויות מתאימות ביטול אישורים נהלים עבור עובדים לשעבר, במיוחד עם גישה למשאבים קריטיים כמו היקף ה-NPM שבבעלות הארגון.
הצמדת גרסה עבור תלויות עם שינויי גרסה שנבדקו היא נוהג שמפחית את התפשטותן של תלויות זדוניות. בהקשר של תקרית Ledger, גרסאות הספרייה שה- טוען-ערכת-חיבור לקח מ-CDN היה צריך להיות מוצמד, ו"אל תסמוך על מה שה-CDN זורק". בעל אימות סכום בדיקה לדוגמה, יש להשתמש באמצעות SRI (או אפילו סכמת חתימה דיגיטלית המאמתת גם את המקור) בעת משיכת קוד מ-CDN לצורך טעינת קוד דינמית.
השאר זה סיפור.
עבור קמפיינים קונבנציונליים יותר של פישינג המכוונים למשתמשי ארנק, השאלה היא: מה גורם למשתמשים ליפול למלכודות שהציבו פושעים ולאשר עסקאות שמעולם לא התכוונו לבצע? אתרי הפישינג בתחום זה מעוצבים היטב ומשכנעים, מחקים מותגי קריפטו פופולריים; והם גם מציעים טוקנים בחינם, הטבעת NFTs ותגמולים אחרים. מניעת נפילה של משתמשים למלכודות כאלה היא בעיה המחפשת פתרון.
ולא לשכוח הקשור פריצת קריפטו התקפות, איום כללי יותר, שבו היריבים משתלטים על תשתיות ענן כדי להפעיל כורים עבור מטבעות קריפטוגרפיים, לעתים קרובות עבור מטבעות פרטיות כמו Monero XMR ו-Zcash, עם היסטוריית עסקאות נסתרת. גניבת קריפטו רלוונטית מכיוון שהיא עשויה להשפיע על כל ארגון, ולמרות שהרווח עבור התוקף יכול להיות נמוך, העלות עבור הקורבן יכולה להיות גדולה (Sysdig שהוזכרה ב- דוח זה שעל כל דולר שנכרה עבור התוקף גובה 53 דולר עבור ארגון הקורבן).
הפניות
- כרטיס[דחוף] מאגר זה משתמש בגרסה זדונית של חבילת npm @ledgerhq/connect-kit, 1.1.7"במאגר גיטהאב.
- מכתב ממנכ"ל Ledger על התקרית, 14 דצמבר 2023.
- דוח אירועי אבטחה, מאת Ledger, 20 דצמבר 2023.
- ניצול של Ledger מסכן את DeFi; סושי אומרת 'אין לקיים אינטראקציה עם אף אפליקציית dApp', פרסם ב CoinDesk מאת אוליבר נייט, 14 דצמבר 2023.
- ערכת מתקפת שרשרת האספקה על Ledger Connect: ניתוח ההשפעה ואמצעי מניעהפוסט מאת SlowMist על ההתקפה, דצמבר 2023.
- מושגי אבטחה של Web3: ניקוז ארנקים, מאת Jammel Weaver, ב-Rektify AI, יולי 2023.
צפו בהדגמת הווידאו שלנו







