OpenEXR heeft een signed integer overflow (undefined behavior) in undo_pxr24_impl die een bounds-check bypass kan toestaan bij PXR24 decompressie
Platform
c
Component
openexr
Opgelost in
3.2.7
OpenEXR biedt de specificatie en referentie-implementatie van het EXR-bestand formaat, een image storage formaat voor de motion picture industrie. Van 3.2.0 tot voor 3.2.7, 3.3.9, en 3.4.9, bestaat er een signed integer overflow in undo_pxr24_impl() in src/lib/OpenEXRCore/internal_pxr24.c op regel 377. De expressie (uint64_t)(w * 3) berekent w * 3 als een signed 32-bit integer voordat deze wordt gecast naar uint64_t. Wanneer w groot is, vormt deze vermenigvuldiging undefined behavior onder de C standaard. In geteste builds (clang/gcc zonder sanitizers) treedt tweevoudige complement wraparound vaak op, en voor specifieke waarden van w is het gewrapte resultaat een klein positief integer, wat de daaropvolgende bounds check mogelijk verkeerd kan laten slagen. Als de check wordt omzeild, gaat de decodeloop verder met het schrijven van pixel data via dout, mogelijk ver voorbij de toegewezen uitvoerbuffer. Deze kwetsbaarheid is verholpen in 3.2.7, 3.3.9, en 3.4.9.
Hoe te verhelpen
Geen officiële patch beschikbaar. Zoek naar tijdelijke oplossingen of monitor updates.
Bewaak uw afhankelijkheden automatisch
Ontvang meldingen wanneer nieuwe kwetsbaarheden uw projecten beïnvloeden.
Gratis beginnen