Capstone — это каркас для разборки. В версии 6.0.0-Alpha9 и более ранних версиях функция Capstone Arch/SH/SHDisassembler.c sh_disassemble() вычисляет значение idx из необработанной 16-битной инструкции, не гарантируя, что оно находится в таблице указателей функции decode[] для конкретного режима. Приложение, использующее CS_ARCH_SH с CS_MODE_SH2A или CS_MODE_SH4A и CS_MODE_SHFPU, может передавать созданный байт-код через cs_disasm_iter() или cs_disasm(), в результате чего тест decode[idx] считывается за пределами таблицы и завершает процесс с ошибкой сегментации.
Никакого выполнения кода или раскрытия информации не было продемонстрировано. Эта проблема исправлена в версии 6.0.0-Alpha10.
Показать оригинальное описание (EN)
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.
Характеристики атаки
Последствия
Строка CVSS v4.0