זמן קריאה: 5 דקות
עולם ה-Web3 הוא עולם של פרוטוקולים ותקנים. בטח נתקלת בכמה תקני ERC. חלק מתקני ה-ERC המפורסמים ביותר הם 20 ו-721, שהם עבור אסימונים ו-NFT, בהתאמה. אבל Web3 לא מוגבל לזה.
אנו רואים עדכונים ושדרוגים קבועים ב-Web3. אחד השדרוגים האחרונים היה ERC 4337, שנפרס על Ethereum Mainnet במרץ 2023. לא כל עדכון מצליח במכה אחת; אותו הדבר נכון עם ERC 4337. בבלוג זה נלמד על נקודות תורפה בנוגע לסעיף תפעול משתמש בתקן והשפעתם. ראשית נתחיל עם מבוא קצר לתקן ERC 4337.
מהו ERC 4337?
בניגוד לרשת של ביטקוין, Ethereum תומך בחוזים חכמים בשרשרת, מה שגורם ל-Ethereum להיות בעל שני סוגים שונים של חשבונות, אחד עסקה או חשבון תפעולי. בנוסף לכך, לחוזים חכמים יש שטח משלהם, כמעט כמו חשבון. לשני סוגי החשבונות הללו ב-Ethereum יש פונקציות משלהם.
רוב הארנקים הפועלים עם Ethereum הם של EOA, כלומר החשבונות של המשתמש, לא החשבונות החכמים. לחשבונות מסוג זה יש מגבלות משלהם. מגבלה אחת כוללת את ההסתמכות הבלעדית של המשתמש על המפתחות הפרטיים כדי לגשת לחשבונות ודרישת כל החתימות לעסקאות. מגבלות אלו הובילו להצגת ERC 4337.
ה-ERC 4337 מנסה לספק הפשטת חשבון על ידי שילוב הטוב ביותר מבין שני התכונות מסוג חשבון. כן, חשבונות EOA וחוזה חכם. זה מתאפשר על ידי חוזה יחיד שיכול לבצע טרנזקציות וליצור חוזים בו זמנית, ו-ERC 4337 הוא תקן המאפשר את ההתקדמות החדשה והמדהימה הזו.
פגיעות אריזה ב-UserOperation?
הכל בסטנדרט ובפרויקט הזה מדהים, אבל מה השתבש? ובכן, הייתה בעיית יישום שהביאה ל-hash לא עקבי על סמך השיטה שבה השתמשו לחתימה. זה הוביל להתנגשויות סדר, במיוחד גיבובים שונים עבור אותן UserOperations ו-hash מתנגשים עבור UserOperations שונים.
האזורים המושפעים הוגבלו לשתי נקודות תורפה, פגיעות אריזה של EntryPoint ופגיעות אריזה של VerifyingPaymaster. עוד על כך בהמשך. תחילה נבין כללית, ולאחר מכן נלמד עליהם בנפרד.
בואו נסתכל על UserOperation.sol:-
אתה רואה את הפרמטר UserOperation, Calldata, מועבר כארגומנט לפונקציית pack. בואו נחקור את המבנה:-
אלו הם השדות שמבנה UserOperation נושא. כדי להעתיק את החלק הגדול הזה של נתוני ה-Call לזיכרון, מקטעי הקוד משתמשים ב-assembly. שיטות מסוימות של החוזים מתכוונות ללכוד את כל השדות של UserOperation, כולל שדות בגודל משתנה, הנקראים גם שדות דינמיים בקידוד ABI. לדוגמה, הקידוד הדינמי במבנה זה הוא 'initCode', 'callData' ו-'paymasterAndData'.
שיטות מסוימות אינן יכולות לכלול 'paymasterAndData' מכיוון ששדה זה עדיין לא הוגדר או הוצהר. שיטות משתמשות בשדה הנוחות '.offset' המסופק לסוגי נתונים דינמיים כדי לעשות זאת. אבל החוזים המשתמשים בארגומנטים מקודדים ב-ABI אינם מאמתים את סדר הגדרת השדות ואת תקפות הקיזוזים. אפשר לבנות ייצוג חוקי של פעולות המשתמש ב-Calldata עם מאפייני hash יוצאי דופן.
פגיעות אריזת EntryPoint
הבעיה ב-UserOperation משפיעה גם על חלק מהחלקים האחרים של התקן, פגיעות של EntryPoint Packing היא אחת מאלה. כאשר נעשה שימוש בסכימת גיבוב שונה בין חוזה ה-EntryPoint והארנק או בקידוד פעולת משתמש לא סטנדרטי, אנו רואים סטייה מ-hash.
הסיכון מופיע כ-EntryPoint. כעת פעולת משתמש יחידה יכולה להיות מיוצגת על ידי מספר 'hashs' של משתמש, ואותו 'hash של משתמש פעולות' יכול לייצג מספר פעולות משתמש. עכשיו זה יכול ליצור כמה אפקטים לא רצויים. בואו נדון בהשפעה שיכולה להיות לזה.
ה-Erc 4337 עדיין בשלב מוקדם מאוד, מכיוון שהוא שוחרר רק במרץ, כך שההשפעה של נקודות תורפה אלו אינה ידועה במלואה. קשה לתאר את ההשפעה הפוטנציאלית ממעוף הציפור. מעבר לכך, ההשפעה תלויה בהטמעת חבילות, אינדקס, חוקרי פעולות משתמשים ושירותים אחרים מחוץ לרשת. בואו נסתכל על כמה מהבעיות שהפגיעות הזו גורמת.
- זה יכול לגרום לחוויה מבלבלת עבור המשתמש מכיוון שה-hash של פעולת המשתמש יכול להשתנות בין זמן ההגשה לזמן ההכללה. תופעה זו אינה ידועה לרוב הארנקים, כך שהם עשויים שלא להסביר את ההבדל הזה.
- ניתן לשנות ולעצב את הארנקים כך שיימנעו בכוונה מאינדקס על ידי הגדרת כל ה-hashs של פעולות המשתמש להיות זהים.
- אנו יכולים לראות טיפול לא נכון בנתונים ובמפתחות אם שירות מחוץ לשרשרת המנטר את הכללת פעולת המשתמש מחמיץ את הכללת פעולת משתמש נתונה.
אימות פגיעות אריזה של Paymaster
אף אחד לא אוהב להזמין משהו מקניות מקוונות ולקבל מוצר אחר לגמרי. כך גם ב-Web3, אבל פגיעות זו פוגעת בחוויית המשתמש. ייתכן שמשתמש שינה או שונה תוכן בין מועד החתימה לבין ההכללה בשרשרת. והסיבה שבגללה זה קורה היא ששתי פעולות משתמש שונות מחזירות את אותו hash מהפונקציה 'VerifyingPaymaster.getHash()'.
הפונקציה VerifyingPaymaster.getHash() לוקחת כמה ארגומנטים כמו 'UserOperation', שהוא struct, 'validUnitl', ערך uint48 וערך uint48 אחר. סוגיית התכנים השונים בין זמן החתימה לזמן ההכללה משפיעה על חווית המשתמש והאבטחה הכללית. בואו נדון בכמה מהחששות שהוא מעלה.
- חותמים מחוץ לרשת החותמים בפורמט מקודד ABI לאחר קבלת פעולות משתמש או חותמים עם שילובי חוזים כדי להכין נתונים לחתימה הופכים לפגיעים.
- ניתן לשנות את ה-hash כך שיכסה פחות אלמנטים מהצפוי, מה שעלול להוביל לכך שחלק מהשדות הסטטיים, כמו initCode וכו', יוחרגו מה-hash. הדבר עלול לגרום לשימוש שונה מזה המיועד לחתימת החסות של מנהל התשלום.
- אנו יכולים לראות הפרה ועקיפה של הכללים על ידי שינוי ה-userOp.initCode ו-userOp.callData לאחר קבלת חתימה. זה יאפשר להשתמש באסימון המקורי של מנהל התשלום למטרות אחרות מלבד הטבעת NFT ללא גז.
סיכום
עם ההתקדמות והפיתוח המתמשכים, נהיה עדים להרבה דברים מדהימים, ו-ERC 4337 הוא אחד מהם. בעוד שפיתוח וקידום אבטחה הוא דבר שלעולם לא נוכל להתפשר עליו. מדהים לציין באיזו מהירות נמצאו הפגיעות בתקן, ומתבצעים מחקר ופיתוח מתמשכים כדי לאבטח אותו.
חשוב לציין שגם חלק מהארגונים הגדולים והידועים ביותר שנבנים ב-Web3 יכולים לעשות טעויות הקשורות לאבטחה, ובוודאי שגם הפרוטוקולים האחרים עושים אותן. העלייה המתמשכת פנימה תקריות Web3 בשנים האחרונות ניכר.
הפתרון האחד להגן עליך, על המשתמשים שלך והפרוטוקול שלך מפני איומי אבטחה כאלה עומד לביקורת. אנחנו QuillAudits, הם אחד מספקי השירות המובילים בביקורת חוזים חכמים ואבטחת בלוקצ'יין, בקר באתר האינטרנט שלנו כדי לברר יותר ולהבטיח את אבטחת הפרויקט שלך. והישארו מעודכנים כדי ליהנות מעוד בלוגים אינפורמטיביים כאלה
34 צפיות
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- Platoblockchain. Web3 Metaverse Intelligence. ידע מוגבר. גישה כאן.
- הטבעת העתיד עם אדריאן אשלי. גישה כאן.
- מקור: https://blog.quillhash.com/2023/04/24/understanding-erc-4337-user-operation-packing-vulnerability/
- :הוא
- :לֹא
- 20
- 2023
- a
- אודות
- גישה
- חֶשְׁבּוֹן
- הפשטת חשבון
- חשבונות
- לרוחב
- תוספת
- קידום
- לאחר
- תעשיות
- גם
- שיניתי
- an
- ו
- אחר
- ARE
- טענה
- טיעונים
- AS
- עצרת
- At
- ניסיונות
- בדיקה
- ביקורת
- מבוסס
- BE
- כי
- להיות
- להיות
- הטוב ביותר
- בֵּין
- הגדול ביותר
- blockchain
- אבטחת Blockchain
- בלוג
- הפרה
- בִּניָן
- אבל
- by
- נקרא
- CAN
- לא יכול
- ללכוד
- לגרום
- גורמים
- שרשרת
- שינוי
- משתנה
- קוד
- שילוב
- איך
- פשרה
- דאגות
- מבלבל
- לבנות
- תוכן
- רציף
- חוזה
- חוזים
- נוחות
- יכול
- לכסות
- לִיצוֹר
- נתונים
- מוגדר
- תלוי
- פרס
- לתאר
- מעוצב
- מתפתח
- צעצועי התפתחות
- הבדל
- אחר
- לדון
- הסתעפות
- do
- דינמי
- מוקדם
- בשלב מוקדם
- תופעות
- אלמנטים
- להנות
- לַחֲלוּטִין
- ERC-4337
- וכו '
- ethereum
- ETHEREUM MAINNET
- אֲפִילוּ
- כל
- דוגמה
- נשלל
- צפוי
- ניסיון
- לחקור
- הסיירים
- עין
- הקלה
- מפורסם
- תכונות
- מעטים
- שדה
- שדות
- ראשון
- בעד
- פוּרמָט
- מצא
- החל מ-
- לגמרי
- פונקציה
- פונקציות
- תִפקוּד
- כללי
- לקבל
- מקבל
- נתן
- Go
- הולך
- קורה
- קשה
- שירים
- has has
- יש
- איך
- HTTPS
- פְּגִיעָה
- השפעות
- הפעלה
- יישום
- חשוב
- in
- לכלול
- כולל
- כולל
- הַכלָלָה
- בנפרד
- אִינפוֹרמָטִיבִי
- ואינטגרציות
- בכוונת
- בכוונה
- אל תוך
- מבוא
- סוגיה
- בעיות
- IT
- רק
- מפתחות
- ידוע
- גָדוֹל
- אחרון
- האחרון
- עוֹפֶרֶת
- לִלמוֹד
- כמו
- הגבלה
- מגבלות
- מוגבל
- נראה
- עשוי
- mainnet
- לעשות
- עושה
- רב
- צעדה
- max-width
- מאי..
- אומר
- זכרון
- שיטה
- שיטות
- יכול
- טביעה
- טיפול לא נכון
- מתגעגע
- טעויות
- שונים
- ניטור
- יותר
- רוב
- מספר
- יליד
- אסימון יליד
- רשת
- חדש
- NFT
- עַכשָׁיו
- of
- on
- ONE
- באינטרנט
- קניות באינטרנט
- OP
- מבצע
- מבצעי
- תפעול
- or
- להזמין
- ארגונים
- אחר
- פרוטוקולים אחרים
- שלנו
- יותר
- מקיף
- שֶׁלוֹ
- חבילה
- פרמטר
- במיוחד
- חלקים
- עבר
- תופעה
- אפלטון
- מודיעין אפלטון
- אפלטון נתונים
- אפשרי
- פוטנציאל
- להכין
- פְּרָטִי
- מפתחות פרטיים
- המוצר
- פּרוֹיֶקט
- נכסים
- להגן
- פרוטוקול
- פרוטוקולים
- לספק
- ובלבד
- ספקים
- למטרות
- מהירות
- קווילהש
- מעלה
- טעם
- קבלה
- בדבר
- אזורים
- רגיל
- שוחרר
- הסתמכות
- לייצג
- נציגות
- מיוצג
- מחקר
- מחקר ופיתוח
- תוצאה
- לַחֲזוֹר
- לעלות
- הסיכון
- כללי
- אותו
- תכנית
- סעיף
- לבטח
- מְאוּבטָח
- אבטחה
- איומים ביטחוניים
- לִרְאוֹת
- מגזרים
- שרות
- ספקי שירות
- שירותים
- הצבה
- כמה
- קניות
- סִימָן
- חתימות
- חתימה
- בו זמנית
- יחיד
- חכם
- חוזה חכם
- חוזים חכמים
- So
- סול
- פִּתָרוֹן
- כמה
- משהו
- מֶרחָב
- חָסוּת
- התמחות
- תֶקֶן
- תקנים
- התחלה
- להשאר
- עוד
- כְּנִיעָה
- מוצלח
- כזה
- תומך
- בוודאי
- לוקח
- מֵאֲשֶׁר
- זֶה
- השמיים
- שֶׁלָהֶם
- אותם
- שם.
- אלה
- הֵם
- דברים
- זֶה
- אלה
- איומים
- זמן
- ל
- אסימון
- מטבעות
- גַם
- חלק עליון
- עסקה
- טרנזקציות
- עסקות
- נָכוֹן
- סוגים
- הבנה
- לא רצוי
- עדכון
- עדכונים
- שדרוגים
- להשתמש
- מְשׁוּמָשׁ
- משתמש
- חוויית משתמש
- משתמשים
- לְאַמֵת
- ערך
- מאוד
- לצפיה
- לְבַקֵר
- פגיעויות
- פגיעות
- פגיע
- ארנק
- ארנקים
- היה
- we
- Web3
- אתר
- טוֹב
- מוכר
- היו
- מה
- מתי
- אשר
- בזמן
- למה
- יצטרך
- עם
- עד
- עוֹלָם
- טעות
- שנים
- אתה
- זפירנט