High severity · published Mar 26, 2026
CVE-2026-33636
LIBPNG has ARM NEON Palette Expansion Out-of-Bounds Read on AArch64
7.6
CVSS
0.8%
EPSS
No
On KEV
Description
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.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:H
Attack vector
Network
Complexity
Low
Privileges
None
User interaction
Required
Confidentiality
Low
Integrity
Low
Availability
High
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.8% · higher than 55% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
LI
libpng · pnggroup
>= 1.6.36, < 1.6.56 · source: vendor, NVD
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-33636
CVE.org
https://www.cve.org/CVERecord?id=CVE-2026-33636
Patch
https://github.com/pnggroup/libpng/commit/7734cda20cf1236aef60f3bbd2267c97bbb40869
Patch
https://github.com/pnggroup/libpng/commit/aba9f18eba870d14fb52c5ba5d73451349e339c3
Patch
https://github.com/pnggroup/libpng/security/advisories/GHSA-wjr5-c57x-95m2
More from libpng
8.1
CVE-2026-25646
LIBPNG has a heap buffer overflow in png_set_quantize
7.8
CVE-2026-22801
LIBPNG has an integer truncation causing heap buffer over-read in png_image_write_*
7.5
CVE-2026-33416
LIBPNG has use-after-free via pointer aliasing in `png_set_tRNS` and `png_set_PLTE`
7.1
CVE-2026-22695
LIBPNG has a heap buffer over-read in png_image_read_direct_scaled (regression from CVE-2025-65018 fix)
5.4
CVE-2026-40930
LIBPNG: Chunk smuggling in push-mode APNG parser via unconsumed chunk body
