Các cuộc tấn công từ chối dịch vụ trên hợp đồng thông minh: Cách khắc phục và tránh (Hướng dẫn của chuyên gia) Trí thông minh dữ liệu PlatoBlockchain. Tìm kiếm dọc. Ái.

Các cuộc tấn công từ chối dịch vụ trên hợp đồng thông minh: Cách khắc phục và tránh (Hướng dẫn dành cho chuyên gia)

Thơi gian đọc: 6 phút

Bạn đã bao giờ truy cập một trang web mất nhiều thời gian tải chỉ để thấy rằng trang web đó không thể mở được vào lúc này? Đó chỉ đơn giản là tất cả về ảnh hưởng của các cuộc tấn công từ chối dịch vụ. 

Tấn công từ chối dịch vụ (DoS) là một trong nhiều lỗ hổng bảo mật thường được chú ý khi kiểm tra các hợp đồng thông minh. Blog này nhằm mục đích khám phá những chi tiết của cuộc tấn công DoS - nó là gì, Tác động của nó, các loại và nhiều thứ khác để bổ sung.

Hãy nhanh chóng vào và khám phá tất cả chúng. 

Tấn công DoS là gì?

Tấn công DoS có ý định làm gián đoạn khả năng xử lý của mạng, máy chủ hoặc ứng dụng, hạn chế việc tiếp nhận các yêu cầu từ người dùng hợp pháp. Trong trường hợp này, kẻ tấn công áp đảo mạng bằng cách gửi thêm lưu lượng truy cập làm cạn kiệt bộ nhớ và băng thông của máy chủ. 

Do tiềm năng to lớn mà blockchain nắm giữ, chúng là mục tiêu chính cho các cuộc tấn công DoS để cướp đi sự giàu có. Các loại tiền điện tử nổi tiếng nhất, chẳng hạn như Bitcoin, Ethereum, v.v., cũng đã trải qua các cuộc tấn công DoS. 

Dịch vụ từ chối phân tán (DDoS)

Từ chối dịch vụ phân tán (DDoS) là một cuộc tấn công DoS liên quan đến việc kẻ tấn công điều khiển nhiều thiết bị để khởi động một cuộc tấn công vào nút mục tiêu.

Kẻ tấn công quan sát nút mục tiêu và chuyển kênh cho nhiều thiết bị dưới sự kiểm soát của mình để gửi một lượng lớn thông tin tràn ngập nút mục tiêu. Điều này làm cho mục tiêu bị sập và không thể hoàn thành nhiệm vụ được chỉ định.  

Mục tiêu của các cuộc tấn công DoS trong Hệ sinh thái Blockchain

Từ các bản ghi về các sự kiện trong quá khứ của các cuộc tấn công DoS, mọi phần của hệ sinh thái blockchain đều dễ bị tấn công DoS. Và để kể tên một số, 

Ví tiền điện tử: Như với bất kỳ loại ví nào, ví tiền điện tử được sử dụng để lưu trữ, gửi hoặc nhận tiền điện tử. Và những ví trực tuyến đó sử dụng hợp đồng thông minh, dễ bị tấn công DoS gây cản trở dịch vụ và tương tác của họ với Dapp. 

Dịch vụ trao đổi tiền điện tử: Nền tảng trực tuyến trong đó tiền điện tử được giao dịch và trao đổi diễn ra giữa những người dùng. Chúng là mục tiêu chính để tin tặc thực hiện các cuộc tấn công DoS gây ra sự không khả dụng của nền tảng và các dịch vụ của nó. 

Ví dụ: nền tảng trao đổi Bitcoin, Bifinex đã bị tấn công DDoS vài lần. 

Nhóm bộ nhớ (giao dịch): Các giao dịch trên blockchain yêu cầu phải được xác thực trước khi chúng được thêm vào các khối. Cho đến lúc đó, các yêu cầu giao dịch được lưu trữ trong mempool, giống như một kho lưu trữ các giao dịch chưa được xác nhận đang chờ người khai thác chọn. 

Giao dịch với mức phí cao rất có thể được người khai thác chọn. Vì vậy, tràn ngập mempool với nhiều giao dịch có phí nhỏ dẫn đến việc người dùng phải trả phí cao để xử lý giao dịch của họ. Vì vậy, cuộc tấn công DoS đã phát huy tác dụng kỳ diệu của nó trong việc tăng phí xử lý. 

