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

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

ניתוח של נוהלי אבטחת חוזים חכמים על ידי מפתחים PlatoBlockchain Data Intelligence. חיפוש אנכי. איי.

זמן קריאה: 5 דקות

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

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

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

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

מהן פגיעויות בחוזה חכם

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

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

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

כלי אבטחת חוזים חכמים

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

כלים חכמים לבדיקת חוזים: פותחו מספר כלים כדי לנתח את קוד המקור של החוזה ולסרוק בעיות אבטחה ידועות כגון כניסה מחדש, הצפת יתר וכו'. חלק מהכלים הנפוצים ביותר הם Oyente, Maian, MadMax ו-Vandal. 

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

ביקורת קוד: ביקורת חוזים חכמים עוזרת להפחית סיכונים הקשורים ל-dAapp. עדיף לבצע ביקורות חוזים חכמות כאשר החוזים נמצאים בשלב הבדיקות. כמה כלים המשמשים לביקורת הם סוריה, מיתריל, ו-MythX. בעוד שביקורת אוטומטית אינה מספיקה כדי להפחית סיכונים הקשורים בחוזים, מומלץ לבצע ביקורות ידניות של צד שלישי מחברה אמינה כמו QuillAudits. במהלך ביקורת, נקודות תורפה מתגלות בשלוש דרכים עיקריות:

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

פיתוח חוזה חכם מאובטח

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

תובנות אבטחת חוזים חכמים

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

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

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

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

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

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

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

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

סיכום

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

14 צפיות

בול זמן:

עוד מ קווילהש