פריצה אפשרית של הגשר של Connext! יותר מ-70K Frontrun

TLDR: צוות החוקרים של סייפר מצא פגיעות פוטנציאלית חדשה בחוזים החכמים של גשר צולב שרשרת של Connext. נראה שמערכת התגמול שלהם לנתבים (משתמשים שמאפשרים את ההעברות ברשתות השליחה והקבלה) רגישה ל-front-running. ואכן, מצאנו יותר מ-1000 עסקאות MEV ב-Ethereum blockchain בלבד, בסכום כולל של 70 אלף דולר של עמלות גנובות.

קח אותי לפרטים הטכניים.

Web3 הוא חזון יוצא דופן ומהפכני עבור ה-World Wide Web שמציע לנו הרבה אפשרויות חדשות. עם זאת, כמו כל דבר חדש, זה מגיע עם צדדים טובים ורעים והמלחמה המפורסמת בין כובעים לבנים לשחורים לא חוסכת ב-web3. ללא ספק, web3 הפך למגרש המשחקים החדש להאקרים.

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

מה זה Connext?

Connext היא פלטפורמה המבוססת על Ethereum blockchain המאפשרת למשתמשים לבצע עסקאות ברשתות שונות תואמות Ethereum. Connext משיגה את תפקידה ללא שימוש בכל אימות מחוץ לשרשרת. זה עובד באמצעות פרוטוקול העברת Xchain ללא משמורת (NXTP) עבור העברות צולבות שרשרת.

Connext Architecture

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

בכל פעם שמישהו מעביר כסף מבלוקצ'יין אחד לאחר מתרחשים שלושה שלבים:

  1. בחירת מסלול: משתמשים בוחרים את הרשתות והנכסים ומתחילים במכירה פומבית עם פרטי ההעברה. נתבים מציעים להשלים את ההעברה בטווח זמן/מחיר.
  2. הכן: משתמשים שולחים עסקה לחוזי NXTP בשרשרת השליחה. עם ראיית אירוע החוזה, נתבים נועלים נזילות בשרשרת המקבלת.
  3. לְמַלֵא: משתמשים מספקים חתימה כדי לפתוח כספים בשרשרת המקבלת, ונתבים משתמשים בחתימה שנחשפה כדי לתבוע את הנזילות בשרשרת השולחת.

מה זה חזיתי?

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

Mempool היא קבוצה של עסקאות Ethereum ששודרו לרשת וממתינות לארוז בבלוקים. זוהי הנחת היסוד ליישום של ריצה קדמית.

הבוט הקדמי מנתח ומוצא מטרות שניתן לתקוף על ידי סריקה מתמשכת של עסקאות ממתינות ב-Mempool.

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

הפרטים הטכניים

לנתבים יש שני מקורות הכנסה: עמלות המכרז ו דמי הגשת ממסר.

כפי שהוסבר ב אקדמיית קונקסט:

עמלות המכרז

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

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

דמי הגשת ממסר

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

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

במהלך המחקר שלנו, גילינו כי לְמַלֵא פונקציה ב TransactionManager.sol החוזה חסר מנגנון אימות מסוים, המאפשר לתוקף MEV להריץ חזיתית את העסקה של ממסר ולגנוב את העסקה שלו. עמלות ממסר.

תוקפי MEV יכולים לחפש עסקאות ממתינות ב-Mempool שקוראות ל- לְמַלֵא פונקציה ב TransactionManager חוֹזֶה. לאחר מכן הם יכולים לבצע מתקפת עקירה על ידי הגשת אותה עסקה ל-Mempool אך עם עמלת גז גבוהה יותר. זה עוקף את אמצעי האימות הקיימים כעת, שכן התוקף פשוט מעתיק את העסקה, כולל חתימתה.

הפגיעות מאחורי התקפה זו מקורה בשגיאה לוגית ב- TransactionManager.sol:842.

LibAsset.transferAsset(txData.receivingAssetId, payable(msg.sender), relayerFee);

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

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

ההשפעה

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

ללא עמלות רווחיות מספיק, ממסרים עשויים להפסיק לספק את השירות שלהם, מה שעם הזמן עלול למנוע מפרוטוקול NXTP לפעול.

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

מאז הפריסה שלו, מצאנו יותר מאלף התקפות מוצלחות על TransactionManager.sol חוֹזֶה. דוגמה אחת כזו כוללת:

עסקת תוקף:

  1. https://etherscan.io/tx/0xfeedceaa9be3c8bffc1519ec612d2797d63de63bb22aced0e9eb2635d57f2985
  2. https://ethtx.info/mainnet/0xfeedceaa9be3c8bffc1519ec612d2797d63de63bb22aced0e9eb2635d57f2985/

עסקת קורבן:

  1. https://etherscan.io/tx/0x08b17148c1239a80d7ceead53e888b88fadb0239446b90cf280c0e9cd7b42dff
  2. https://ethtx.info/mainnet/0x08b17148c1239a80d7ceead53e888b88fadb0239446b90cf280c0e9cd7b42dff/

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

הצוות שלנו העריך את הסכום הכולל של עמלות שנלקחו, ב-Ethereum blockchain בלבד, הוא בערך 70 אלף דולר.

דווח

דיווחנו על פגיעות זו ל-Connext באמצעות פלטפורמת הבאונטי Immunefi. לאחר חילופי דברים ממושכים, Connext אמרה לנו שזו לא פגיעות וכי "זה בתכנון".

הנה תשובתם האחרונה:

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

נכתב על ידי
אביגדור ששון כהן

אביגדור הוא חוקר אבטחה web3 ב-Sayfer. הוא נלהב מטכנולוגיות בלוקצ'יין חדשות וכיצד נוכל לוודא שאנו מפתחים אותן בצורה מאובטחת.

 

עבור לתוכן