Những người tham gia đồng thuận: Họ là những người chơi giải quyết logic và quyết định các khối được thêm vào blockchain. Gây ra các cuộc tấn công DoS vào người lãnh đạo đồng thuận sẽ dừng toàn bộ hệ thống. 

Dịch vụ trộn: Nó sử dụng một giao thức để người dùng thực hiện các giao dịch ẩn danh. Họ phải chịu các cuộc tấn công DoS bằng nhiều cách khác nhau, chẳng hạn như yêu cầu tham gia quá mức vào nhóm trộn, đầu vào không nhất quán cho quá trình xáo trộn, v.v. 

Hợp đồng thông minh: Hợp đồng thông minh là giao thức cơ bản đằng sau mọi giao dịch trên blockchain. Các cuộc tấn công DoS vào các hợp đồng thông minh có thể làm hỏng nút làm ngừng hoạt động của các Dapp do nó lưu trữ.

Các cuộc tấn công DoS được thực hiện trên chúng theo một số cách có thể, được trình bày chi tiết trong phần sau.

Phân tích các loại tấn công DoS hợp đồng thông minh 

Lỗ hổng DoS trong các hợp đồng thông minh dẫn đến việc sử dụng tài nguyên không giới hạn hoặc thao túng hợp đồng. Điều này dẫn đến việc đình chỉ thực hiện các hoạt động bình thường hoặc làm gián đoạn và phá vỡ tính logic của hợp đồng. 

Dưới đây là phân loại các cuộc tấn công DoS khác nhau trong các hợp đồng thông minh

Hoàn nguyên không mong đợi DoS

Để nghiên cứu cuộc tấn công DoS này đối với các hợp đồng thông minh, chúng ta hãy lấy một hợp đồng đấu giá làm ví dụ. Hợp đồng đấu giá được cập nhật với mọi giá thầu cao nhất nhận được và trả lại số tiền giá thầu của người trả giá trước đó vì nó thấp hơn giá thầu hiện tại.

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;
    }
}

Hợp đồng của kẻ tấn công được khởi tạo với hợp đồng đấu giá trong trình tạo, có quyền truy cập vào hợp đồng đấu giá. Trong trường hợp này, bằng cách gọi hàm 'attack ()', kẻ tấn công sẽ khóa số tiền và do đó, nó không thể trả lại số tiền giá thầu cho kẻ tấn công ngay cả khi nhận được giá thầu cao hơn thế. 

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

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

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

}

Đó là vì hợp đồng của 'kẻ tấn công' không bao gồm bất kỳ chức năng 'nhận ()' hoặc dự phòng nào để hoàn lại Ether, dẫn đến việc hoàn nguyên không mong muốn. Điều này làm cho hợp đồng của kẻ tấn công luôn là người trả giá cao nhất. 

Chặn giới hạn khí DoS 

Khối có giới hạn khí tối đa được sử dụng tỷ lệ với khối lượng công việc tính toán phải thực hiện. Trong trường hợp vượt quá giới hạn gas, nó dẫn đến hai loại tấn công DoS.

Gas Limit DoS - Hoạt động hợp đồng không bị ràng buộc

Có một giới hạn gas đã đặt và nếu các giao dịch đạt đến giới hạn gas cao hơn giới hạn đã đặt sẽ dẫn đến giao dịch không thành công. 

Nó thậm chí còn trở nên tồi tệ hơn khi kẻ tấn công thao túng khí cần thiết. Đó là khi kẻ tấn công thêm một vài địa chỉ để được hoàn lại một khoản tiền rất nhỏ. Mỗi lần hoàn lại tốn một khoản phí xăng; do đó, chi phí gas vượt quá giới hạn khiến các giao dịch hoàn tiền không xảy ra. 

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;
}

Do đó, các bước cần thiết phải được xem xét trong khi thực hiện một vòng lặp trên một mảng. 

khối nhồi

