Read the docs
TI-2026-66880 Aliases GHSA-9wxg-vf3r-56hc

OpenZeppelin Contracts Wizard: Line terminators in info.securityContact / info.license…

Priority LOW 38CWE-116Published · Updated

Key facts

Attack vector
—
Privileges required
—
User interaction
—
Attack complexity
—
Impact type
Code execution
Confidentiality · integrity · availability
—
Fix status
Fixed

No CVSS vector from any source. Fix status from GitHub. Impact type from CWE-94.

Summary

## Summary The Contracts Wizard generators printed `info.securityContact` and `info.license` verbatim into a single-line comment of the generated Solidity, Cairo, Stellar/Soroban, and Stylus source without rejecting line terminators. A newline (`\n` or `\r\n`) in either field ends the comment, so the text after it is emitted as source rather than remaining inside the comment — allowing arbitrary declarations to be injected into the generated contract. ## Impact This only matters when these fields are filled from input other than the user who will use the generated contract. Normal self-service use does not meet that condition: - **Web app, AI assistant, and CLI:** the user supplies these fields and uses their own output, so a line break only affects their own contract. (These fields are not URL-derived, so shared links cannot set them.) - **Self-hosted API:** same — the end user supplies the options and consumes the result. The case that matters is an integration that fills these fields from untrusted input — for example, an MCP agent whose tool arguments are derived from content it processed. There, a newline in the value can add lines to output that otherwise looks like normal Wizard source. Impact is integrity-only; there is no execution on any Wizard service. ## Patches Fixed by rejecting line terminators in `setInfo` — the single code path all surfaces use — so the value can no longer break out of the comment. Upgrade to the patched versions. `@openzeppelin/wizard-confidential` and `@openzeppelin/wizard-uniswap-hooks` reuse this `setInfo` through their `@openzeppelin/wizard` dependency and receive the fix once that dependency is updated to a patched version.

Why it matters now

Fix Fixed @openzeppelin/wizard (npm): 0.10.11@openzeppelin/wizard-cairo (npm): 3.0.1+2 more products

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
—@openzeppelin/wizard (npm)before 0.10.110.10.11Patch availableGHSA-9wxg-vf3r-56hc
—@openzeppelin/wizard-cairo (npm)before 3.0.13.0.1Patch availableGHSA-9wxg-vf3r-56hc
—@openzeppelin/wizard-stellar (npm)before 0.6.20.6.2Patch availableGHSA-9wxg-vf3r-56hc
—@openzeppelin/wizard-stylus (npm)before 0.3.10.3.1Patch availableGHSA-9wxg-vf3r-56hc
  • @openzeppelin/wizard (npm) Vendor— Affected before 0.10.11 Fixed in 0.10.11 Patch available GHSA-9wxg-vf3r-56hc
  • @openzeppelin/wizard-cairo (npm) Vendor— Affected before 3.0.1 Fixed in 3.0.1 Patch available GHSA-9wxg-vf3r-56hc
  • @openzeppelin/wizard-stellar (npm) Vendor— Affected before 0.6.2 Fixed in 0.6.2 Patch available GHSA-9wxg-vf3r-56hc
  • @openzeppelin/wizard-stylus (npm) Vendor— Affected before 0.3.1 Fixed in 0.3.1 Patch available GHSA-9wxg-vf3r-56hc

Remediation

  • Fix · GHSA-9wxg-vf3r-56hc @openzeppelin/wizard (npm) Fixed in 0.10.11 Advisory →
  • Fix · GHSA-9wxg-vf3r-56hc @openzeppelin/wizard-cairo (npm) Fixed in 3.0.1 Advisory →
  • Fix · GHSA-9wxg-vf3r-56hc @openzeppelin/wizard-stellar (npm) Fixed in 0.6.2 Advisory →
  • Fix · GHSA-9wxg-vf3r-56hc @openzeppelin/wizard-stylus (npm) Fixed in 0.3.1 Advisory →

Timeline

  1. 2026-10-03 Threatist record created from GHSA-9wxg-vf3r-56hc

References

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences