WebAssembly subtype decision errors cause type confusion
V8’s WebAssembly type system mis-decides subtype relations during type canonicalization, custom-descriptor subtyping, or ref.func exactness stamping. Comparisons that drop type-defining bits (mutability, nullability, exactness, indexedness) or that treat runtime-dependent descriptor identity as statically decidable let a value of one type be accepted where another is required. The result is a type confusion that downstream cast elimination and optimization logic trust.
Mechanism
Fix shape
CVEs in this pattern
1 component · V8| CVE | What | Component | Vendor | Severity | Month | |
|---|---|---|---|---|---|---|
| CVE-2025-13226 | TypeConfusion in V8 | V8 | chrome | High | 2025-10 | 🔧 |
| CVE-2025-13227 | TypeConfusion in V8 | V8 | chrome | High | 2025-10 | 🔧 |
| CVE-2025-13228 | TypeConfusion in V8 | V8 | chrome | High | 2025-10 | 🔧 |
| CVE-2025-13229 | TypeConfusion in V8 | V8 | chrome | High | 2025-10 | 🔧 |
| CVE-2025-13230 | TypeConfusion in V8 | V8 | chrome | High | 2025-10 | 🔧 |
| CVE-2025-5959 | TypeConfusion in V8 | V8 | chrome | High | 2025-06 | 🔧 |
| CVE-2024-12053 | TypeConfusion in V8 | V8 | chrome | High | 2024-12 | 🔧 |
| CVE-2024-12381 | TypeConfusion in V8 | V8 | chrome | High | 2024-12 | 🔧 |
| CVE-2024-12692 | TypeConfusion in V8 | V8 | chrome | High | 2024-12 | 🔧 |
Hunt for siblings
Commit-scanner flags subtyping/canonicalization code that compares type_index alone or branches on kind() rather than has_index()/is_exact(); a Wasm type-generation fuzzer with custom descriptors and imports catches accepted-but-invalid casts.
Mitigations that would catch this class
- Compare complete canonical type descriptors, never a bare type index
- Gate cast elimination and branch-reachability on decidability, excluding custom descriptors and exact types
- Restrict exact stamping to non-imported references