OpenEXR présente un dépassement d'entier signé (comportement indéfini) dans undo_pxr24_impl qui peut permettre de contourner la vérification des limites lors de la décompression PXR24
Plateforme
c
Composant
openexr
Corrigé dans
3.2.7
OpenEXR fournit la spécification et l'implémentation de référence du format de fichier EXR, un format de stockage d'images pour l'industrie cinématographique. De la version 3.2.0 à la version 3.2.7, 3.3.9 et 3.4.9, un dépassement d'entier signé existe dans undo_pxr24_impl() dans src/lib/OpenEXRCore/internal_pxr24.c à la ligne 377. L'expression (uint64_t)(w * 3) calcule w * 3 en tant qu'entier signé 32 bits avant de convertir en uint64_t. Lorsque w est grand, cette multiplication constitue un comportement indéfini selon la norme C. Sur les builds testés (clang/gcc sans sanitizers), l'enroulement en complément à deux se produit couramment, et pour des valeurs spécifiques de w, le résultat enroulé est un petit entier positif, ce qui peut permettre à la vérification des limites suivante de réussir incorrectement. Si la vérification est contournée, la boucle de décodage procède à l'écriture de données de pixels via dout, pouvant s'étendre bien au-delà du tampon de sortie alloué. Cette vulnérabilité est corrigée dans les versions 3.2.7, 3.3.9 et 3.4.9.
Comment corriger
Aucun correctif officiel disponible. Recherchez des alternatives ou surveillez les mises à jour.
Surveillez vos dépendances automatiquement
Recevez des alertes quand de nouvelles vulnérabilités affectent vos projets.
Commencer gratuitement