תוקף ניצל זרעים חלשים שנוצרו על ידי דגמים מסוימים של ארנקי החומרה Coldcard כדי לגנוב ביטקוין בשווי של בערך עשרות מיליונים ממאות כתובות ב־30 ביולי.
הוסבר ניצול ה-Coldcard: מי איבד ביטקוין ומי נמצא בסיכון

נקודות מפתח
- גניבות הקשורות ל־Coldcard רוקנו ביטקוין ממאות ארנקים ב־30 ביולי.
- Coinkite אומרת שלזרעים של Mk3 היו בערך 40 ביטים של אנטרופיה במקום 128.
- משתמשי Coldcard חייבים להתקין קושחה מתוקנת וליצור זרעים חדשים לפני העברת כספים.
לפי ניתוח מעמיק של Galaxy Research, הגניבה המרכזית התרחשה בהתפרצות מתואמת היטב שנמשכה כ־25 דקות, בעוד שניתוח רחב יותר קישר מאוחר יותר כ־1,196 כתובות ועד 1,083 ביטקוין, בשווי כמעט 70 מיליון דולר, לפעילות שנפרשה על פני כ־41 דקות. הנתונים הסופיים עשויים להשתנות ככל שהחוקרים ממשיכים לעקוב אחר עסקאות בבלוקצ’יין הביטקוין הציבורי.
באג בן 5 שנים מגיע לארנקי ביטקוין ברחבי העולם
הארנקים שנפגעו היו ברובם בבעלות מחזיקים לטווח ארוך שיצרו את זרעי השחזור שלהם באמצעות מכשירי Coldcard שהריצו קושחה פגיעה שיצאה ממרץ 2021 ואילך. Coldcard הוא ארנק חומרה מנותק־אוויר (air-gapped) שמיוצר על ידי היצרנית הקנדית Coinkite ומיועד לשמור על מפתחות הביטקוין (BTC) מבודדים ממכשירים המחוברים לאינטרנט.
רבות מהכתובות שרוקנו נותרו רדומות במשך שנים. התוקף פעל במהירות, שילם עמלות עסקה קבועות גבוהות, ולא השאיר פלטי עודף (change outputs), כלומר כל כתובת רוקנה לחלוטין. דפוס זה הצביע על פעולה אוטומטית המשתמשת ברשימה מוכנה של מפתחות פרטיים, ולא על כך שלקוחות העבירו את כספם באופן עצמאי.
הגניבה לא נגרמה מפישינג, מתוכנה זדונית במחשב של משתמש, מגניבת מכשיר פיזית או מפריצה מרחוק באופן המקובל. במקום זאת, שגיאת קושחה החלישה את האקראיות ששימשה כאשר חלק ממכשירי Coldcard יצרו זרעי ארנק. הזרעים נראו תקינים אך הגיעו מטווח קטן בהרבה של שילובים אפשריים ממה שהובטח למשתמשים.
מחולל המספרים האקראיים של Coldcard כשל בשקט
זרע לארנק ביטקוין הוא סוד, המוצג בדרך כלל כ־12 או 24 מילים, שממנו הארנק מייצר את הכתובות והמפתחות הפרטיים שלו. זרע של 12 מילים שנוצר כראוי מכיל 128 ביטים של אנטרופיה, מדד טכני המתאר מספר עצום של שילובים אפשריים שהופך ניחוש של הזרע לבלתי אפשרי למעשה.
מכשירי Coldcard היו אמורים להשיג את האקראיות הזו ממחולל מספרים אקראיים חומרתי בתוך המיקרו־בקר של המכשיר. הרכיב שואב מרעש חשמלי פיזי שצופה חיצוני לא אמור להיות מסוגל לנבא.
עם זאת, במהלך מעבר של ספריית תוכנה בשנת 2021, Coinkite חשפה ששתי פונקציות ליצירת מספרים אקראיים עם ממשקים תואמים התבלבלו. אחת ניגשה למחולל החומרה התקין של המכשיר. השנייה הייתה חלופת תוכנה חלשה, שנועדה ללוחות ללא חומרה מתאימה.
הגדרת תצורה השביתה את נתיב החומרה המובנה של MicroPython משום ש־Coinkite סיפקה מעטפת חומרה משלה. התוכנה בדקה רק אם ההגדרה קיימת, ולא אם היא מופעלת. מכיוון שההגדרה הייתה קיימת אך הוקצתה לה ערך אפס, הבנייה הושלמה בהצלחה, בעוד שיצירת הזרעים עברה בשקט למחולל התוכנה החלש יותר.
נתוני מפעל ותזמון החליפו אקראיות אמיתית
החלופה הזו הסתמכה במידה רבה על מידע צפוי של המכשיר, כולל מזהה שבב הדומה למספר סידורי וערכי שעון פנימיים הקשורים לתזמון ההפעלה. תוקף שיוכל לצמצם את הקלטים הללו יעמוד מול מרחב חיפוש קטן בהרבה מטווח 128 הביטים המצופה מזרע שנוצר באופן מאובטח.
Coinkite העריכה את מרחב החיפוש האפקטיבי לזרעי Mk3 פגיעים בכ־40 ביטים תחת ההנחות הנוכחיות. זה עדיין מספר גדול של אפשרויות, אך ניתן לסרוק אותו באמצעות ציוד מחשוב ייעודי, במיוחד כאשר תוקף יכול להשוות זרעים מועמדים מול כתובות ביטקוין הנראות בבלוקצ’יין.

