התקפות מניעת שירות על חוזים חכמים: כיצד לתקן ולהימנע (מדריך מומחה) מודיעין נתונים של PlatoBlockchain. חיפוש אנכי. איי.

התקפות מניעת שירות על חוזים חכמים: כיצד לתקן ולהימנע (מדריך מומחה)

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

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

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

בואו ניכנס במהירות ונחקור את כולם. 

מהי התקפת DoS?

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

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

מניעת שירות מבוזרת (DDoS)

מניעת שירות מבוזרת (DDoS) היא התקפת DoS הכוללת את התוקף השולט במספר מכשירים כדי להפעיל מתקפה על צומת המטרה.

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

יעדי התקפות DoS במערכת האקולוגית של בלוקצ'יין

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

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

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

לדוגמה: פלטפורמת החלפת ביטקוין, Bifinex ספגו התקפות DDoS מספר פעמים. 

מאגרי זיכרון (עסקאות): עסקאות בבלוקצ'יין דורשות אימות לפני שהן מתווספות לבלוקים. עד אז, בקשות העסקאות מאוחסנות ב-mempool, שהוא כמו מאגר של עסקאות לא מאושרות הממתינות לאיסוף על ידי כורה. 

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

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

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

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

התקפות DoS מבוצעות עליהם במספר דרכים אפשריות, המפורטות בסעיף הבא.

ניתוח סוגי התקפות DoS של חוזים חכמים 

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

להלן הסיווג של מתקפות DoS שונות בחוזים חכמים

החזר DoS לא צפוי

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

contract Auction {
    address frontRunner;
    uint256 highestBid;

    function bid() public payable {
        require(msg.value > highestBid, "Need to be higher than highest bid");
        // Refund the old leader, if it fails then revert   
        require(payable(frontRunner).send(highestBid), "Failed to send Ether");
 
        frontRunner = msg.sender;
        highestBid = msg.value;
    }
}

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

import "./Auction.sol";   
contract Attacker{
    Auction auction;

    constructor(Auction _auctionaddr){
        auction = Auction(_auctionaddr);
    }

    function attack (){
        auction.bid{value: msg.value}();
    }

}

הסיבה לכך היא שחוזה ה-'תוקף' אינו כולל פונקציית 'receive()' או נפילה כלשהי להחזרת Ether, וכתוצאה מכך החזרה בלתי צפויה. זה הופך את התוקף לחוזה להיות בעל ההצעה הגבוהה ביותר תמיד. 

חסימת גז מגבלת DoS 

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

Gas Limit DoS - תפעול חוזה בלתי מוגבל

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

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

struct Payee {
    address addr;
    uint256 value;
}

Payee[] payees;
uint256 nextPayeeIndex;

function payOut() {
    uint256 i = nextPayeeIndex;
    while (i < payees.length && msg.gas > 200000) {
      payees[i].addr.send(payees[i].value);
      i++;
    }
    nextPayeeIndex = i;
}

לכן, יש לשקול את השלבים הדרושים בעת יישום לולאה על מערך. 

מלית בלוק

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

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

פעולת בעלים

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

השפעת מתקפת DoS

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

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

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

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

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

רסן חוזים חכמים מפני התקפות DoS 

מניתוח התקפות DoS, ניתן להשתמש בדרכים הבאות כדי למתן את המתקפה. 

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

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

הערה מסכמת

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

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

היזהרו לערוץ הטלגרם שלנו כדי לאסוף את התובנות העדכניות ביותר על השירותים שלנו: https://t.me/quillhash

13 צפיות

בול זמן:

עוד מ קווילהש