ב-1 בנובמבר, ב-13:46 לפי שעון UTC, יצא ביטקוין מארנק שיושב על שרת תשלומים של מישהו. בשמונה ושש בערב הגיע לצוות BTCPay Server המייל הראשון שדיווח על גניבה, ובאותו לילה, ב-22:25, הצוות ביקש מהמפעילים ברשת X לכבות את השרתים עד שיובן מה קורה. במקביל פנה לחברות אחסון, בהן LunaNode, וביקש מהן להוריד מהאוויר התקנות של לקוחות כאמצעי מנע.

מה קרה

BTCPay Server היא תוכנה בקוד פתוח שבעל חנות מתקין על שרת של עצמו כדי לקבל תשלומים בביטקוין בלי לעבור דרך חברת סליקה. כדי שהתשלומים ייכנסו אוטומטית, השרת מחזיק אצלו את המפתחות שמאפשרים גם להוציא את הכסף. לארנק שהמפתחות שלו נמצאים על מכונה שמחוברת לאינטרנט כל הזמן קוראים hot wallet, וזה בדיוק מה שנשאב.

בסיכום החקירה שפרסם הצוות ב-2 בנובמבר הוא מגדיר מי נפגע: שרתים שהריצו את גרסה 2.4.1, שיצאה ב-23 ביולי, או ישנה ממנה. את החולשה עצמה הוא תיקן עוד ב-7 באוגוסט בגרסה 2.4.2, אבל התוקפים הגיעו אליה הפעם בדרך אחרת. מתי הניצול התחיל, הצוות אומר במפורש שהוא לא יודע. הוא פרסם שתי כתובות שאליהן הכסף הגיע, אחת בביטקוין ואחת בלייטקוין, ומיד הוסיף שבכתובות האלה יש גם פעילות שקדמה לגניבות שדווחו, ושאין לקרוא ביתרה שלהן את סכום ההפסד. גם ההסתייגות הזאת וגם המשפט שבו הצוות מצטער שלא עשה יותר כדי להגיע למשתמשי הגרסאות הישנות הם ניסוחים שספקים לא ממהרים לפרסם.

ההנחיה שיצאה בעקבות זאת חריפה מהרגיל: מי שהריץ 2.4.1 או גרסה ישנה יותר מתבקש לא להסתפק בעדכון, אלא לטאטא את מה שנשאר בארנק לארנק חדש עם seed חדש ממכשיר נקי, להוציא את השרת הישן מהאוויר, להקים מכונה וירטואלית חדשה ולהתקין עליה את הגרסה העדכנית. ההיגיון פשוט: העדכון סוגר את החולשה, אבל הוא לא מבטל גישה שתוקף כבר השיג, ויתרה שלא השתנתה בארנק לא מוכיחה שלא קרה כלום. ארנקים שהמפתחות שלהם נשמרו מחוץ לשרת, ובהם ארנקי חומרה, לא נפגעו בגניבות האלה.

למה זה חשוב לכם

רוב הקוראים לא מפעילים שרת תשלומים בבית, והוא בכל זאת נוגע לכל מי שמחזיק כסף דיגיטלי: מפתח שיושב על מכונה מקוונת בטוח בדיוק כמו המכונה שהוא יושב עליה. באותם ימים הקפיאה הבורסה הגדולה בברזיל, Mercado Bitcoin, הפקדות ומשיכות אחרי שלדבריה נגנבו ממנה כ-49 מיליון דולר. שני המקרים שונים בגודל ובשיטה, ובשניהם המפתחות היו במקום שמחובר לרשת כל הזמן.

מה עושים?

מפעילים BTCPay Server? מספר הגרסה מופיע בתחתית העמוד אחרי התחברות. אם מדובר ב-2.4.1 או קודמת, גם אם לא ראיתם גניבה וגם אם עדכנתם אחרי ה-1 בנובמבר, ההמלצה היא הקמה מחדש: ארנק חדש עם seed חדש ממכשיר נקי, טאטוא היתרה אליו, השרת הישן יורד מהאוויר, ומכונה חדשה עם הגרסה העדכנית. אל תשחזרו את השרת הישן על המכונה החדשה ואל תשתמשו שוב ב-seed הישן.

החליפו, ממכשיר אחר, את פרטי האימות שהשרת הישן יכול היה להגיע אליהם: מהאחסון וה-SSH ועד למפתחות ה-API ולרכיבי ה-Lightning. את הפרטים החדשים אל תקלידו על המכונה הישנה.

מחזיקים קריפטו בכלל? השאירו על שרת או בבורסה רק את הסכום שדרוש לפעולה היומית, ואת היתר בארנק שהמפתחות שלו לא נמצאים על מכונה מקוונת, למשל ארנק חומרה.

אם ההתקנה שלכם רצה אצל ספק אחסון, היא אולי כבר כובתה בלי שביקשתם. פנו אליו כדי לעבור למכונה חדשה.

העדכון סוגר את הדלת. את מי שכבר נכנס דרכה הוא לא מוציא.