CVE-2026-55893
WysokieCVSS 7.3Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 4 - wyżej niż 4% wszystkich znanych CVE
Streszczenie
Capstone to framework do deasemblacji. W wersji 6.0.0-Alpha9 i wcześniejszych, dekodery zmiennoprzecinkowe SH (np. opFADD, opFMUL, opFSUB) wywołują set_reg() i set_reg_n() bez sprawdzania rozmiaru tablicy operands[], co prowadzi do przepełnienia sterty o 4 bajty. Może to spowodować awarię procesu lub umożliwić wykonanie kodu. Problem naprawiono w wersji 6.0.0-Alpha10.
Ocena ryzyka
Przetwarzanie specjalnie spreparowanych instrukcji przez Capstone może prowadzić do awarii procesu lub zdalnego wykonania kodu, co stanowi poważne zagrożenie dla aplikacji używających tej biblioteki.
Rekomendacja
Zaktualizuj Capstone do wersji 6.0.0-Alpha10 lub nowszej, która zawiera poprawkę zapobiegającą przepełnieniu sterty.
Inne podatności w Capstone
Zobacz wszystkie- CVE-2026-55894Średnie
Capstone to framework do deasemblacji. W wersjach 6.0.0-Alpha9 i wcześniejszych funkcja sh_disassemble() w arch/SH/SHDisassembler.c oblicza wartość idx z surowej 16-bitowej instrukcji bez sprawdzenia, czy mieści się ona w tabeli wskaźników funkcji decode[] zależnej od trybu. Aplikacja używająca CS_ARCH_SH z CS_MODE_SH2A lub CS_MODE_SH4A oraz CS_MODE_SHFPU może przekazać spreparowany kod przez cs_disasm_iter() lub cs_disasm(), co powoduje odczyt poza tabelą i zakończenie procesu błędem segmentacji. Nie wykazano wykonania kodu ani ujawnienia informacji. Problem naprawiono w wersji 6.0.0-Alpha10.
- CVE-2026-49282Średnie
W Capstone przed wersją 6.0.0-Alpha9, publiczne API cs_insn_name() przekazuje identyfikatory instrukcji do backendów M68K i RISCV bez odpowiednich kontroli zakresu, co może prowadzić do odczytu poza zakresem i awarii procesu.
- CVE-2026-49263Niskie
Capstone to framework do deasemblacji. Przed wersją 6.0.0-Alpha9 backend WebAssembly w Capstone akceptuje sterowane przez atakującego surowe bajty instrukcji WASM przez publiczne API `cs_disasm()` i `cs_disasm_iter()`. Dla dużej, ale dobrze sformowanej instrukcji `br_table`, dekoder WASM gromadzi długość w szerszej zmiennej lokalnej, ale zwraca ją przez ścieżkę rozmiaru instrukcji `uint16_t`. Gdy zakodowana długość instrukcji wynosi dokładnie 65 536 bajtów, rozmiar zawija się do zera i `cs_disasm()` może wielokrotnie dekodować tę samą instrukcję bez przesuwania wskaźnika. Dla większych długości `cs_disasm_iter()` przesuwa się w środek danych `br_table` i dekoduje docelowe bajty jako kolejne instrukcje. Jest to problem dostępności i integralności parsera. Wersja 6.0.0-Alpha9 naprawia ten problem.
- CVE-2026-47143Średnie
Podatność w Capstone przed wersjami 6.0.0-Alpha8 i 5.0.8. W buildach z flagą `-DCAPSTONE_X86_REDUCE` podczas deasemblacji instrukcji 3DNow! (`0F 0F`) dochodzi do dereferencji null pointera w funkcjach `modRMRequired()` i `decode()`, co pozwala zdalnemu atakującemu na crash aplikacji.
Oryginalny opis (angielski, źródło NVD)
Capstone is a disassembly framework. In 6.0.0-Alpha9 and earlier, Capstone's arch/SH/SHDisassembler.c SH floating-point decoders such as opFADD, opFMUL, and opFSUB call set_reg() and set_reg_n() using sh_info.op.op_count without checking the fixed-size operands[] array. Repeated crafted instructions processed through cs_disasm_iter() or cs_disasm() with CS_ARCH_SH, CS_MODE_SH2A or CS_MODE_SH4A, CS_MODE_SHFPU, and CS_OPT_DETAIL can increment the operand count beyond the 176-byte sh_info allocation and perform a four-byte heap buffer overflow write. The corruption can crash the process and may enable code execution depending on heap layout. This issue is fixed in version 6.0.0-Alpha10.

