Skip to content

[Security] Flutter SDK 3.44.8 (libpng 1.6.54) causes CVE-2026-25646, CVE-2026-33636, CVE-2026-33416 in my app #190987

Closed

Description

@chinahzlh

Description:

My app is built with Flutter SDK 3.44.8, and the security scanner flagged these CVEs in the Flutter engine's image processing component (libpng). This is a serious concern for my production app, and I am seeking guidance on how to resolve this issue.

Environment:

Flutter SDK version: 3.44.8
Affected Library: libpng 1.6.54
Platform: [e.g., Android / iOS

Vulnerabilities Detected

The following CVEs were reported by the security scanner against my app binary:

  1. CVE-2026-25646
    Description: LIBPNG is a reference library for use in applications that read, create, and manipulate PNG (Portable Network Graphics) raster image files. Prior to 1.6.55, an out-of-bounds read vulnerability exists in the png_set_quantize() API function. When the function is called with no histogram and the number of colors in the palette is more than twice the maximum supported by the user's display, certain palettes will cause the function to enter into an infinite loop that reads past the end of an internal heap-allocated buffer. The images that trigger this vulnerability are valid per the PNG specification. This vulnerability is fixed in 1.6.55.

  2. CVE-2026-33636
    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.

  3. 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.

Activity

  1. puneetkukreja98 commented on Aug 12, 2026

    @puneetkukreja98
    Contributor

    @chinahzlh Thanks for reporting the issue, can you confirm if your issue and this #182018 are same?

  2. added
    waiting for responseThe Flutter team cannot make further progress on this issue until the original reporter responds
    and removed
    in triagePresently being triaged by the triage team
    on Aug 12, 2026
  3. chinahzlh commented on Aug 12, 2026

    @chinahzlh
    Author

    @chinahzlh Thanks for reporting the issue, can you confirm if your issue and this #182018 are same?

    they are different cve issues, #182018 is issue on libzlib, and mine is on libpng

  4. removed
    waiting for responseThe Flutter team cannot make further progress on this issue until the original reporter responds
    on Aug 12, 2026
  5. puneetkukreja98 commented on Aug 12, 2026

    @puneetkukreja98
    Contributor

    Routing this to team-engine for further investigation.
    Related: #181669

  6. added
    engineflutter/engine related. See also e: labels.
    and removed
    in triagePresently being triaged by the triage team
    on Aug 12, 2026
  7. gaaclarke commented on Aug 17, 2026

    @gaaclarke
    Member

    @chinahzlh can you try with 3.47.0 that just got released, and main. There were fixes that happened to this. They may have captured your use-case.

    fyi @jtmcdole @jason-simmons

  8. added
    P1High-priority issues at the top of the work list
    on Aug 17, 2026
  9. self-assigned this
    on Aug 17, 2026
  10. chinahzlh commented on Aug 18, 2026

    @chinahzlh
    Author

    @chinahzlh can you try with 3.47.0 that just got released, and main. There were fixes that happened to this. They may have captured your use-case.

    fyi @jtmcdole @jason-simmons

    Thanks for your reply. I’ve tested 3.47.0, but the security scan still reports libpng 1.6.54 — no difference. Would you mind double-checking whether libpng was upgraded in this version?

  11. gaaclarke commented on Aug 18, 2026

    @gaaclarke
    Member

    Yea, I'm seeing 1.6.54 in main. The dep needs to be updated.

  12. YeaLink89 commented on Aug 20, 2026

    @YeaLink89

    Yea, I'm seeing 1.6.54 in main. The dep needs to be update

    When will this release version be published?

  13. added a commit that references this issue on Aug 20, 2026
  14. gaaclarke commented on Aug 20, 2026

    @gaaclarke
    Member

    When will this release version be published?

    Looking into it. Worse case scenario you can build your own engine, the patch is easy to apply.

    Typically issues like this are closed when they are fixed on main but I'll keep this open while we consider it's release path.

  15. gaaclarke commented on Sep 24, 2026

    @gaaclarke
    Member

    closed in #191320

  16. github-actions commented on Oct 8, 2026

    @github-actions

    This thread has been automatically locked since there has not been any recent activity after it was closed. If you are still experiencing a similar issue, please open a new bug, including the output of flutter doctor -v and a minimal reproduction of the issue.

  17. locked as resolved and limited conversation to collaborators on Oct 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

P1High-priority issues at the top of the work listengineflutter/engine related. See also e: labels.team-engineOwned by Engine teamtriaged-engineTriaged by Engine team

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions