CVE-2026-33416 in libpng
Riassunto
di VulDB • 04/07/2026
LIBPNG è una libreria di riferimento per l'uso in applicazioni che leggono, creano e manipolano file immagine raster PNG (Portable Network Graphics). Nelle versioni dalla 1.2.1 alla 1.6.55, `png_set_tRNS` e `png_set_PLTE` effettuano ciascuna un aliasing di un buffer allocato sull'heap tra `png_struct` e `png_info`, condividendo una singola allocazione su due strutture con cicli di vita indipendenti. L'aliasing di `trans_alpha` è presente almeno dalla libpng 1.0, mentre l'aliasing della `palette` risale almeno alla versione 1.2.1. Entrambi i casi interessano tutte le versioni precedenti delle linee di rilascio: `png_set_tRNS` imposta `png_ptr->trans_alpha = info_ptr->trans_alpha` (buffer da 256 byte) e `png_set_PLTE` imposta `info_ptr->palette = png_ptr->palette` (buffer da 768 byte). In entrambi i casi, la chiamata a `png_free_data` (con `PNG_FREE_TRNS` o `PNG_FREE_PLTE`) libera il buffer tramite `info_ptr`, mentre il puntatore corrispondente in `png_ptr` rimane dangling. Le successive funzioni di trasformazione della riga dereferenziano e, in alcuni percorsi di codice, scrivono nella memoria già liberata. Una seconda chiamata a `png_set_tRNS` o `png_set_PLTE` ha lo stesso effetto, poiché entrambe le funzioni chiamano internamente `png_free_data` prima di riallocare il buffer di `info_ptr`. La versione 1.6.56 risolve il problema.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.