באג לייף: הסיפור שמאחורי פרצת האבטחה שהתגלתה בביטקוין

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

ב-17 בספטמבר פרסם לראשונה צוות הפיתוח 'ביטקוין קור' על פרצת אבטחה המאפשרת לכורים זדוניים לבצע התקפת מניעת שירות (Denial of Service) על צמתים אחרים ברשת ולגרום לקריסתם. הבאג, אשר היה קיים בקוד של ביטקוין מאז מרץ 2017, דווח באופן דיסקרטי ואחראי למפתחי 'ביטקוין קור' ע"י מפתח תוכנה פסודו-אנונימי העונה לשם awemany.

התקפות מניעת שירות נפוצות מאד בעולם אבטחת המידע, ואם זו הייתה הפרצה בלבד – ניתן היה להתמודד מולה במהירות במידה והיו תוקפים באמצעותה. אך תוך מספר ימים ספורים התבררה חומרת המצב האמיתית: הבאג אפשר לתוקפים פוטנציאליים לבצע בזבוז כפול (Double Spend) של מטבעות ביטקוין, כאשר המטבעות המבוזבזים נשארים בסירקולציה. במלים אחרות, הבאג יכול היה לאפשר לתוקף ליצור מטבעות חדשים יש מאין.

מאחורי הקלעים

לאחר הדיווח הדיסקרטי למפתחי 'ביטקוין קור', הבנת חומרת המצב ותיקון הקוד בגרסה חדשה, הוחלט לדווח על הבאג באופן חלקי ולהאיץ את הליך עדכון הגרסה. כלומר להודיע למשתמשים, כורים (בעיקר), ארנקים, בורסות ושותפים גדולים נוספים באקו-סיסטם על באג ה-DoS, תוך השמטת החלק בו ניתן ליצור מטבעות חדשים יש מאין. הסיבה לכך, לטענתם, הייתה שבאג ה-DoS מצטייר כחמור מספיק בשביל לעדכן מידית לגרסה המתוקנת, בעוד שהודעה על באג האינפלציה הייתה עלולה לעודד תוקפים פוטנציאליים לנסות ליצור מטבעות חדשים.

עם זאת, קהילת המפתחים ברחבי עולם המטבעות הדיגיטליים גילתה די במהרה את חומרת המצב האמיתית. לפיכך שוחררה ההצהרה המלאה של צוות 'ביטקוין קור' המפרטת את הסיבות לבאג, אשר נחשב לאחד החמורים ביותר שהתגלו עד כה בקוד הביטקוין לצד שני באגים נוספים שנמצאו ב-2010 וב-2013.

האם המשתמשים בסיכון?