Kẻ tấn công bắt đầu cuộc tấn công này để ngăn chặn các giao dịch thêm vào các khối bằng cách gửi các giao dịch tính toán chuyên sâu với giá gas cao. Một số giao dịch được phát hành theo cách tương tự để tiêu thụ toàn bộ hạn mức khí đốt. 

Bằng cách trả phí gas cao, kẻ tấn công đảm bảo rằng chỉ các giao dịch dự định mới được thêm vào các khối, bỏ đi phần còn lại của chúng. 

Hành động của chủ sở hữu

Mọi hợp đồng đều có địa chỉ chủ sở hữu, người có thẩm quyền mở hoặc tạm ngừng giao dịch. Toàn bộ hoạt động phụ thuộc vào địa chỉ của chủ sở hữu, và vì vậy nếu nó bị mất, người dùng hoàn toàn không thể gửi mã thông báo và hoạt động của hợp đồng sẽ sụp đổ.

Tác động của cuộc tấn công DoS

Việc nhồi khối là một trong nhiều tác động ngăn các giao dịch hợp pháp được thêm vào các khối. Tuy nhiên, có một số tác động khác của các cuộc tấn công DoS. 

Sổ cái cồng kềnh: Sổ cái blockchain là nơi các giao dịch được ghi lại vĩnh viễn. Các nút blockchain lưu trữ một bản sao của các giao dịch để xác minh cho việc chi tiêu gấp đôi. Một cuộc tấn công DoS có thể làm đầy sổ cái với các giao dịch spam.

Lưu lượng mạng: Chúng tôi biết các chức năng của blockchain dựa trên chế độ ngang hàng. Mỗi nút trong chuỗi khối đều nhận được một bản sao của giao dịch. DoS bị ngập lụt có thể dẫn đến khối lượng giao dịch lớn, tiêu tốn băng thông mạng. 

Lỗi nút: Các chức năng của chuỗi khối trên các nút yêu cầu sự hỗ trợ của phần mềm để xử lý khối lượng lớn dữ liệu. Trong quá trình ngập lụt giao dịch, các nút có thể hết bộ nhớ, làm tạm dừng các hoạt động.

Sự cố phần mềm: Như chúng ta đã thảo luận, mempool hoặc các khối đi kèm với các giới hạn nhất định về bộ nhớ được cấp cho chúng. Phần mềm nhận, xử lý và lưu trữ các giao dịch trong giới hạn đã đặt. Khi các giao dịch đến vượt quá giới hạn được tích hợp sẵn, phần mềm sẽ bị treo.  

Hạn chế các hợp đồng thông minh khỏi các cuộc tấn công DoS 

Từ việc phân tích các cuộc tấn công DoS, các cách sau có thể được sử dụng để giảm thiểu cuộc tấn công. 

Câu đố: Các máy chủ có thể tạo ra các câu đố như câu đố bộ nhớ, câu đố khóa thời gian, câu đố giới hạn CPU, v.v. Để người dùng có quyền truy cập vào một dịch vụ, các câu đố phải được giải quyết để chống lại các cuộc tấn công spam.

Phương pháp dựa trên phí: Một khoản phí bổ sung có thể được áp dụng đối với blockchain, chẳng hạn như phí khai thác cho các nhóm khai thác, phí giao dịch, v.v. Điều này làm cho việc hack DoS trở nên tốn kém cho những kẻ tấn công, do đó gây ra các cuộc tấn công như vậy. 

Ghi chú kết luận

Kiểm toán hợp đồng thông minh được thực hiện tại QuillAudit tìm kiếm các lỗ hổng tiềm ẩn trong mã hóa. Một số trong số đó bao gồm lỗ hổng lần truy cập gần đây, xung đột lưu trữ, tấn công ngẫu nhiên, Từ chối dịch vụ, v.v. 

Điều này rõ ràng có nghĩa là hợp đồng thông minh được kiểm tra kỹ lưỡng để không có các mối đe dọa tấn công Từ chối Dịch vụ. Điều này đảm bảo dự án của bạn được bảo vệ khỏi các lỗ hổng có thể có của không gian Web3.

Theo dõi kênh Telegram của chúng tôi để thu thập thông tin chi tiết mới nhất về các dịch vụ của chúng tôi: https://t.me/quillhash

13 Lượt xem

Dấu thời gian:

Thêm từ quillhash