OpenEXR heeft een verkeerd uitgelijnde schrijfactie in LossyDctDecoder_execute wat leidt tot ongedefinieerd gedrag (DWA/DWAB 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 misaligned memory write kwetsbaarheid in LossyDctDecoder_execute() in src/lib/OpenEXRCore/internal_dwa_decoder.h:749. Bij het decoderen van een DWA of DWAB-gecomprimeerd EXR-bestand met een FLOAT-type kanaal, voert de decoder een in-place HALF→FLOAT conversie uit door een uitgelijnde uint8_t * row pointer te casten naar float * en er doorheen te schrijven. Omdat de row buffer mogelijk niet 4-byte uitgelijnd is, vormt dit ongedefinieerd gedrag onder de C standaard en crasht het direct op architecturen die alignment afdwingen (ARM, RISC-V, etc.). Op x86 wordt dit stilzwijgend getolereerd tijdens runtime, maar blijft het exploiteerbaar via compiler optimalisaties die uitgelijnde toegang veronderstellen. 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