Katalog CVE

CVE-2026-73638

Niskie ryzyko· EPSS 7%
Opublikowano: Zaktualizowano: Przetłumaczono: NVD NIST

Prawdopodobieństwo exploitacji (EPSS)

Niskie ryzyko
0.18%

Percentyl 7 - wyżej niż 7% wszystkich znanych CVE

Streszczenie

Imager w wersjach od 0.45_02 przed 1.035 dla Perla odczytuje dane poza blokiem EXIF poprzez niekontrolowane przesunięcia początkowe w funkcji tiff_load_ifd. Funkcja tiff_load_ifd() waliduje dane wpisu IFD, sprawdzając, czy suma entry->offset + entry->size mieści się w bloku EXIF, ale nigdy nie sprawdza samego przesunięcia początkowego. Gdy suma nie jest rzeczywistym końcem danych, sprawdzenie przechodzi, mimo że wpis zaczyna się poza blokiem. Do wersji 1.032 pole entry->offset jest zwykłym int, więc na typowych implementacjach dopełnienia do dwóch offset z ustawionym najstarszym bitem staje się ujemny i suma może wrócić do wnętrza bloku. Od wersji 1.033 pole jest typu size_t, a dodawanie zawija się tylko tam, gdzie size_t ma 32 bity. Własne przesunięcie początkowe IFD jest sprawdzane w ten sam sposób i zawija się tam, gdzie unsigned long ma 32 bity, co obejmuje 64-bitowy Windows. Każdy wywołujący Imager->read() na dostarczonym przez atakującego obrazie może otrzymać tagi EXIF zawierające bajty spoza bloku lub spowodować awarię procesu.

Ocena ryzyka

Atakujący może dostarczyć spreparowany obraz, który po odczytaniu przez Imager->read() ujawnia dane spoza bloku EXIF lub powoduje awarię procesu, prowadząc do odmowy usługi lub wycieku informacji. Ryzyko dotyczy szczególnie systemów 32-bitowych i 64-bitowego Windows.

Rekomendacja

Zaktualizuj Imager do wersji 1.035 lub nowszej. Unikaj odczytu niezaufanych obrazów bez uprzedniej walidacji.

Inne podatności w Imager

Zobacz wszystkie
Oryginalny opis (angielski, źródło NVD)

Imager versions from 0.45_02 before 1.035 for Perl read outside the EXIF block via unchecked start offsets in tiff_load_ifd. tiff_load_ifd() validates an IFD entry's data by checking that `entry->offset + entry->size` stays within the EXIF block, and never checks the start offset itself. Where that sum is not the real end of the data, the check passes with the entry starting outside the block. Through 1.032 `entry->offset` is a plain int, so on the usual two's-complement implementations an offset with the high bit set converts to negative and the sum can land back inside the block. From 1.033 the field is a size_t and the addition wraps only where size_t is 32 bits. The IFD's own start offset is checked the same way and wraps where unsigned long is 32 bits, which includes 64-bit Windows. Any caller of Imager->read() on an attacker-supplied image may receive EXIF tags holding bytes from outside the block, or crash the process.

Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS