CVE-2026-49263
Capstone is a disassembly framework. Prior to version 6.0.0-Alpha9, Capstone's WebAssembly backend accepts attacker-controlled raw WASM instruction bytes through the public `cs_disasm()` and `cs_disasm_iter()` APIs. For a large but well-formed `br_table` instruction, the WASM decoder accumulates the immediate length in a wider local variable but returns it through a `uint16_t` instruction-size path. When the encoded instruction length is exactly 65,536 bytes, the size wraps to zero and `cs_disasm()` can repeatedly decode the same instruction without advancing. For larger lengths, `cs_disasm_iter()` advances into the middle of the `br_table` payload and decodes target bytes as subsequent instructions. This is an availability and parser-integrity issue. Version 6.0.0-Alpha9 patches the issue.
Matched ports (3)
| Port | Package | Version | Status | Maintainer |
|---|---|---|---|---|
| devel/capstone | capstone | 5.0.9 | unaddressed | bofh@FreeBSD.org |
| devel/capstone4 | capstone4 | 4.0.2_1 | unaddressed | oleksii.tsai@gmail.com |
| devel/py-capstone | py312-capstone | 5.0.9_1 | unaddressed | bofh@FreeBSD.org |
Template for a VuXML entry
Range taken from the CVE record, check it before committing. make newentry in security/vuxml creates the vid.
<vuln vid="FIXME (make newentry)">
<topic>FIXME -- FIXME</topic>
<affects>
<package>
<name>capstone</name>
<range><lt>6.0.0-Alpha9</lt></range>
</package>
<package>
<name>capstone4</name>
<range><lt>6.0.0-Alpha9</lt></range>
</package>
<package>
<name>py312-capstone</name>
<range><lt>6.0.0-Alpha9</lt></range>
</package>
</affects>
<description>
<body xmlns="http://www.w3.org/1999/xhtml">
<p>Capstone is a disassembly framework. Prior to version 6.0.0-Alpha9,
Capstone's WebAssembly backend accepts attacker-controlled raw WASM
instruction bytes through the public `cs_disasm()` and
`cs_disasm_iter()` APIs. For a large but well-formed `br_table`
instruction, the WASM decoder accumulates the immediate length in a
wider local variable but returns it through a `uint16_t`
instruction-size path. When the encoded instruction length is exactly
65,536 bytes, the size wraps to zero and `cs_disasm()` can repeatedly
decode the same instruction without advancing. For larger lengths,
`cs_disasm_iter()` advances into the middle of the `br_table` payload
and decodes target bytes as subsequent instructions. This is an
availability and parser-integrity issue. Version 6.0.0-Alpha9 patches
the issue.</p>
</body>
</description>
<references>
<cvename>CVE-2026-49263</cvename>
<url>https://nvd.nist.gov/vuln/detail/CVE-2026-49263</url>
</references>
<dates>
<discovery>2026-08-14</discovery>
<entry>2026-10-26</entry>
</dates>
</vuln>