דגמי Coldcard מאוחרים יותר, כולל Mk4, Q ו־Mk5, הוסיפו מעט אקראיות מרכיב מאובטח (secure element). עם זאת, רק חלק מוגבל הגיע למחולל שנפגע, מה שהותיר הערכה של 72 ביטים של אנטרופיה אפקטיבית בזרעים שנוצרו לפני התקנת קושחה מתוקנת. זה היה חזק יותר מהנתיב של Mk3 אך עדיין מתחת לתקן המיועד של 128 ביטים.
ההבדל דומה להחלפת צירוף מנעול אקראי באמת בצירוף שמבוסס על המספר הסידורי של המנעול ועל השעה שבה הופעל לראשונה. הצירוף המתקבל עשוי להיראות אקראי, אך מי שמכיר את הנוסחה ויכול להעריך את מידע ההתחלה יכול לשחזר אותו. משתמשים רבים מבצעים מעבר, לא רק ממכשירי Mk3, אלא גם מ־Mk4, Q ו־Mk5.
Coinkite אומרת למשתמשים ליצור זרעים חדשים לחלוטין
Coinkite פרסמה התראות אבטחה וקושחה מתוקנת לאחר שנודע לה על האיום הפעיל. החברה אמרה שמשתמשים שיצרו זרעים על קושחה שנפגעה צריכים ליצור זרע חדש לחלוטין באמצעות גרסה מתוקנת ולהעביר את הביטקוין שלהם לכתובות הנשלטות על ידי אותו זרע.
התקנת העדכון לבדה אינה מספיקה. זרע שנוצר תחת המערכת הפגומה נשאר חלש לצמיתות, משום שעדכון הקושחה לא יכול להוסיף אקראיות למילים שכבר קיימות.
Coinkite המליצה למשתמשים לעדכן את המכשיר, ליצור זרע חדש, לאמת את הגיבוי ואת טביעת האצבע של הארנק (wallet fingerprint), לאשר את כתובת הקבלה, לשלוח עסקת בדיקה קטנה, ואז להעביר את היתרה שנותרה. משתמשים צריכים לשמור את הגיבוי הישן עד שההעברה תאושר, אך לא עוד להתייחס לזרע הישן כמאובטח.
החברה זיהתה גרסאות מתוקנות, כולל Mk3 גרסה 4.2.0 ומעלה, Mk4 ו־Mk5 גרסה 5.6.0 ומעלה, ו־Q גרסה 1.5.0Q ומעלה, יחד עם גרסאות Edge תואמות. מוצרי Tapsigner, Opendime ו־Satscard משתמשים בקוד שונה ולפי הדיווחים לא הושפעו.
אבטחה נוספת הגנה על חלק מבעלי Coldcard
משתמשים שהוסיפו מספיק גלגולי קובייה עצמאיים בעת יצירת זרע היו מוגנים באופן משמעותי, משום שהאקראיות שלהם גברה על קלט התוכנה הפגום. Coinkite אמרה שלפחות 50 גלגולים פרטיים של קובייה הוגנת סיפקו הגנה מספקת מפני הבעיה הזו, אף שגלגולים נוספים יכולים לספק מרווח בטיחות רחב יותר.
סיסמת BIP-39 חזקה גם יוצרת ארנק נפרד שלא ניתן לשחזר ממילות הזרע בלבד. ארנקי רב־חתימה, הדורשים מפתחות ממספר מכשירים או מיקומים לפני שניתן להזיז ביטקוין, היו מוגנים ברובם או במלואם כאשר זרע Coldcard הפגיע ייצג רק חלק אחד מסידור החתימה.
עם זאת, ההגנות הללו היו אופציונליות. נראה שרבים מהקורבנות פעלו לפי עצות האבטחה הסטנדרטיות שהיו זמינות באותה עת: לקנות ארנק חומרה מכובד, ליצור את הזרע במצב לא מקוון, להגן על הגיבוי, ולעולם לא להזין אותו למכשיר שמחובר לאינטרנט.
Coinkite מקבלת את האשמה כשהדיון פונה ל־AI
מנכ”ל Coinkite רודולפו נובאק, המוכר באופן נרחב בשם NVK, התנצל בפומבי ב־31 ביולי ואמר שהחברה מקבלת אחריות מלאה לכשל הקושחה. “אני מצטער ואני הרוס. הצוות שלנו שבור לב בגלל החדשות של אתמול,” כתב נובאק. הוא הודה שהתיקון המהיר מאבטח זרעים שנוצרים מחדש אך לא יכול לתקן זרעים שנוצרו תחת תוכנה פגיעה.

