
CVE-2026-74945 · अप्रारंभित हीप का प्रकटीकरण विशेष रूप से निर्मित वेब फ़ॉन्ट के माध्यम से (सुरक्षा-उच्च)
सुरक्षा गंभीरता: उच्च। CWE 908 और CWE 200। फ़ायरफ़ॉक्स 154 में ठीक किया गया। Bugzilla 2057808। एक सामान्य वेब पेज से @font-face के माध्यम से पहुँच योग्य।
फ़ायरफ़ॉक्स उपयोग से पहले OTS के माध्यम से वेब फ़ॉन्ट्स को सैनिटाइज़ करता है। तीन दोष मिलकर ऐसा करते हैं कि एक क्राफ्टेड फ़ॉन्ट अप्रारंभित प्रोसेस हीप को पेज को वापस सौंप देता है। एक अकेला measureText कॉल इसे 64 KB की विंडो पर एक बार में लगभग दो बाइट्स पढ़ लेता है।
OTS आउटपुट स्ट्रीम moz_xrealloc के साथ बढ़ती है, जो मेमोरी को कभी शून्य नहीं करता। इसका Seek आवंटन आकार तक किसी भी स्थिति को स्वीकार करता है और अंतर को कभी शून्य से नहीं भरता। forget बफ़र को अधिकतम पहुँचे गए ऑफ़सेट तक आकार देता है। इसलिए अंतिम लेखन और आगे की ओर Seek के बीच कोई भी अंतर पुराने हीप के साथ कॉल करने वाले को सौंप दिया जाता है।
बड़े nonDefaultUVSOffset वाली एक cmap फॉर्मेट 14 सबटेबल सीरियलाइज़र को आगे की ओर Seek करवाती है और उत्सर्जित फ़ॉन्ट के अंदर अंतर छोड़ देती है। अंतिम सेगमेंट पर एक विषम id_range_offset वाली एक साथी फॉर्मेट 4 सबटेबल यथावत उत्सर्जित होती है। ग्लिफ़ लुकअप बाउंड्स जाँच सबटेबल के बजाय पूरे cmap के शेष भाग का उपयोग करती है। पड़ोसी सबटेबल क्षेत्र में एक छलांग पास हो जाती है।
MapCharToGlyphFormat4 क्राफ्टेड सेगमेंट पर पहुँचता है और अंतर से पढ़ा गया ग्लिफ़ id लौटाता है। इसकी hmtx एडवांस को canvas से सीधे मापा जा सकता है।

pip install fonttools brotli
python3 make_poc_font.py # builds poc.woff
# serve this folder and open poc.html
poc.html प्रत्येक रीड पर U+FFFF की एडवांस चौड़ाई प्रिंट करता है। प्रत्येक मान अंतर से पढ़े गए ग्लिफ़ id को ट्रैक करता है। गैर-शून्य अप्रारंभित बाइट्स देखने के लिए MSan या जंक फिलिंग वाले mozjemalloc बिल्ड का उपयोग करें। Windows पर DWrite के माध्यम से और macOS पर CoreText के माध्यम से प्रभावित। OTS प्रोसेस में चलता है और सैंडबॉक्स्ड नहीं है।
अप्रारंभित प्रोसेस हीप का एक वेब-नियंत्रणीय और दोहराने योग्य प्रकटीकरण। यह पॉइंटर्स या रहस्यों को उजागर कर सकता है।
दो बदलाव। दोनों में से कोई एक श्रृंखला को तोड़ देता है। OTS आउटपुट स्ट्रीम में नए आवंटित रेंज को शून्य करें। फॉर्मेट 4 सबटेबल की लंबाई जाँचें ताकि लुकअप शेष cmap के विरुद्ध बाउंड न कर सके। फ़ायरफ़ॉक्स ने दोनों को लागू किया।
Abdulaziz Alasaiqah · https://azoz.my/writeups.html