OpenEXR में एक हस्ताक्षरित पूर्णांक अतिप्रवाह (अपरिभाषित व्यवहार) undo_pxr24_impl में PXR24 डीकंप्रेशन में बाउंड्स-चेक बाईपास की अनुमति दे सकता है
प्लेटफ़ॉर्म
c
कॉम्पोनेन्ट
openexr
ठीक किया गया
3.2.7
OpenEXR, मोशन पिक्चर उद्योग के लिए एक छवि भंडारण प्रारूप, EXR फ़ाइल प्रारूप के विनिर्देश और संदर्भ कार्यान्वयन प्रदान करता है। 3.2.0 से 3.2.7, 3.3.9, और 3.4.9 से पहले, src/lib/OpenEXRCore/internal_pxr24.c की लाइन 377 में undo_pxr24_impl() में एक हस्ताक्षरित पूर्णांक अतिप्रवाह मौजूद है। अभिव्यक्ति (uint64_t)(w * 3) uint64_t में कास्ट करने से पहले एक हस्ताक्षरित 32-बिट पूर्णांक के रूप में w * 3 की गणना करती है। जब w बड़ा होता है, तो यह गुणन C मानक के तहत अपरिभाषित व्यवहार का गठन करता है। परीक्षण किए गए बिल्ड (सैनिटाइज़र के बिना clang/gcc) में, दो के पूरक रैपअराउंड आमतौर पर होता है, और w के विशिष्ट मानों के लिए, रैप किया गया परिणाम एक छोटा धनात्मक पूर्णांक होता है, जो बाद के बाउंड्स चेक को गलत तरीके से पास करने की अनुमति दे सकता है। यदि चेक को बाईपास किया जाता है, तो डिकोडिंग लूप dout के माध्यम से पिक्सेल डेटा लिखने के लिए आगे बढ़ता है, संभावित रूप से आवंटित आउटपुट बफर से बहुत आगे तक विस्तारित होता है। यह भेद्यता 3.2.7, 3.3.9, और 3.4.9 में ठीक की गई है।
कैसे ठीक करें
कोई आधिकारिक पैच उपलब्ध नहीं है। वैकल्पिक समाधान खोजें या अपडेट की निगरानी करें।
अपनी निर्भरताओं की स्वचालित निगरानी करें
जब नई कमज़ोरियाँ आपके प्रोजेक्ट को प्रभावित करें तो अलर्ट पाएं।
मुफ़्त शुरू करें