CVE-2026-55894
ŚrednieCVSS 6.8Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 4 - wyżej niż 4% wszystkich znanych CVE
Streszczenie
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.
Ocena ryzyka
Podatność może prowadzić do awarii aplikacji (odmowa usługi) w wyniku błędu segmentacji. Brak dowodów na zdalne wykonanie kodu, ale stabilność systemu może być zagrożona.
Rekomendacja
Zaktualizuj Capstone do wersji 6.0.0-Alpha10 lub nowszej. Jeśli nie jest to możliwe, unikaj używania trybów SH2A/SH4A z SHFPU na niezaufanych danych.
Inne podatności w Capstone
Zobacz wszystkie- CVE-2026-55893Wysokie
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.
- 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_disassemble() function computes an idx value from a raw 16-bit instruction without ensuring it is within the active mode-specific decode[] function-pointer table. An application using CS_ARCH_SH with CS_MODE_SH2A or CS_MODE_SH4A and CS_MODE_SHFPU can pass crafted bytecode through cs_disasm_iter() or cs_disasm(), causing the decode[idx] test to read outside the table and terminate the process with a segmentation fault. No code execution or information disclosure was demonstrated. This issue is fixed in version 6.0.0-Alpha10.

