| Name | CVE-2026-33416 |
| 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.2.1 through 1.6.55, `png_set_tRNS` and `png_set_PLTE` each alias a heap-allocated buffer between `png_struct` and `png_info`, sharing a single allocation across two structs with independent lifetimes. The `trans_alpha` aliasing has been present since at least libpng 1.0, and the `palette` aliasing since at least 1.2.1. Both affect all prior release lines `png_set_tRNS` sets `png_ptr->trans_alpha = info_ptr->trans_alpha` (256-byte buffer) and `png_set_PLTE` sets `info_ptr->palette = png_ptr->palette` (768-byte buffer). In both cases, calling `png_free_data` (with `PNG_FREE_TRNS` or `PNG_FREE_PLTE`) frees the buffer through `info_ptr` while the corresponding `png_ptr` pointer remains dangling. Subsequent row-transform functions dereference and, in some code paths, write to the freed memory. A second call to `png_set_tRNS` or `png_set_PLTE` has the same effect, because both functions call `png_free_data` internally before reallocating the `info_ptr` buffer. Version 1.6.56 fixes the issue. |
| Source | CVE (at NVD; CERT, ENISA, LWN, oss-sec, fulldisc, Debian ELTS, Red Hat, Ubuntu, Gentoo, SUSE bugzilla/CVE, GitHub advisories/code/issues, web search, more) |
| References | DLA-4521-1, DSA-6189-1 |
| Debian Bugs | 1132012 |
The table below lists information on source packages.
| Source Package | Release | Version | Status |
|---|---|---|---|
| libpng1.6 (PTS) | bullseye | 1.6.37-3 | vulnerable |
| bullseye (security) | 1.6.37-3+deb11u3 | fixed | |
| bookworm | 1.6.39-2+deb12u1 | vulnerable | |
| bookworm (security) | 1.6.39-2+deb12u4 | fixed | |
| trixie | 1.6.48-1+deb13u3 | vulnerable | |
| trixie (security) | 1.6.48-1+deb13u4 | fixed | |
| forky, sid | 1.6.56-1 | fixed |
The information below is based on the following data on fixed versions.
| Package | Type | Release | Fixed Version | Urgency | Origin | Debian Bugs |
|---|---|---|---|---|---|---|
| libpng1.6 | source | bullseye | 1.6.37-3+deb11u3 | DLA-4521-1 | ||
| libpng1.6 | source | bookworm | 1.6.39-2+deb12u4 | DSA-6189-1 | ||
| libpng1.6 | source | trixie | 1.6.48-1+deb13u4 | DSA-6189-1 | ||
| libpng1.6 | source | (unstable) | 1.6.56-1 | 1132012 |
https://github.com/pnggroup/libpng/security/advisories/GHSA-m4pc-p4q3-4c7j
https://github.com/pnggroup/libpng/pull/824
Fixed by: https://github.com/pnggroup/libpng/commit/23019269764e35ed8458e517f1897bd3c54820eb (v1.6.56)
Fixed by: https://github.com/pnggroup/libpng/commit/a3a21443ed12bfa1ef46fa0d4fb2b74a0fa34a25 (v1.6.56)
Fixed by: https://github.com/pnggroup/libpng/commit/7ea9eea884a2328cc7fdcb3c0c00246a50d90667 (v1.6.56)
Fixed by: https://github.com/pnggroup/libpng/commit/c1b0318b393c90679e6fa5bc1d329fd5d5012ec1 (v1.6.56)