CVE-2025-46333
z2d OOB composition could lead to invalid memory access and corruption
z2d is a pure Zig 2D graphics library. Versions of z2d after 0.5.1 and up to and including 0.6.0, when writing from one surface to another using z2d.compositor.StrideCompositor.run, and higher-level operations when the anti-aliasing mode is set to .default (such as Context.fill, Context.stroke, painter.fill, and painter.stroke), the source surface can be completely out-of-bounds on the x-axis, but not on the y-axis, by way of a negative offset. This results in an overflow of the value controlling the length of the stride. In non-safe optimization modes (consumers compiling with ReleaseFast or ReleaseSmall), this could potentially lead to invalid memory accesses or corruption.
This issue is patched in version 0.6.1. Users on an untagged version after v0.5.1 and before v0.6.1 are advised to update to address the vulnerability. Those still on Zig 0.13.0 are recommended to downgrade to v0.5.1.
Attack profile
How easy it is to exploit
- Attack vector
- Local
- Complexity
- High
- Privileges needed
- Low
- User interaction
- Passive
What an attacker can affect
- Confidentiality
- High
- Integrity
- High
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.3
z2d OOB composition could lead to invalid memory access and corruption
z2d is a pure Zig 2D graphics library. Versions of z2d after 0.5.1 and up to and including 0.6.0, when writing from one surface to another using z2d.compositor.StrideCompositor.run, and higher-level operations when the anti-aliasing mode is set to .default (such as Context.fill, Context.stroke, painter.fill, and painter.stroke), the source surface can be completely out-of-bounds on the x-axis, but not on the y-axis, by way of a negative offset. This results in an overflow of the value controlling the length of the stride. In non-safe optimization modes (consumers compiling with ReleaseFast or ReleaseSmall), this could potentially lead to invalid memory accesses or corruption.
This issue is patched in version 0.6.1. Users on an untagged version after v0.5.1 and before v0.6.1 are advised to update to address the vulnerability. Those still on Zig 0.13.0 are recommended to downgrade to v0.5.1.
- Record
CVE-2025-46333- CVSS 4.0
- 7.3 High
CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H - Weakness
- CWE-119, CWE-122, CWE-190
- Updated
- 2026-11-02
EUVDEUVD-2025-12557
7.3
z2d is a pure Zig 2D graphics library. Versions of z2d after 0.5.1 and up to and including 0.6.0, when writing from one surface to another using z2d.compositor.StrideCompositor.run, and higher-level operations when the anti-aliasing mode is set to .default (such as Context.fill, Context.stroke, painter.fill, and painter.stroke), the source surface can be completely out-of-bounds on the x-axis, but not on the y-axis, by way of a negative offset. This results in an overflow of the value controlling the length of the stride. In non-safe optimization modes (consumers compiling with ReleaseFast or ReleaseSmall), this could potentially lead to invalid memory accesses or corruption.
This issue is patched in version 0.6.1. Users on an untagged version after v0.5.1 and before v0.6.1 are advised to update to address the vulnerability. Those still on Zig 0.13.0 are recommended to downgrade to v0.5.1.
- Record
EUVD-2025-12557- CVSS 4.0
- 7.3 High
CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H - Updated
- 2026-11-02
NVD
7.3
z2d is a pure Zig 2D graphics library. Versions of z2d after 0.5.1 and up to and including 0.6.0, when writing from one surface to another using z2d.compositor.StrideCompositor.run, and higher-level operations when the anti-aliasing mode is set to .default (such as Context.fill, Context.stroke, painter.fill, and painter.stroke), the source surface can be completely out-of-bounds on the x-axis, but not on the y-axis, by way of a negative offset. This results in an overflow of the value controlling the length of the stride. In non-safe optimization modes (consumers compiling with ReleaseFast or ReleaseSmall), this could potentially lead to invalid memory accesses or corruption.
This issue is patched in version 0.6.1. Users on an untagged version after v0.5.1 and before v0.6.1 are advised to update to address the vulnerability. Those still on Zig 0.13.0 are recommended to downgrade to v0.5.1.
- Record
CVE-2025-46333- CVSS 4.0
- 7.3 High
CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-119, CWE-122, CWE-190
- Updated
- 2026-11-02
OSV
7.3
z2d OOB composition could lead to invalid memory access and corruption
z2d is a pure Zig 2D graphics library. Versions of z2d after 0.5.1 and up to and including 0.6.0, when writing from one surface to another using z2d.compositor.StrideCompositor.run, and higher-level operations when the anti-aliasing mode is set to .default (such as Context.fill, Context.stroke, painter.fill, and painter.stroke), the source surface can be completely out-of-bounds on the x-axis, but not on the y-axis, by way of a negative offset. This results in an overflow of the value controlling the length of the stride. In non-safe optimization modes (consumers compiling with ReleaseFast or ReleaseSmall), this could potentially lead to invalid memory accesses or corruption.
This issue is patched in version 0.6.1. Users on an untagged version after v0.5.1 and before v0.6.1 are advised to update to address the vulnerability. Those still on Zig 0.13.0 are recommended to downgrade to v0.5.1.
- Record
CVE-2025-46333- CVSS 4.0
- 7.3 High
CVSS:4.0/AV:L/AC:H/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H - Weakness
- CWE-119, CWE-122, CWE-190
- Updated
- 2026-11-02
Affected products
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2025-46333 is a high vulnerability (CVSS 7.3) in Vancluever Z2d, published April 25, 2025. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.18%, the 7th percentile. No source names a fixed version.