スマート コントラクトに対するサービス拒否攻撃: 修正および回避する方法 (エキスパート ガイド) PlatoBlockchain Data Intelligence。 垂直検索。 あい。

スマート コントラクトに対するサービス拒否攻撃: 修正および回避する方法 (エキスパート ガイド)

読み取り時間: 6

読み込みに時間がかかり、すぐに開けないサイトにアクセスしたことはありませんか? サービス拒否攻撃の影響はこれだけです。 

サービス拒否 (DoS) 攻撃は、スマート コントラクトを監査する際に主に注目される多くの脆弱性の XNUMX つです。 このブログは、DoS 攻撃の内外を解明することを目的としています。DoS 攻撃とは何か、その影響、種類など、さらに追加する必要があります。

すぐにアクセスして、それらすべてを探索しましょう。 

DoS 攻撃とは

DoS 攻撃は、ネットワーク、サーバー、またはアプリケーションの処理能力を妨害し、正当なユーザーからの要求を受け入れることを抑制します。 これにより、攻撃者は、サーバーのメモリと帯域幅を使い果たすトラフィックをさらに送信して、ネットワークを圧倒します。 

ブロックチェーンが持つ計り知れない可能性により、富を盗むための DoS 攻撃の主な標的となっています。 ビットコインなどの最も有名な暗号通貨は、 Ethereumなども DoS 攻撃を経験しています。 

分散型サービス拒否(DDoS)

分散型サービス拒否 (DDoS) は、攻撃者が複数のデバイスを制御してターゲット ノードに攻撃を仕掛ける DoS 攻撃です。

攻撃者はターゲット ノードを観察し、制御下にある複数のデバイスをチャネルして、ターゲット ノードにフラッディングする大量の情報を送信します。 これにより、ターゲットがクラッシュし、指定されたタスクを実行できなくなります。  

ブロックチェーンエコシステムにおける DoS 攻撃の標的

DoS 攻撃の過去のイベントの記録から、ブロックチェーン エコシステムのあらゆる部分が DoS 攻撃に対して脆弱です。 そして、いくつか例を挙げると、 

暗号通貨ウォレット: 他のウォレットと同様に、暗号通貨ウォレットは暗号通貨を保管、送信、または受信するために使用されます。 また、これらのオンライン ウォレットはスマート コントラクトを使用しているため、サービスや Dapps とのやり取りを妨げる DoS 攻撃を受けやすくなっています。 

暗号通貨交換サービス: 暗号通貨が取引され、ユーザー間で交換が行われるオンライン プラットフォーム。 これらは、ハッカーがプラットフォームとそのサービスを利用できなくする DoS 攻撃を実行するための主要なターゲットです。 

例: ビットコイン交換プラットフォームの Bifinex は、何度か DDoS 攻撃を受けました。 

メモリ (トランザクション) プール: ブロックチェーン上のトランザクションは、ブロックに追加する前に検証する必要があります。 それまでは、トランザクション リクエストは mempool に保存されます。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}();
    }

}

これは、「攻撃者」コントラクトに Ether を返金するための「receive()」またはフォールバック関数が含まれておらず、予期しない復帰が発生したためです。 これにより、攻撃者は常に最高入札者と契約します。 

ブロック ガス制限 DoS 

ブロックには、実行される計算作業の量に比例する、消費されるガスの最大制限があります。 ガス制限を超えると、XNUMX 種類の 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 攻撃の影響

ブロック スタッフィングは、正当なトランザクションがブロックに追加されるのを妨げる多くの影響の XNUMX つです。 ただし、DoS 攻撃の影響は他にもいくつかあります。 

肥大化した元帳: ブロックチェーン台帳は、トランザクションが永続的に記録される場所です。 ブロックチェーン ノードは、トランザクションのコピーを保存して、二重支払いを検証します。 DoS 攻撃は、台帳をスパム トランザクションで肥大化させる可能性があります。

ネットワーク トラフィック: ピアツーピアモードに基づくブロックチェーン機能を知っています。 ブロックチェーン内のすべてのノードは、トランザクションのコピーを受け取ります。 DoS フラッディングにより、大量のトランザクションが発生し、ネットワーク帯域幅が消費される可能性があります。 

ノード障害: 大量のデータを処理するためにソフトウェアのサポートを必要とするノード上のブロックチェーン機能。 トランザクションのフラッディング中に、ノードがメモリ不足になり、操作が停止する場合があります。

ソフトウェアのクラッシュ: 説明したように、mempool またはブロックには、割り当てられるメモリに一定の制限があります。 ソフトウェアは、設定された制限内でトランザクションを受信、処理、および保存します。 着信トランザクションが組み込みの制限を超えると、ソフトウェアがクラッシュします。  

DoS 攻撃からスマート コントラクトを抑制 

DoS 攻撃の分析から、攻撃を軽減するために次の方法を採用できます。 

パズル: サーバーは、メモリ パズル、タイム ロック パズル、CPU バウンド パズルなどのパズルを生成できます。ユーザーがサービスにアクセスするには、パズルを解く必要があり、スパム攻撃に対抗します。

手数料ベースのアプローチ: ブロックチェーンには、マイニング プールのマイニング料金、トランザクション料金などの追加料金が課される可能性があります。これにより、攻撃者にとって DoS ハッキングのコストが高くなり、そのような攻撃を阻止できます。 

おわりに

で行われるスマートコントラクト監査 クイルオーディッツ コーディングに潜む潜在的な脆弱性を探します。 それらのいくつかには、再入可能な脆弱性、ストレージの衝突、ランダム性攻撃、サービス拒否などが含まれます。 

これは明らかに スマート契約 DoS 攻撃の脅威がないことを徹底的にテストします。 これにより、プロジェクトが Web3 空間の潜在的な脆弱性から保護されます。

Telegram チャンネルに注目して、サービスに関する最新の洞察を収集してください。 https://t.me/quillhash

13 ビュー

タイムスタンプ:

より多くの クイルハッシュ