רווחים:
- יכולת לזהות דפוסי פגיעות נפוצים כגון כניסה חוזרת, בקרת גישה, מניפולציה של אורקל והרצה קדמית ולסרוק אותם עם כלי ניתוח סטטי + בינה מלאכותית + אנושי
- יכולת להבחין בין חוזקות בינה מלאכותית בהסבר תפוקת הכלים ותעדוף נקודות חיוביות וחולשות שגויות ב-MEV ובלוגיקה עסקית
- הבינו ש'סריקה נקייה' אינה תעודת אבטחה, שסריקה היא רק שכבת שליטה אחת
ראינו את הדיסציפלינה ההוליסטית של אודיטינג ביחידה הקודמת. ביחידה זו, אנו מתמקדים בנושא טכני יותר: סריקת פגיעות - חיפוש שיטתי אחר דפוסי פגיעות ידועים בקוד. כאן נשתמש ב-AI, יחד עם כלי ניתוח סטטי, כעוזר שסורק ומתאר דפוסי פגיעות ידועים. המטרה: להכיר לעומק את הפגיעויות הנפוצות ביותר ולהבחין היכן AI אמין והיכן אינו מספק בסריקתן.
סריקה סטטית ודינמית
הסריקה היא משני סוגים. ניתוח סטטי - בחינת הקוד מבלי להפעילו: כלים כגון Slither ו-Mythril סורקים את קוד החוזה ומדגלים דפוסים ידועים. ניתוח דינמי/סימבולי (הרצת הקוד עם כניסות שונות או חקר אותו מתמטית): פיזור (הפצצה בקלט אקראי) וביצוע סימבולי (חקירת כל הנתיבים האפשריים) נכנסים לקבוצה זו.
בינה מלאכותית אינה מחליפה את הכלים הללו, היא משלימה אותם: כאשר הרכב מוציא אזהרה, בינה מלאכותית מסבירה את האזהרה בשפה פשוטה; בינה מלאכותית יכולה להזכיר כאשר הכלי מחמיץ דפוס; אבל בינה מלאכותית לבדה לא יכולה להבטיח כמה היא סורקת. זרימת העבודה הנכונה: כלי + AI + אנושי.
טיפ: תן ל-AI את הפלט של כלי ניתוח סטטי (למשל, דוח Slither) ושאל "הסביר כל התראה בשפה פשוטה, מהם הסיכונים האמיתיים ואיזה יכול להיות חיובי כוזב?" לִשְׁאוֹל. בינה מלאכותית חשובה לאין ערוך בהפיכת פלט הכלים הגולמי למובנה ולתעדוף לבני אדם.
דפוסי הפגיעות הנפוצים ביותר
1. כניסה חוזרת. אם פונקציה קוראת לחוזה חיצוני מבלי לעדכן את מצבו, החוזה שנקרא יכול לחזור אחורה, להפעיל שוב את אותה פונקציה ולמשוך את הקרן מספר פעמים. פתרון: סדר בדיקות-אפקטים-אינטראקציות ושמירה על כניסה חוזרת.
2. חוסר בקרת כניסה. פונקציה קריטית (משיכה, נסיגה, שדרוג) מתפרסמת בטעות. זו אחת הטעויות הנפוצות והיקרות ביותר.
3. מניפולציה של אורקל. הסתמכות עיוורת של החוזה על מקור מחיר חיצוני (אורקל). התוקף מתמרן את המחיר באופן מיידי ומרמה את הפרוטוקול. פתרון: מחיר ממוצע משוקלל בזמן (TWAP), ריבוי מקורות.
4. הצפה/ירידה של מספר שלם. כאשר מספר חורג מהערך המרבי המותר וחוזר להתחלה. Modern Solidity תופס את רובו אוטומטית, אבל הסיכון נשאר בקוד (הרכבה) ברמה נמוכה.
5. חזית. עסקאות מופיעות במאגר הציבורי (ממפול) לפני אישורן; התוקף יכול לראות את העסקה שלך ולהכניס את העסקה שלו לפניה. MEV (Maximal Extractable Value - הערך המופק מרצף העסקאות) הוא השם הכללי של נושא זה.
6. מניעת שירות (DoS). לולאה הופכת יקרה מדי והופכת את הפונקציה ללא שמישה, או תלות בכתובת נעולה.
7. סיכוני שדרוג. התנגשות אחסון וניצול לרעה של סמכות בחוזים הניתנים לשדרוג.
פגיעות
אמון בסריקת AI
למה
כניסה חוזרת
גבוה
תבנית ידועה וברורה
בקרת גישה
גבוה
ניתן לסרוק עובש
פעולות מספר שלם
גבוה
בקרה סטנדרטית
מניפולציה של אורקל
בינוני
דורש הקשר
חזית/MEV
בינוני-נמוך
פרוטוקול ספציפי
שגיאת לוגיקה עסקית
נמוך
אותנטי, הקשרי
הנחיה חלשה / הנחיה חזקה
הנחיה חלשה:
האם יש פרצה בקוד הזה?
הנחיה עוצמתית:
תפקידך: עוזר מיון בטחוני. סרוק את החוזה שלהלן עבור הדפוסים הידועים הבאים ו"בסיכון/לא/לא בטוח" עבור כל אחד מהם: כניסה חוזרת, בקרת גישה, פעולות שלמים, תלות באורקל, ריצה קדמית, DoS, אבטחת שדרוג. קשר כל קביעה לקו הרלוונטי והסבר מדוע קיים סיכון. אלו הן השערות שיאומתו עם כלי ניתוח סטטי ומבקר. שים לב שיכולות להיות תוצאות חיוביות שגויות.
ארבע תבניות הניתנות להעתקה
1) תיאור פלט הכלי:
להלן הדוח של כלי ניתוח סטטי (Slither). הסבירו כל התראה בשפה פשוטה: מה המשמעות, האם מדובר בסיכון ממשי או חיובי כוזב אפשרי, מה צריכה להיות העדיפות שלה? אל תקבל החלטה נחרצת; תעדוף לאישור מבקר.
2) סינון ממוקד כניסה חוזר:
מצא את כל הפונקציות שמבצעות שיחות חיצוניות בחוזה זה. בדקו האם מתבצע סדר הבדיקות-השפעות-אינטראקציות עבור כל אחד מהם והאם קיים שומר כניסה חוזר. הראה את המסוכנים עם קו. סמן אם אינך בטוח; יצירת קוד ניצול.
3) מפת בקרת גישה:
רשום את כל הפונקציות החיצוניות/ציבוריות בחוזה זה וציין "מי יכול להתקשר" (כל אחד/בעלים/תפקיד) לכל אחד. בצע פעולות קריטיות (נסיגה, הדפסה, שדרוג) וסמן אותן עם בקרת גישה חלשה. הציגו אותו עם שולחן.
4) חיסול חיובי כוזב:
שקול מדוע אזהרת סריקה זו עשויה להיות לא סיכון אמיתי (חיובי שגוי): איזה הקשר או מצב קוד יבטל את תוקף האזהרה הזו? אבל אל תגיד "אין שום בעיה"; רשום את הנקודות שצריכות אישור.
שלושה מארזים קטנים (במספרים)
מקרה 1 - יעילות רכב + AI הכפילה את עצמה. צוות אחד הפעיל את Slither בפרויקט של 12 חוזים וקיבל 140 אזהרות. לאחר שקבלנו את הבינה המלאכותית להסביר ולתעדף את ההתראות, התברר ש-95 מתוך 140 ההתראות היו חיוביות שגויות; הצוות התמקד ב-45 מועמדים אמיתיים. זמן הניסוי ירד מיומיים ל-5 שעות. לקח: בינה מלאכותית חזקה בהאנשת תפוקת הרכב.
מקרה 2 - בינה מלאכותית חטפה את MEV. בחוזה DEX (בורסה מבוזרת), ה-AI מצא את הדפוסים הסטנדרטיים נקיים אך לא הצליח לזהות פגיעות קדמית; כי זה היה ספציפי לסדר הפעולות של הפרוטוקול. מבקר אנושי וסימולציה נלכדה. לקח: סיכונים ספציפיים לפרוטוקול כמו MEV/פרונט ריצה הם התחום החלש של AI.
מקרה 3 - הימנעות מבזבוז זמן על חיובי כוזב. מהצוות נחסך שכתוב מיותר כאשר הבינה המלאכותית הסבירה שאזהרת כניסה חוזרת היא למעשה חיובי כוזב (הפונקציה כבר נשמרה). אבל הצוות עדיין אישר זאת בבדיקה אחת. שיעור: AI קובע עדיפויות; האישור מגיע שוב עם הבדיקה.
מגבלות סריקה
הסריקה מוצאת דפוסים ידועים. לא הכלי ולא ה-AI מובטח לזהות פגיעות חדשה, ייחודית או ספציפית לפרוטוקול. לכן, המיון הוא חלק מהביקורת; לא את עצמו. הרעיון ש"הסריקה נקייה, אז זה אומר שהיא בטוחה" היא אחת התפיסות השגויות המסוכנות ביותר בתחום זה. חפירה אוספת את הפירות התלויים הנמוכים; עבור סיכונים עמוקים וייחודיים, מומחיות אנושית, בדיקות, טשטוש וביקורת רשמית חיוניים.
זהירות: דוח "נקי" של כלי סריקה או AI אינו תעודת אבטחה. הצגתו כך - במיוחד למשקיעים - היא מטעה ולא אתית.
טעויות נפוצות
- החלפת מיון לבדיקה. סריקה היא שכבה אחת, לא כולה.
- שימוש בבינה מלאכותית ללא כלים. ניתוח סטטי + AI + עבודה משותפת.
- ביטול תוצאות חיוביות כוזבות ללא אישור. כל מסך נבדק/אומת באופן אנושי.
- עקיפת סיכונים ספציפיים לפרוטוקול (MEV) על ידי הסתמכות על AI. האזור החלש של AI.
- חושבים "סריקה נקייה" = "בטוחה". זה לא יכול למצוא את הלא נודע.
- יצירת קוד ניצול. רק תיאור סיכון הגנתי הוא לגיטימי.
לסיכום
- סריקת פגיעות מחפשת דפוסי פגיעות ידועים עם רכב + AI + אדם.
- AI רב עוצמה בהסבר ותעדוף פלט של כלי ניתוח סטטי.
- אמין בדפוסים ברורים כגון כניסה חוזרת ובקרת גישה; חלש ב-MV ובהיגיון עסקי.
- אפילו ביטול חיובים כוזבים דורש אישור.
- "סריקה נקייה" אינה תעודת אבטחה; זה לא תחליף לפיקוח.
משימת יישום
הפעל כלי ניתוח סטטי על חוזה לדוגמה (אם אפשר) או מצא דוח Slither מוכן. החל את ההנחיה "תיאור פלט הכלי" על ה-AI. הערך האם ה-AI: (1) מסביר נכון אזהרות, (2) הגיוני בהבחנה בין תוצאות חיוביות שגויות, ו- (3) מפספס סיכון ספציפי לפרוטוקול. מלא את העמודות "רכב נמצא / AI מוסבר / אושר על ידי אדם" בטבלה.
רשימת בדיקה
- [ ] מיקמתי את הצוהר כשכבה של הבקרה.
- [ ] השתמשתי בכלי ניתוח סטטי + AI + אנושי ביחד.
- [ ] חיפשתי קטגוריה לפי קטגוריה אחר דפוסים ידועים.
- [ ] חיסלתי תוצאות חיוביות כוזבות עם אישור.
- [ ] סמכתי על בני אדם בתחומים חלשים כמו MEV/לוגיקה עסקית.
- [ ] לא הצעתי "ניקוי נקי" כהבטחה.
- [ ] עבדתי רק למטרות הגנה; לא יצרתי מעללים.