חשוב להבהיר שמטבעות ביטקוין הנמצאים בארנקים לא נמצאו בסיכון בשום שלב, אלא אך ורק מטבעות אשר נשלחו מארנקיכם לאחרונה. מפתחי 'ביטקוין קור' ושאר הרשת מחכים שרוב הצמתים בה יעדכנו את גרסתם, על מנת להימנע מסיטואציה בה תיווצר שרשרת חלופית (Chain Split). למעשה, בסיטואציה כזו, אחת מהשרשראות אוכפת את חוקי הקונצנזוס הישנים (כלומר גרסת הבלוקצ'יין עם הבאג) ואילו השרשרת השניה אוכפת את הגרסה המעודכנת. אם תיווצר שרשרת חלופית בשרשרת הראשית, כפי שכבר קרה בטסטנט אתמול (רשת הניסויים של ביטקוין), טרנסקציות רבות שבוצעו לאחרונה (וקיבלו אישור שהגיעו ליעדן) עלולות להיות מוחזרות לאחור (מכיוון שאינן קבילות עפ"י חוקי הקונצנזוס של השרשרת המובילה, BTC).

עם זאת, חשוב להמחיש שני דברים עיקריים. ראשית, רוב הכוח הכלכלי ברשת – כלומר בריכות כרייה, ארנקים ובורסות – כבר עדכנו את הגרסה. מאחר והם עשו זאת, התקפה בזדון הופכת לכמעט בלתי אפשרית שכן הם ידעו לזהות אותה מידית. שנית, הסבירות לפיצול בשרשרת הבלוקים (כלומר יצירת שרשרת חלופית) פוחתת משמעותית ככל שצמתים רבים יותר מעדכנים את גרסתם. כיום, עפ"י הערכות, מעל 30% מהרשת כבר עדכנה גרסה וקמפיין הפניה ליתר הצמתים ממשיך בשיא עוצמתו.

למרות ההבהרות, לאלו מכם אשר מעוניינים להימנע מסיכונים מיותרים, רצוי לחכות למספר אישורים גבוה לטרנסקציה בכדי להבטיח שהיא משתלבת בשרשרת הארוכה ביותר (להרחבה: 'חוקי קונצנזוס בביטקוין'). בעוד שלרוב שישה אישורים מספיקים על מנת להבטיח שהעסקה בטוחה, כעת רצוי לחכות ל-200. דרך נוספת היא להימנע בשלב זה (לימים הקרובים בלבד, עד שתתבהר התמונה הרחבה) מביצוע טרנסקציות.

לא רק ביטקוין

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

בהקשר אחר, גם בקוד הארנק הרשמי של המטבע האנונימי מונרו התגלה באג גדול מאד. הבאג שהתגלה איננו קשור לבאג בביטקוין, אלא למשהו נקודתי אשר אם היה מנוצל היה יכול לגרום נזק רב לארגונים גדולים כגון בורסות, ובעלות נמוכה במיוחד. באמצעות פרצת האבטחה יכלו תוקפים פוטנציאליים למנוע ממקבל הטרנסקציה להשתמש במטבעות שלו, ולשלוח אותם מחדש. זהו לא נחשב באג של בזבוז כפול (Double Spend) משום שהבאג הוא בארנק ולא בקוד התוכנה של מונרו, אך מבחינת הצד שנפגע – האפקט דומה לחלוטין. הבאג כמובן תוקן בשלב זה, בטרם נוצל, ואם מעניין אתכם להרחיב – תוכלו לעשות זאת בקישור הבא (הסבריו של עודד לייבה).

השאלות שמוכרחות להישאל

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

איך התקבלו ההחלטות לאחר גילוי הבאג?

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

ראשית, הפנייה לשותפים הגדולים באקו סיסטם (בריכות כרייה וכדומה) בוצעה ישירות למנכ"לי אותן חברות, כאשר בריכת כרייה אחת אף קיבלה התראה שעה וחצי לפני כולם. הסיבה לכך לטענתם טמונה ברצון לוודא שגוף אחד לפחות יריץ שרשרת תקנית – שזה מצוין וחיוני, אך כיצד הוחלט לאיזו בריכת כרייה לפנות? כמסתמן, לפי קשרים אישיים של המתכנתים.

שנית, לא רק שקהילת הביטקוין לא שותפה בקבלת ההחלטות, אלא אף הוסתר ממנה מידע בגילוי הראשוני החלקי. הדיווח הראשוני להזכירכם כלל רק את התקפת מניעת השירות, ללא האפשרות ליצירת מטבעות חדשים, ורק לאחר מספר ימים נוסף הגילוי העיקרי. אין אנו חולקים על התהליך שנערך מאחורי הקלעים. ככל הנראה בהתחשב בנסיבות, דרך הפעולה שצוות הפיתוח בחר לנקוט בה הייתה הנכונה ביותר עבור הרשת כולה: בדיסקרטיות, אחריות, ובאופן מהיר מאד. סביר מאד ששיתוף הקהילה ופיתוח דיון ציבורי היו מובילים לאי-יעילות רבה ולסיכון גדול יותר של הרשת. עם זאת, השאלה שצריכה להישאל היא האם ברשת שפיתוח הקוד שלה אמור להיות מבוזר (כמה שיותר) יכולה להתקבל החלטה גדולה כגון סופט פורק (תיקון הבאג היה כרוך בהוספת חוק לרשת) באופן כה מידי ואפשר לומר – בדלתיים סגורות?

השאלה הנ"ל מתחברת לשאלה הבאה העוסקת באופן ניהול הפיתוח בביטקוין.

האם נכון שיהיה מימוש אחד לביטקוין, או האם רצוי שיהיו יותר?

אם אינכם יודעים זאת, 'ביטקוין קור' הינו מימוש אחד (כלומר תוכנת הבלוקצ'יין של ביטקוין) מתוך 12 לפחות. ישנם מימושים נוספים אשר מנוהלים על ידי צוותי פיתוח אחרים כגון bitcoinj או bitcoin F#, וב-9 שפות תכנות שונות (C++, javascript ועוד). נכון להיום, מוערך ש-80% לפחות מהרשת נעזרת בתוכנה של 'ביטקוין קור' ואילו יתר הרשת מתפעלת את המימושים השונים. אנו ננסה לעשות סדר ולעזור לכם לגבש דעה: האם חיובי יותר עבור הרשת שיהיה מימוש בודד, או שמא מספר רב של מימושים מאפשר הגנה רבה יותר?

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

מנגד, אלו שתומכים במימוש בודד גורסים שעדיף שכלל צוותי הפיתוח יעבדו על קוד תוכנה אחד, ויהוו עיניים נוספות לביקורת על הקוד. כמו כן, מימושים נוספים מגבירים משמעותית את הסיכויים לפיצולים בשרשרת, שאף עלולים ליצור בעיה גדולה במובן המשפטי/חברתי. למשל, אם ייווצר פיצול כלשהו בעקבות באג באחד המימושים, תוקף עלול לנצל אותו ולגנוב, לדוגמה, מטבעות מבורסה גדולה – היא יכולה לטעון שהיא הסתמכה על השרשרת האמיתית ולכן לא חייבת לאף אחד ממשתמשיה כסף (קרדיט ל-Assaf Assaf על הטיעון).

לבסוף, הטיעון המרכזי עפ"י מתכנת ביטקוין מוכר, נדב איבגי, הוא שמימושים נוספים לא מסייעים ליציבות הרשת. "זה לא עוזר לך להיות זה שצודק כשכולם טועים. אם למשל הייתה הטמעה נוספת בשימוש של 30% שהייתה ללא הבאג, עדיין אין לך שום אינטרס להמשיך לפעול ברשת ש-70% ממנה לא מתפקד. ההתנהלות הנכונה היא לכבות מידית את הצומת שלך כשמתגלה הבאג ב'קור' – אפילו אם אתה לא מריץ 'קור'. האלטרנטיבה שמה אותך בסכנה יותר גדולה בצורה משמעותית." בהמשך דבריו מפנה נדב להרחבה של פיטר טוד, מפתח ביטקוין מוכר גם כן, על הנושא.

לסיכום

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

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

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

קבלו את העדכונים והחדשות הכי חמות מעולם הקריפטו ישירות למייל שלכם:

שתפו:

בן סמוחה

בן סמוחה

בן 32, בוגר תואר לכלכלה וניהול מאוניברסיטת 'בן גוריון', וכעת מרצה באוניברסיטה. בן הקים את CryptoJungle וקהילת 'מדברים קריפטו', שיחדיו מהווים גוף התוכן, האקדמיה והקהילה המובילים והגדולים בישראל. בנוסף, נמנה בין מייסדי עמותת Blockchain B7, ויועץ חיצוני לארגונים בתחום הקריפטו והבלוקצ'יין.
בן סמוחה

בן סמוחה

בן 32, בוגר תואר לכלכלה וניהול מאוניברסיטת 'בן גוריון', וכעת מרצה באוניברסיטה. בן הקים את CryptoJungle וקהילת 'מדברים קריפטו', שיחדיו מהווים גוף התוכן, האקדמיה והקהילה המובילים והגדולים בישראל. בנוסף, נמנה בין מייסדי עמותת Blockchain B7, ויועץ חיצוני לארגונים בתחום הקריפטו והבלוקצ'יין.

שנת 2024 היא שנת הקריפטו

תנו לנו ללמד אתכם איך
לסחור ולהרוויח!

אל תפספסו את ההזדמנות - נותרו 5 מקומות אחרונים

👇השאירו פרטים עכשיו👇

מומחה מומלץ

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

cropped-logo-cryptojungle-2.png

להתחברות מלאו שם משתמש וסיסמה

פרטייך התקבלו בהצלחה! 🎉

בנתיים, יש לך אפשרות לבחור מבין הפעולות הבאות:

דילוג לתוכן