נובאק הסביר ש־Coinkite תפרסם תיאור טכני מלא לאחר אימות הפרטים ותסייע למשתמשים שנפגעו המבקשים דוחות משטרה, תביעות ביטוח או חקירות עצמאיות. הוא גם הזהיר מפתחים שכלי בינה מלאכותית (AI) יכולים כעת לסרוק קוד ציבורי ישן אחר חולשות נסתרות מהר יותר מאשר תהליכי ביקורת מסורתיים עשויים לזהות אותן.
Coinkite הדגישה שעליה להניח שתוקף השתמש ב־AI כדי לבדוק את הקושחה בקוד פתוח שלה, אף שאין ראיות שקובעות כיצד התגלה הפגם. החברה גם הודתה שבדיקה שנערכה לאחרונה באמצעות מודל AI מוביל לא הצליחה לזהות את הבעיה. כמה יצרני ארנקי חומרה מתחרים פנו לרשתות החברתיות כדי לציין שהמוצרים שלהם אינם מושפעים.
“לדג’ר אינה מושפעת מהאזהרה שפורסמה לאחרונה לגבי Coldcard Mk3,” אמרה החברה למשתמשי X לאחר תקרית Coldcard. “מכשירי Ledger משתמשים במחולל מספרים אקראיים אמיתי מוסמך (TRNG) המובנה ישירות בשבב ה־Secure Element שלנו, ומייצר 256 ביטים מלאים של אנטרופיה עבור כל ביטוי שחזור סודי בן 24 מילים.”
“משתמשי Trezor: הכספים שלכם בטוחים,” הסבירו יצרני ארנק החומרה Trezor ביום שישי. “הבעיה האחרונה של Coldcard מוגבלת לקושחה המותאמת שלהם ולאופן שבו חלק מהמכשירים שלהם יצרו אקראיות. Trezor לא משתפת את הקוד הזה.”
חשבון ה־X של Trezor הוסיף:
“תמיד שילבנו יחד מספר מקורות אקראיות עצמאיים (חומרת המכשיר + המארח + רכיבים מאובטחים בדגמים החדשים יותר). אנחנו מצטערים באמת עבור כל מי שאיבד ביטקוין.”
על מה משתמשי Coldcard צריכים לעקוב כעת
זהות התוקף עדיין אינה ידועה, והביטקוין הגנוב יכול לזוז מכתובות הריכוז שלו בכל עת. החוקרים עדיין פועלים כדי לקבוע כמה זרעים פגיעים נוצרו בפועל, כמה ביטקוין עדיין חשוף, והאם ארנקים נוספים בעלי ערך גבוה כבר זוהו על ידי התוקף. עם זאת, ייתכן של־Coinkite אין מידע רב על בעלי ארנקים מלפני זמן רב.
“חרב פיפיות משעשעת: Coinkite מוחקת את כל רישומי הלקוחות שלה אחרי 120 יום כדי להגן מפני דליפות נתונים,” דיווח ב־X המייסד השותף של Casa, ג’יימסון לופ. “מה שאומר שהם אינם מסוגלים ליצור קשר עם לקוחות שקנו coldcards פגיעים במהלך 5 השנים האחרונות כדי להזהיר אותם מפני הפגיעות הזו.”

התקרית תבחן גם האם Coinkite יכולה להשיב את האמון ב־Coldcard והאם יצרני ארנקי חומרה יאמצו ביקורות עצמאיות חזקות יותר על יצירת זרעים. עבור משתמשים, העדיפות המיידית פשוטה יותר: כל מי שיצר זרע על קושחה מושפעת ללא אנטרופיית קוביות עצמאית חזקה, ללא סיסמה, או ללא הגנת רב־חתימה, צריך להתייחס אליו כאל זרע שנפרץ ולהעביר כספים בזהירות לארנק חדש שנוצר מחדש.
מעבר לגניבה ההרסנית, ביטקוינרים ברחבי הקהילה משמיעים אזעקה ודוחפים אחרים להפיץ את הבשורה לפני שיותר ארנקים פגיעים ירוקנו.
מאמר זה תורגם מאנגלית באמצעות בינה מלאכותית. הגרסה המקורית באנגלית היא המקור הקובע; תרגומים אוטומטיים עשויים להכיל אי-דיוקים, במיוחד במונחים משפטיים ורגולטוריים.
















