libpng 1.6.52 (the second-most critical update in decades) released!

Cosmin Truta <[email protected]> Wed, 3 Dec 2025 23:24:31 +0200
Newsgroups gmane.comp.graphics.png.announce,gmane.comp.graphics.png.devel
Message-ID <CAAoVtZzQz-dkUHy1ESnh_gSOV9YiUv2N37fjqRXADBcQsxJ5NQ@mail.gmail.com>
--===============2795346010756023897==
Content-Type: multipart/alternative; boundary="0000000000002bcc3d064512d7ac"

--0000000000002bcc3d064512d7ac
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

Dear community of PNG and libpng users,

Hot on the heels of 1.6.51, here comes libpng-1.6.52 with one more
high-severity fix. This one is... unusual.

CVE-2025-66293 is an out-of-bounds read in `png_image_read_composite` that
can be triggered by ***completely valid, spec-compliant PNG files***. No
malicious crafting required. Any palette image with partial transparency
(tRNS with alpha values 1=E2=80=93254) and gamma correction (gAMA chunk), w=
hen
processed through the simplified API requesting output without alpha and no
explicit background, will trigger the bug. The root cause is an internal
flag synchronization issue between PNG_COMPOSE and PNG_FLAG_OPTIMIZE_ALPHA.

If you use the simplified libpng API (png_image_* functions) to process
palette images, you need this update. To the best of my knowledge, web
browsers use the low-level API and are not affected.

The gory details are available at:
- https://github.com/pnggroup/libpng/security/advisories/GHSA-9mpm-9pxh-mg4=
f
- https://github.com/pnggroup/libpng/blob/v1.6.52/ANNOUNCE

Many thanks to @flyfish101 for reporting this issue.

On the non-security front: Liang Junzhao fixed the Paeth filter handling in
the RISC-V RVV implementation (reported by Filip Wasil) and improved its
performance. Philippe Antoine contributed allocation failure fuzzing to
oss-fuzz.

In the good old tradition of file authentication, here are the SHA-2-256
checksums of the published archive files:

---

libpng-1.6.52.tar.gz
86d4a88be1c8bc903674199f1d067a9ac940af4e4399caba0314e7a1bcaa0724

libpng-1.6.52.tar.xz
36bd726228ec93a3b6c22fdb49e94a67b16f2fe9b39b78b7cb65772966661ccc

lpng1652.7z
346b71932d80b99b6751c46b6925c0325f0144ee92b18371300d0e684db942e0

lpng1652.zip
63d8366fe994ab1ca17738e2a565288a336751b84ce2c6326f70057d8c9f2bab

---

Sincerely,
Cosmin

--0000000000002bcc3d064512d7ac
Content-Type: text/html; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Dear community of PNG and libpng users,<br><br>Hot on the =
heels of 1.6.51, here comes libpng-1.6.52 with one more high-severity fix. =
This one is... unusual.<br><br>CVE-2025-66293 is an out-of-bounds read in `=
png_image_read_composite` that can be triggered by <b>**completely valid, s=
pec-compliant PNG files**</b>. No malicious crafting required. Any palette =
image with partial transparency (tRNS with alpha values 1=E2=80=93254) and =
gamma correction (gAMA chunk), when processed through the simplified API re=
questing output without alpha and no explicit background, will trigger the =
bug. The root cause is an internal flag synchronization issue between <span=
 style=3D"font-family:monospace">PNG_COMPOSE</span> and <span style=3D"font=
-family:monospace">PNG_FLAG_OPTIMIZE_ALPHA</span>.<br><br>If you use the si=
mplified libpng API (<span style=3D"font-family:monospace">png_image_*</spa=
n> functions) to process palette images, you need this update. To the best =
of my knowledge, web browsers use the low-level API and are not affected.<b=
r><br>The gory details are available at:<br>- <a href=3D"https://github.com=
/pnggroup/libpng/security/advisories/GHSA-9mpm-9pxh-mg4f">https://github.co=
m/pnggroup/libpng/security/advisories/GHSA-9mpm-9pxh-mg4f</a><br>- <a href=
=3D"https://github.com/pnggroup/libpng/blob/v1.6.52/ANNOUNCE">https://githu=
b.com/pnggroup/libpng/blob/v1.6.52/ANNOUNCE</a><br><br>Many thanks to @flyf=
ish101 for reporting this issue.<br><br>On the non-security front: Liang Ju=
nzhao fixed the Paeth filter handling in the RISC-V RVV implementation (rep=
orted by Filip Wasil) and improved its performance. Philippe Antoine contri=
buted allocation failure fuzzing to oss-fuzz.<br><br>In the good old tradit=
ion of file authentication, here are the SHA-2-256 checksums of the publish=
ed archive files:<br><br>---<br><br>libpng-1.6.52.tar.gz<br>86d4a88be1c8bc9=
03674199f1d067a9ac940af4e4399caba0314e7a1bcaa0724<br><br>libpng-1.6.52.tar.=
xz<br>36bd726228ec93a3b6c22fdb49e94a67b16f2fe9b39b78b7cb65772966661ccc<br><=
br>lpng1652.7z<br>346b71932d80b99b6751c46b6925c0325f0144ee92b18371300d0e684=
db942e0<br><br>lpng1652.zip<br>63d8366fe994ab1ca17738e2a565288a336751b84ce2=
c6326f70057d8c9f2bab<br><br>---<br><br>Sincerely,<br>Cosmin<br></div>

--0000000000002bcc3d064512d7ac--


--===============2795346010756023897==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline


--===============2795346010756023897==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
png-mng-announce mailing list
png-mng-announce-5NWGOfrQmneRv+LV9MX5uipxlwaOVQ5f@public.gmane.org
https://lists.sourceforge.net/lists/listinfo/png-mng-announce

--===============2795346010756023897==--