תודה למריוס ואן דר ווידדן על יצירת מקרה המבחן והסטטיסט ביותר, ועל כך שעזר לצוות BESU לאשר את הנושא. כמו כן, קודוס לצוות BESU, צוות האבטחה של EF ו- Kevaundray Wedderburn. בנוסף, בזכות יוקסיאנג צ'יו, ג'סטין טרגליה, מריוס ואן דר ווידין, בנדיקט וגנר וקבונדרריי וודרבורן להגהה. אם יש לך שאלות/הערות אחרות, מצא אותי בטוויטר ב @asanso
tl; ד"ר: BESU Ethereum Client Execution גרסה 25.2.2 סבלה מ- סוגיית קונצנזוס קשור ל EIP-196/ /EIP-197 טיפול בחוזה מראש לעקומה האליפטית alt_bn128 (aka bn254). הבעיה נקבעה בשחרור 25.3.0ו
כָּאן הוא דוח ה- CVE המלא.
Nb: חלק מפוסט זה דורש ידע כלשהו על עקומות אליפטיות (קריפטוגרפיה).
מָבוֹא
THE BN254 עקומה (ידועה גם בשם alt_bn128) הוא עקומה אליפטית המשמשת ב- Ethereum לפעולות קריפטוגרפיות. הוא תומך בפעולות כמו קריפטוגרפיה של עקומה אליפטית, מה שהופך אותה לחיונית עבור תכונות Ethereum שונות. לפני EIP-2537 ושחרור ה- Pectra האחרון, BN254 היה עקומת ההתאמה היחידה שנתמכה על ידי המכונה הווירטואלית Ethereum (EVM). EIP-196 וכן EIP-197 הגדירו חוזים מראש לחישוב יעיל על עקומה זו. לפרטים נוספים על BN254אתה יכול לקרוא כָּאןו
פגיעות אבטחה משמעותית בקריפטוגרפיה של עקומת אליפטית היא התקפת עקומה לא חוקיתשהוצג לראשונה בעיתון "התקפות תקלות דיפרנציאליות על מערכות קריפטו -מערכות עקומות אליפטיות"ו התקפה זו מכוונת לשימוש בנקודות שאינן מונחות על העקומה האליפטית הנכונה, מה שמוביל לבעיות אבטחה פוטנציאליות בפרוטוקולים קריפטוגרפיים. עבור עקומות הזמנה ללא פריים (כמו אלה המופיעים בקריפטוגרפיה מבוססת זיווג ובמקום עֲבוּר BN254), חשוב במיוחד שהנקודה נמצא בקבוצת המשנה הנכונהו אם הנקודה אינה שייכת לקבוצת המשנה הנכונה, ניתן לתמרן את הפעולה הקריפטוגרפית, מה שעלול לפגוע באבטחת המערכות הנשענות על קריפטוגרפיה של עקומה אליפטית.
כדי לבדוק אם נקודה עמ ' תקף בקריפטוגרפיה של עקומה אליפטית, יש לאמת כי הנקודה טמונה על העקומה ושייכת לתת -קבוצה הנכונה. זה קריטי במיוחד כאשר הנקודה עמ ' מגיע ממקור לא אמין או שעשוי להיות זדוני, מכיוון שנקודות לא חוקיות או מעוצבות במיוחד יכולות להוביל לפגיעויות אבטחה. להלן פסאודוקוד המדגים תהליך זה:
# Pseudocode for checking if point P is valid def is_valid_point(P): if not is_on_curve(P): return False if not is_in_subgroup(P): return False return True
בדיקות חברות בקבוצה משנה
כאמור, כאשר עובדים עם כל נקודה ממוצא לא ידוע, חשוב לוודא שהיא שייכת לתת -קבוצה הנכונה, בנוסף לאישור שהנקודה נעוצה בעקומה הנכונה. עֲבוּר BN254זה נחוץ רק ל כי הוא בעל סדר ראשוני. שיטה ישירה לבדיקת חברות ב הוא להכפיל נקודה לפי הסדר העיקרי של תת -קבוצה ; אם התוצאה היא אלמנט הזהות, הנקודה היא בקבוצת המשנה. עם זאת, שיטה זו יכולה להיות יקרה בפועל בגלל הגודל הגדול של ראש הממשלה במיוחד עבור ו בשנת 2021, הציע סקוט שיטה מהירה יותר לבדיקות חברות תת -קבוצות על עקומות BLS12 באמצעות חישוב בקלות אנדומורפיזםמה שהופך את התהליך 2 ×, 4 × ו -4 × מהיר יותר לקבוצות שונות (טכניקה זו היא זו שצוינה ב EIP-2537 לבדיקות תת -קבוצות מהירות, כמפורט ב מסמך זה). מאוחר יותר, Dai et al. הטכניקה הכללית של סקוט כדי לעבוד עבור מגוון רחב יותר של עקומות, כולל עקומות BN, והפחתת מספר הפעולות הנדרשות לבדיקות חברות תת -קבוצות. במקרים מסוימים, התהליך יכול להיות כמעט בחינם. קושלב הציג גם שיטה לעקומות שאינן ידידותיות למוזג באמצעות זיווג טייטשבסופו של דבר היה רחוק יותר כללי לעיקולים ידידותיים לזיווג.
המוצל האמיתית האמיתית
כפי שאתה יכול לראות מציר הזמן בסוף פוסט זה, קיבלנו דיווח על באג המשפיע Pectra EIP-2537 ב- BESU, שהוגש דרך ה- תחרות ביקורת פקטרהו אנו נוגעים בקלילות בנושא זה כאן, למקרה שהכתב המקורי רוצה לכסות אותו ביתר פירוט. פוסט זה מתמקד באופן ספציפי ב- BN254 EIP-196/ /EIP-197 פְּגִיעוּתו
הכתב המקורי ציין כי בבסו, iS_in_subgroup הצ'ק בוצע לפני ה- IS_ON_CURVE לִבדוֹק. הנה דוגמה לאיך זה נראה:
# Pseudocode for checking if point P is valid def is_valid_point(P): if not is_in_subgroup(P): if not is_on_curve(P): return False return False return True
מסוקרן מהנושא שלמעלה על עקומת BLS, החלטנו לבדוק את קוד ה- BESU לעיקול BN. להפתעתי הגדולה, מצאנו משהו כָּזֶה:
# Pseudocode for checking if point P is valid def is_valid_point(P): if not is_in_subgroup(P): return False return True
רגע, מה? איפה זה IS_ON_CURVE לִבדוֹק? בְּדִיוּק-אין אחד !!!
עכשיו, כדי לעקוף את iS_valid_point פונקציה, כל מה שתצטרך לעשות זה לספק נקודה זה טמון בקבוצת המשנה הנכונה אך לא ממש על העקומהו
אבל רגע – האם זה אפילו אפשרי?
ובכן, כן-אבל רק לעיקולים מסוימים שנבחרו היטב. באופן ספציפי, אם שני עקומות הם איזומורפיהם חולקים את אותו מבנה קבוצתי, מה שאומר שאתה יכול לעצב נקודה מהעקומה האיזומורפית שעוברת בדיקות תת -קבוצות אך לא שוכנות על העקומה המיועדת.
ערמומי, נכון?
אמרת איזומורפיזם?
אל תהסס לדלג על החלק הזה אם אינך מעוניין בפרטים – אנו עומדים להעמיק במתמטיקה.
לְאַפשֵׁר להיות תחום סופי עם מאפיין שונה מ -2 ו -3, כלומר לחלק מהראשון ומספר שלם ו אנו שוקלים עקומות אליפטיות מֵעַל ניתן על ידי משוואת Weierstraß הקצרה:
אֵיפֹה וכן הם קבועים מספקים .^(מצב זה מבטיח שהעקומה היא לא-יחיד; אם היה מופר, המשוואה הייתה מגדירה נקודה יחידה חסרת משיק מוגדר היטב, מה שמאפשר לבצע תוספת עצמית משמעותית. במקרים כאלה, האובייקט אינו טכני עקומה אליפטית.)
איזומורפיזמות עקומות
נחשבים שני עקומות אליפטיות איזומורפי^(כדי לנצל את הפגיעויות המתוארות כאן, אנחנו באמת רוצים איזומורפי עקומות, לא סתם איזוגני עקומות.) אם הם יכולים להיות קשורים על ידי שינוי משתנים. טרנספורמציות כאלה משמרות את המבנה הקבוצתי ומבטיחות כי תוספת נקודה נותרה עקבית. ניתן להראות כי התמורות היחידות האפשריות בין שני עקומות בצורת Weierstraß קצרה מקבלים את הצורה:
עבור חלק לא נזול ו יישום טרנספורמציה זו על משוואת העקומה מביא ל:
THE -אוויריאנט של עקומה מוגדרת כ:
כל אלמנט של יכול להיות אפשרי -כריע ממש מיוחד.) כאשר שני עקומות אליפטיות חולקות את אותו הדבר -אשר, גם הם איזומורפי (במובן המתואר לעיל) או שהם פיתולים אחד מהשני.^(אנו משמיטים את הדיון על פיתולים כאן, מכיוון שהם אינם רלוונטיים למקרה זה.)
ניצול
בשלב זה, כל שנותר הוא ליצור נקודה מתאימה על עקומה שנבחרה בקפידה, ו- Voilà –Le jeu est faitו
אתה יכול לנסות את וקטור הבדיקה באמצעות קישור זה ותיהנו מהנסיעה.
מַסְקָנָה
בפוסט זה חקרנו את הפגיעות ביישום של BESU של בדיקות עקומה אליפטיות. פגם זה, אם מנוצל, יכול לאפשר לתוקף ליצור נקודה שעוברת בדיקות חברות תת -קבוצות אך אינו שוכב על העקומה בפועל. צוות BESU התייחס מאז לנושא זה בשחרור 25.3.0. בעוד שהנושא היה מבודד ל- BESU ולא השפיע על לקוחות אחרים, אי התאמות כמו זה מעלות חששות חשובים למערכות אקולוגיות מרובות לקוח כמו Ethereum. חוסר התאמה בבדיקות קריפטוגרפיות בין לקוחות יכול לגרום להתנהגות שונה – כאשר לקוח אחד מקבל עסקה או חסימה שאחר דוחה. חוסר עקביות מסוג זה יכול לסכן את הקונצנזוס ולערער את האמון באחידות הרשת, במיוחד כאשר באגים עדינים נותרו מעיניהם על היישומים. אירוע זה מדגיש מדוע בדיקות קפדניות ושיטות אבטחה חזקות הם חיוניים לחלוטין – במיוחד במערכות blockchain, בהן אפילו טענות מוטעות קריפטוגרפיות קלות יכולות להתקרב לפגיעויות מערכיות גדולות. יוזמות כמו תחרות ביקורת Pectra ממלאות תפקיד מכריע בשטף יזום לנושאים אלה לפני שהם מגיעים לייצור. על ידי עידוד עיניים מגוונות לבחון את הקוד, מאמצים כאלה מחזקים את החוסן הכללי של המערכת האקולוגית.
ציר זמן
- 15-03-2025-באג המשפיע על Pectra EIP-2537 על BESU שדווח באמצעות ה- תחרות ביקורת פקטרהו
- 17-03-2025-גילה ודיווח על גיליון ה- EIP-196/EIP-197 לצוות BESU.
- 17-03-2025-מריוס ואן דר ווידדן יצר מקרה מבחן וסטטיסט כדי לשחזר את הנושא.
- 17-03-2025-צוות BESU הודה מייד קָבוּעַ הנושא.