CVE-2026-41197: Noir Brillig Foreign Call Nested Array Under-Allocation Causes Heap Corruption
CVE-2026-41197 affects the Noir language toolchain when Brillig bytecode is generated for foreign calls that return nested arrays of composite element types such as tuples. The memory allocation for nested arrays uses the logical element count instead of the semi-flattened slot count, so the heap is under-allocated and can be corrupted. The GitHub advisory records a CVSS 4.0 score of 9.3 and states that version 1.0.0-beta.19 fixes the issue.
Overview
Noir is a domain specific language for SNARK proving systems, and Brillig is the bytecode used for non-determinism. According to the GitHub advisory, when the compiler generates Brillig code for a foreign call that returns nested arrays, it allocates heap memory for the nested arrays using their logical length rather than their semi-flattened size. This matters when the element type is composite, such as a tuple.
Impact
- Foreign calls returning nested arrays of tuples or other composite types can under-allocate heap memory.
- The advisory states this corrupts the Brillig VM heap. The record does not describe the resulting behavior in further detail, such as whether it affects proof validity or only program correctness.
- The CVSS 4.0 vector in the record shows high confidentiality, integrity and availability impact, with no privileges or user interaction required, and a score of 9.3 as published by the CNA.
Affected products and versions
The structured affected list in the record is empty, so no affected version range is confirmed by the data. The record's description states that version 1.0.0-beta.19 fixes the issue. Earlier versions of the Noir toolchain are therefore likely affected, but the exact range is unknown from the available data. Consult the GitHub security advisory for the authoritative range.
Exploitation status
The CISA KEV catalog entry in the record is marked as not listed. No confirmed exploitation appears in the sources consulted for this analysis.
Remediation and mitigation
- Upgrade the Noir toolchain to version 1.0.0-beta.19 or later, as described in the release notes.
- Review projects that use foreign calls returning nested arrays of composite types, and prioritize rebuilding them with the fixed toolchain.
- Until the upgrade is complete, avoid relying on foreign-call results that are nested arrays of tuples in sensitive or production proving workflows.
Detection guidance
- Inventory Noir toolchain versions across development and build environments.
- Identify programs that combine foreign calls with nested array returns containing tuples or other composite elements.
- Watch for unexpected crashes, memory faults or inconsistent outputs in Brillig execution, which could indicate heap corruption.
Limitations of the available information
The record does not list affected versions, CWE details beyond the identifier, or any exploitation evidence. The EPSS data and SSVC fields are present in the record but do not change the technical description. The source status is recorded as Deferred, and the NVD and CVE.org pages listed in the record were not used to add further technical detail.
Frequently asked questions
What is the root cause of CVE-2026-41197?
According to the advisory, the allocation for nested arrays in foreign call results uses the logical element count rather than the semi-flattened slot size, which under-allocates memory when element types are composite.
Which fix addresses this issue?
The record states that version 1.0.0-beta.19 of Noir fixes the issue, and the release tag is listed in the references.
This analysis was drafted with AI assistance from verified source data and automatically checked against it.