CVE-2026-33636
High · 7.6CVSS
7.6
EPSS
0.4%
Published
Mar 26, 2026
CISA due date
—
Cloudanix analysis
A malicious PNG image can crash some systems that process images on ARM-based devices unless their image library is updated.
- Exploitation
- Requires User Interaction
- Attacker needs
- User Interaction
- Complexity
- Moderate
- Impact
- Denial Of Service
- Component
- Library
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
CVE-2026-33636 is a memory corruption flaw in libpng versions 1.6.36 through 1.6.55 on ARM/AArch64 systems when the Neon-optimized palette expansion code path is enabled. During decoding of specially crafted 8-bit paletted PNG images, the optimized loop can process a final partial chunk without confirming enough pixels remain, causing reads before the start of the row buffer and writes to underflowed memory locations. The most likely technical result is a process crash and denial of service, but because the flaw includes an out-of-bounds write, limited memory corruption and potential integrity impact are possible depending on how the affected application is built, linked, sandboxed, and hardened.
Why it matters to the business
Applications, services, or embedded products that accept or process PNG images using vulnerable libpng builds may be crashed by a malicious image, disrupting image upload, rendering, thumbnailing, document processing, messaging, media, or web workflows. The risk is most relevant for ARM and AArch64 platforms, including mobile, edge, appliance, and cloud ARM deployments. The CVSS score is high, but EPSS is currently low and stable, there is no CISA KEV listing, no ransomware association, and no public exploit maturity reported, so remediation should be prioritized for exposed image-processing paths while still being handled as a high-impact availability issue.
How an attack unfolds
An attacker creates a PNG file that uses an 8-bit palette and dimensions or row layout that cause libpng's ARM/AArch64 Neon palette expansion routine to encounter a partial final chunk. The attacker then causes a vulnerable application to decode the file, commonly by uploading it to a web application, sending it through a messaging or email workflow, embedding it in content that is rendered by a client, or submitting it to an image conversion or thumbnailing service. If the target uses libpng 1.6.36 through 1.6.55 with the affected Neon path enabled, normal PNG decoding reaches the vulnerable routine. The routine works backward from the end of the row, underflows the row pointer, reads memory before the row buffer, and writes expanded RGB/RGBA output to underflowed positions. In practical terms, exploitation is expected to crash the image-processing process or worker; in less common circumstances, the out-of-bounds write could corrupt adjacent memory in a way that affects application behavior. No known in-the-wild exploitation, named threat actor use, or KEV status is currently reported.
How to fix it
Upgrade libpng to version 1.6.56 or later wherever it is used. Because libpng is often embedded or statically linked, remediation must include operating system packages, container images, language bindings, desktop/mobile applications, firmware, and third-party products that bundle their own copy of libpng. Rebuild and redeploy statically linked software against a fixed libpng release. On ARM/AArch64 systems where immediate upgrade is not possible, reduce exposure by disabling or avoiding the affected Neon-optimized path if supported by the build configuration, isolating image-processing workers, enforcing strict resource limits, validating accepted image types, and processing untrusted images in a sandboxed or least-privileged environment. Also ensure crash supervision does not create cascading outages from repeated malformed image submissions.
How to confirm the fix worked
Confirm that all runtime and build-time instances of libpng are version 1.6.56 or later. Use package manager queries, SBOMs, container scans, dependency manifests, and binary inspection to identify both dynamic and statically linked copies. On Linux-like systems, useful checks include package inventory for libpng/libpng16, `pkg-config --modversion libpng`, `ldd` against image-processing binaries, and `strings` or software composition analysis for embedded libpng version strings. Validate ARM/AArch64 builds separately because the vulnerable path is architecture-specific. After patching, restart or redeploy all services that load libpng, rebuild containers and static binaries, and verify no vulnerable libpng 1.6.36 through 1.6.55 copies remain in production artifacts. Functional validation should include decoding representative paletted PNG files under normal workload conditions and confirming image-processing workers no longer crash on malformed test cases in a controlled environment.
Typical attack path
- Identify an application, service, device, or client that processes attacker-supplied PNG images on ARM/AArch64 using vulnerable libpng 1.6.36 through 1.6.55.
- Craft a PNG using an 8-bit paletted image layout that drives libpng into the Neon-optimized palette expansion path with a partial final chunk.
- Deliver the PNG through a normal image ingestion path such as upload, message attachment, content rendering, profile image, document conversion, or thumbnail generation.
- Wait for the target application or worker process to decode the PNG using the vulnerable libpng code path.
- Trigger an out-of-bounds read and write before the row buffer, causing a crash or memory corruption in the decoding process.
- Repeat delivery if the goal is service disruption, worker exhaustion, or operational instability.
How to detect it
There are no public, reliable, exploit-specific indicators for this vulnerability, and exploitation may look like an ordinary malformed image crash. To assess possible prior exploitation, review application logs, reverse proxy logs, object storage access logs, upload audit trails, EDR telemetry, service supervisor logs, and crash/core dump repositories for image-processing failures that occurred immediately after PNG uploads or image rendering events. Focus on ARM/AArch64 services using libpng 1.6.36 through 1.6.55, especially upload endpoints, thumbnail workers, media converters, messaging systems, and document-processing services. Look for repeated crashes of the same image-processing component, segmentation faults, aborts, or worker restarts correlated with PNG files from the same source IP, account, user agent, message sender, or content object. If symbols are available, stack traces referencing libpng palette expansion, PNG row transformation, or Neon-specific routines are especially relevant. Preserve suspicious PNGs, core dumps, and process memory artifacts, then analyze them offline with a patched and instrumented decoder, AddressSanitizer builds, or a debugger. Absence of these artifacts does not prove non-exploitation because failed parsing may leave only generic crash or 5xx evidence.
What your security team should do
- Prioritize inventory of internet-facing, file-upload, media-processing, messaging, document-conversion, and thumbnailing services that accept PNG input on ARM/AArch64 platforms.
- Upgrade all libpng deployments to 1.6.56 or later, including bundled, vendored, statically linked, containerized, and firmware copies.
- Patch exposed server-side image-processing pipelines before lower-risk desktop or internal-only uses, because remote attackers can often reach these workflows through normal uploads.
- Add or verify sandboxing, process isolation, memory limits, and automatic rate limiting for untrusted image parsing workloads.
- Review crash telemetry, application logs, and upload histories for suspicious PNG-triggered failures since publication on 2026-03-26.
- Retain suspicious PNG samples associated with crashes for offline forensic analysis in an isolated lab.
- Add software composition analysis checks to CI/CD and container build pipelines to block libpng 1.6.36 through 1.6.55 on ARM/AArch64 deliverables.
- Monitor vendor advisories for downstream products that bundle libpng and may require product-specific updates rather than only operating system package updates.
The record
LIBPNG is a reference library for use in applications that read, create, and manipulate PNG (Portable Network Graphics) raster image files. In versions 1.6.36 through 1.6.55, an out-of-bounds read and write exists in libpng's ARM/AArch64 Neon-optimized palette expansion path. When expanding 8-bit paletted rows to RGB or RGBA, the Neon loop processes a final partial chunk without verifying that enough input pixels remain. Because the implementation works backward from the end of the row, the final iteration dereferences pointers before the start of the row buffer (OOB read) and writes expanded pixel data to the same underflowed positions (OOB write). This is reachable via normal decoding of attacker-controlled PNG input if Neon is enabled. Version 1.6.56 fixes the issue.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| SUSE:Linux Enterprise Module for Basesystem 15 SP7 | libpng16 | 0 | 1.6.40-150600.3.17.1 |
| SUSE:Linux Enterprise Server 15 SP6-LTSS | libpng16 | 0 | 1.6.40-150600.3.17.1 |
| SUSE:Linux Enterprise Server for SAP Applications 15 SP6 | libpng16 | 0 | 1.6.40-150600.3.17.1 |
| openSUSE:Leap 15.6 | libpng16 | 0 | 1.6.40-150600.3.17.1 |
| openSUSE:Leap 16.0 | libpng16 | 0 | 1.6.44-160000.6.1 |
| openSUSE:Tumbleweed | libpng16 | 0 | 1.6.56-1.1 |
Related vulnerabilities
- CVE-2026-33416 LIBPNG is a reference library for use in applications that read, create, and manipulate… Also affects libpng16
- CVE-2026-25646 LIBPNG is a reference library for use in applications that read, create, and manipulate… Also affects libpng16
- CVE-2025-28164 Buffer Overflow vulnerability in libpng 1.6.43-1.6.46 allows a local attacker to cause a… Also affects libpng16
- CVE-2025-28162 Buffer Overflow vulnerability in libpng 1.6.43-1.6.46 allows a local attacker to cause a… Also affects libpng16
- CVE-2026-22801 LIBPNG is a reference library for use in applications that read, create, and manipulate… Also affects libpng16
- CVE-2026-22695 LIBPNG is a reference library for use in applications that read, create, and manipulate… Also affects libpng16
- CVE-2025-66293 LIBPNG has an out-of-bounds read in png_image_read_composite Also affects libpng16
- CVE-2025-65018 LIBPNG is vulnerable to a heap buffer overflow in `png_combine_row` triggered via… Also affects libpng16