Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
Firefox-CVE-2024-9680 — CVE-2024-9680 का शैक्षणिक विश्लेषण, जो Firefox के CSS Animation Timeline में एक use-after-free भेद्यता है, जिसमें विस्तृत शोषण तंत्र और अवधारणात्मक कोड उदाहरण शामिल हैं। | Kitploit
उपकरण/GitHubGitHub/tdonaworth/firefox-cve-2024-9680
भेद्यता विश्लेषणशोषणवेब एप्लिकेशन शोषणपेपर और शोधलर्निंग और शिक्षाबाइनरी शोषण
GitHubtdonaworth/firefox-cve-2024-9680

Firefox-CVE-2024-9680

CVE-2024-9680 का शैक्षणिक विश्लेषण, जो Firefox के CSS Animation Timeline में एक use-after-free भेद्यता है, जिसमें विस्तृत शोषण तंत्र और अवधारणात्मक कोड उदाहरण शामिल हैं।

रिपॉजिटरी देखें
1111 साल पहलेअभी तक समीक्षित नहीं

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

Firefox CVE-2024-9680

CVE-2024-9680

विवरण

एक हमलावर एनिमेशन टाइमलाइन में उपयोग-पश्चात-मुक्त (use-after-free) का शोषण करके सामग्री प्रक्रिया में कोड निष्पादन प्राप्त करने में सक्षम था। हमें इस कमजोरी के जंगल में शोषण किए जाने की रिपोर्ट मिली है। यह कमजोरी Firefox < 131.0.2, Firefox ESR < 128.3.1, Firefox ESR < 115.16.1, Thunderbird < 131.0.1, Thunderbird < 128.3.1, और Thunderbird < 115.16.0 को प्रभावित करती है।

संक्षेप में (वीडियो संस्करण)

वीडियो देखें

श्रेय: Fireship

उपयोग-पश्चात-मुक्त शोषण ?!

एक "उपयोग-पश्चात-मुक्त" कमजोरी एक प्रकार की मेमोरी भ्रष्टाचार समस्या है जो तब होती है जब कोई प्रोग्राम मेमोरी को मुक्त (डीलोकेट) करने के बाद भी उस मेमोरी के लिए पॉइंटर (या संदर्भ) का उपयोग जारी रखता है। यह एक खतरनाक स्थिति है क्योंकि प्रश्नगत मेमोरी अब प्रोग्राम के स्वामित्व में नहीं है, जिसका अर्थ है कि इसे किसी अन्य उद्देश्य के लिए पुन: असाइन किया जा सकता है या प्रोग्राम के अन्य भागों द्वारा बदला जा सकता है। यदि प्रोग्राम इस मुक्त मेमोरी का उपयोग जारी रखता है, तो यह अप्रत्याशित व्यवहार, जिसमें क्रैश, डेटा भ्रष्टाचार, या हमलावरों द्वारा शोषण शामिल है, का कारण बन सकता है।

कमजोरी का विवरण:

  1. मेमोरी आवंटन और डीलोकेशन:

    • कई प्रोग्रामिंग भाषाओं में, विशेष रूप से C और C++ जैसी भाषाओं में, मेमोरी का मैन्युअल रूप से प्रबंधन किया जाता है। डेवलपर्स आवश्यकता पड़ने पर मेमोरी आवंटित करते हैं (जैसे, malloc() या new जैसे फ़ंक्शन के साथ) और जब वे इसका उपयोग पूरा कर लेते हैं तो इसे मुक्त कर देते हैं (जैसे, free() या delete के साथ)।
  2. समस्या:

    • एक उपयोग-पश्चात-मुक्त समस्या तब उत्पन्न होती है जब एक पॉइंटर अभी भी उस मेमोरी की ओर इशारा करता है जिसे पहले ही मुक्त किया जा चुका है। यदि प्रोग्राम बाद में इस मेमोरी को पढ़ने या लिखने का प्रयास करता है, तो अप्रत्याशित चीजें हो सकती हैं क्योंकि मेमोरी अब प्रोग्राम के किसी अन्य भाग को पुन: आवंटित की जा सकती है, बदली जा सकती है, या सुरक्षित उपयोग के लिए उपलब्ध नहीं रह सकती है।
  3. परिणाम:

    • क्रैश: प्रोग्राम अमान्य या भ्रष्ट मेमोरी तक पहुँचने का प्रयास कर सकता है, जिससे क्रैश हो सकता है।
    • डेटा भ्रष्टाचार: प्रोग्राम अनजाने में अनपेक्षित डेटा को अधिलेखित या पढ़ सकता है, जिससे भ्रष्टाचार हो सकता है।
    • सुरक्षा शोषण: हमलावर प्रोग्राम के मेमोरी स्पेस में हेरफेर करके उपयोग-पश्चात-मुक्त कमजोरियों का शोषण कर सकते हैं। उदाहरण के लिए, यदि कोई हमलावर मुक्त मेमोरी में नियंत्रित डेटा आवंटित कर सकता है, तो वे संभावित रूप से मनमाना कोड निष्पादित कर सकते हैं, प्रोग्राम निष्पादन प्रवाह बदल सकते हैं, या अनधिकृत पहुँच प्राप्त कर सकते हैं।

उदाहरण परिदृश्य:

एक सरलीकृत उदाहरण पर विचार करें:

root@kitploit:~
#include <stdlib.h>
#include <stdio.h>

int main() {
    int *ptr = (int *)malloc(sizeof(int)); // Allocate memory
    *ptr = 42;                             // Use the allocated memory
    free(ptr);                             // Free the memory

    // Use the pointer after freeing the memory (use-after-free)
    printf("%d\n", *ptr);                  // Undefined behavior, potential crash or exploit
    return 0;
}

उदाहरण में:

  • एक पूर्णांक के लिए मेमोरी आवंटित की जाती है, और उसमें मान 42 निर्दिष्ट किया जाता है।
  • फिर free(ptr) के साथ मेमोरी मुक्त की जाती है।
  • मेमोरी को मुक्त करने के बाद, पॉइंटर ptr का अभी भी उपयोग किया जा रहा है (printf() स्टेटमेंट में डीरेफरेंस किया गया), जो अपरिभाषित व्यवहार की ओर ले जाता है। मेमोरी पुन: असाइन की जा सकती है, और इसे एक्सेस करने से क्रैश हो सकता है या, अधिक खतरनाक परिदृश्य में, प्रोग्राम का शोषण हो सकता है।

शोषण की संभावना:

हमलावर मेमोरी प्रबंधन में सावधानीपूर्वक हेरफेर करके उपयोग-पश्चात-मुक्त कमजोरियों का शोषण कर सकते हैं। यहाँ बताया गया है कि एक हमलावर इस कमजोरी का संभावित रूप से कैसे उपयोग कर सकता है:

  1. मेमोरी पुन: आवंटन: मेमोरी मुक्त होने के बाद, यदि हमलावर यह नियंत्रित कर सकता है कि उस मुक्त मेमोरी में कौन सा डेटा रखा जाए, तो वे प्रोग्राम को इस नए डेटा का उपयोग मूल डेटा के स्थान पर करने का कारण बना सकते हैं।
  2. कोड इंजेक्शन: कुछ मामलों में, हमलावर मेमोरी स्थान में दुर्भावनापूर्ण कोड इंजेक्ट कर सकता है, जिससे वे प्रोग्राम के नियंत्रण प्रवाह को हाईजैक कर सकते हैं, जिससे रिमोट कोड निष्पादन या विशेषाधिकार वृद्धि हो सकती है।

शमन:

उपयोग-पश्चात-मुक्त कमजोरियों को रोकने के लिए, डेवलपर्स यह कर सकते हैं:

  • पॉइंटर्स को मुक्त करने के बाद उन्हें NULL पर सेट करें: इससे यह सुनिश्चित होता है कि यदि गलती से मुक्त करने के बाद किसी पॉइंटर का उपयोग किया जाता है, तो प्रोग्राम अधिक पूर्वानुमानित रूप से क्रैश होगा या नियंत्रित तरीके से व्यवहार करेगा, बजाय अमान्य मेमोरी तक पहुँचने के।
  • स्मार्ट पॉइंटर्स: C++ जैसी भाषाओं में, स्मार्ट पॉइंटर्स (जैसे, std::shared_ptr, std::unique_ptr) का उपयोग करने से स्वचालित रूप से मेमोरी प्रबंधन में मदद मिल सकती है, जिससे मैन्युअल मेमोरी कुप्रबंधन की संभावना कम हो जाती है।
  • सीमा जाँच और सैनिटाइज़र: AddressSanitizer (ASan) जैसे टूल का उपयोग करें जो विकास के दौरान उपयोग-पश्चात-मुक्त स्थितियों का पता लगाने में मदद करते हैं।

CSS एनिमेशन टाइमलाइन ने दोष का शोषण कैसे किया

इस विशिष्ट मामले में, CSS एनिमेशन टाइमलाइन—जो वेब पेज में एनिमेशन के समय को नियंत्रित करने के लिए जिम्मेदार है—अन्य ब्राउज़र घटकों के साथ इस तरह से बातचीत कर रही थी कि एनिमेशन की टाइमलाइन से बंधी एक वस्तु मुक्त हो गई, लेकिन ब्राउज़र ने इसका उपयोग जारी रखा।

  1. CSS एनिमेशन टाइमलाइन तंत्र:
  • Firefox में CSS एनिमेशन टाइमलाइन एनिमेशन के समय और प्रगति के समन्वय के लिए जिम्मेदार है। यह मूल रूप से प्रबंधित करता है कि एनिमेशन कब और कैसे शुरू, रुकते हैं और कीफ्रेम में संक्रमण करते हैं। हर बार जब कोई एनिमेशन अपडेट या क्वेरी किया जाता है, तो ब्राउज़र को टाइमलाइन से जुड़ी वस्तुओं को प्राप्त करना और उनमें हेरफेर करना होता है।
  1. गलत वस्तु प्रबंधन:
  • Firefox के CSS एनिमेशन टाइमलाइन को संभालने में एक खामी के कारण, एक वस्तु (या वस्तुओं की श्रृंखला) जिसे अभी भी टाइमलाइन में उपयोग किए जाने के दौरान संरक्षित (मेमोरी में रखा जाना) किया जाना चाहिए था, उसे समय से पहले मुक्त (डीलोकेट) कर दिया गया।
  • मेमोरी के मुक्त होने के बावजूद, टाइमलाइन ने अभी भी एनिमेशन को अपडेट या क्वेरी करने के लिए वस्तु को संदर्भित करने का प्रयास किया, जिससे उपयोग-पश्चात-मुक्त स्थिति उत्पन्न हुई। इस स्थिति में, मेमोरी को पुन: असाइन किया जा सकता है, या डेटा भ्रष्ट हो सकता है या किसी हमलावर द्वारा नियंत्रित किया जा सकता है।
  1. हमलावर का नियंत्रण:
  • उपयोग-पश्चात-मुक्त कमजोरी का शोषण करने की कुंजी समय और मेमोरी स्थिति पर नियंत्रण है। एक हमलावर एक दुर्भावनापूर्ण वेबपेज तैयार कर सकता है जो ब्राउज़र की आंतरिक वस्तु स्थितियों में हेरफेर करने के लिए CSS एनिमेशन को ट्रिगर करता है।
  • टाइमलाइन से बंधी मेमोरी के मुक्त होने के बाद, हमलावर उस मेमोरी स्थान को नियंत्रित डेटा से भर सकता है (जैसे, मुक्त मेमोरी में विशिष्ट डेटा इंजेक्ट करना)। जब CSS एनिमेशन टाइमलाइन मुक्त मेमोरी को संदर्भित करने का प्रयास करती है, तो वह इस इंजेक्ट किए गए डेटा तक पहुँच सकती है, जिससे रिमोट कोड निष्पादन (RCE), ब्राउज़र क्रैश, या अन्य अनपेक्षित व्यवहार की संभावना पैदा होती है।
  1. शोषण तंत्र:
  • कमजोरी को ट्रिगर करना: एक हमलावर विशिष्ट HTML और CSS सामग्री तैयार कर सकता है ताकि ब्राउज़र को उस मेमोरी को मुक्त करने के लिए मजबूर किया जा सके जिसका उपयोग अभी भी CSS एनिमेशन टाइमलाइन द्वारा किया जा रहा है। इसमें संभवतः एनिमेशन के समय में हेरफेर करना, तेजी से एनिमेशन को रोकना और शुरू करना, या कीफ्रेम प्रसंस्करण के किनारे के मामलों का शोषण करना शामिल होगा।
  • मुक्त मेमोरी का शोषण: वस्तु के मुक्त होने के बाद, हमलावर सावधानीपूर्वक नियंत्रित कर सकता है कि मुक्त मेमोरी स्लॉट में क्या रखा जाए (मेमोरी आवंटन तकनीकों के माध्यम से), जो उन्हें वस्तु को दुर्भावनापूर्ण डेटा से ओवरराइट करने की अनुमति दे सकता है।
  • दुर्भावनापूर्ण कोड का निष्पादन: जब CSS एनिमेशन टाइमलाइन इस मेमोरी तक पहुँचने का प्रयास करती है, तो वह गलती से हमलावर के नियंत्रित डेटा का उपयोग कर सकती है, संभावित रूप से उस कोड को निष्पादित कर सकती है जिसे हमलावर ने इंजेक्ट किया है।
  1. प्रभाव:
  • रिमोट कोड निष्पादन (RCE): कई उपयोग-पश्चात-मुक्त शोषण का अंतिम लक्ष्य RCE प्राप्त करना है, जहाँ हमलावर उपयोगकर्ता की मशीन पर मनमाना कोड चला सकता है। यह तब होता है जब हमलावर ब्राउज़र के मेमोरी स्पेस में पर्याप्त हेरफेर कर सकता है ताकि यह नियंत्रित किया जा सके कि आगे क्या निष्पादित होता है।
  • ब्राउज़र क्रैश: भले ही शोषण RCE प्राप्त न करे, उपयोग-पश्चात-मुक्त कमजोरियाँ अक्सर ब्राउज़र को क्रैश कर देती हैं जब वह अमान्य मेमोरी तक पहुँचने का प्रयास करता है।

CSS एनिमेशन टाइमलाइन कमजोर क्यों है:

CSS एनिमेशन टाइमलाइन एक जटिल प्रणाली है जो ब्राउज़र इंजन के कई विभिन्न भागों, जैसे रेंडरिंग इंजन, DOM (डॉक्यूमेंट ऑब्जेक्ट मॉडल), और जावास्क्रिप्ट निष्पादन वातावरण के साथ बातचीत करती है। एनिमेशन से बंधी वस्तुओं के जीवनचक्र का प्रबंधन करना—विशेषकर जब वे गतिशील रूप से अपडेट या हटाई जाती हैं—मुश्किल है, और मेमोरी प्रबंधन में छोटी सी गलती भी उपयोग-पश्चात-मुक्त बग का कारण बन सकती है।

CVE-2024-9680 के मामले में, ऐसा प्रतीत होता है कि टाइमलाइन ऑब्जेक्ट को ठीक से ट्रैक नहीं किया गया था, इसलिए इसे उपयोग में रहते हुए मुक्त कर दिया गया। यदि कोई हमलावर सावधानीपूर्वक समयबद्ध एनिमेशन अपडेट या हेरफेर के साथ इस बग को बार-बार ट्रिगर कर सकता है, तो वे संभावित रूप से कमजोरी का शोषण कर सकते हैं।

अवधारणात्मक उदाहरण:

इस काल्पनिक उदाहरण में जटिल CSS एनिमेशन का एक सेट वाला एक वेबपेज बनाना और उपयोग-पश्चात-मुक्त स्थिति को ट्रिगर करने के लिए जावास्क्रिप्ट के माध्यम से उनमें गतिशील रूप से हेरफेर करना शामिल हो सकता है।

root@kitploit:~
<!DOCTYPE html>
<html>
<head>
    <style>
        @keyframes exampleAnimation {
            from { opacity: 0; }
            to { opacity: 1; }
        }

        .animate {
            animation: exampleAnimation 5s infinite;
        }
    </style>
</head>
<body>
    <div id="targetElement" class="animate">Animating Element</div>

    <script>
        // Example setup: A function that continuously creates and destroys animations
        // The goal here is to simulate rapid, repeated manipulations of the CSS animation timeline
        function triggerVulnerability() {
            const target = document.getElementById('targetElement');

            // Create an animation, then remove it quickly in a loop
            let i = 0;
            const interval = setInterval(() => {
                i++;
                if (i % 2 === 0) {
                    target.classList.add('animate');
                } else {
                    target.classList.remove('animate');
                }

                // Potentially causing a race condition or triggering the vulnerability
                if (i > 1000) { 
                    clearInterval(interval); 
                }
            }, 1); // Rapid manipulation of the animation state
        }

        // Simulating dynamic DOM manipulation and timeline interaction
        triggerVulnerability();
    </script>
</body>
</html>

यह कोड क्या करता है:

  1. CSS एक एनिमेशन (exampleAnimation) को परिभाषित करता है जो एक तत्व की अपारदर्शिता को फेड इन करता है।
  2. जावास्क्रिप्ट (triggerVulnerability()) तेजी से एक तत्व से animate क्लास को जोड़ता और हटाता है, जिससे ब्राउज़र की एनिमेशन टाइमलाइन बार-बार अपडेट होती है और संभावित रूप से ब्राउज़र को तेजी से ऑब्जेक्ट निर्माण और विनाश का प्रबंधन करने के लिए मजबूर करती है।
  3. एनिमेशन का यह तीव्र हेरफेर, सिद्धांत रूप में, ब्राउज़र को मेमोरी का अनुचित प्रबंधन करने का कारण बन सकता है यदि इस बात में कोई दोष है कि वह एनिमेशन ऑब्जेक्ट्स को कैसे ट्रैक करता है (जैसे CSS एनिमेशन टाइमलाइन में)।

शोषण का अवधारणात्मक मार्ग:

  1. ऑब्जेक्ट आवंटन और डीलोकेशन: जब कोई एनिमेशन बनाया जाता है, तो ब्राउज़र उसके प्रबंधन के लिए मेमोरी आवंटित करता है। यदि एनिमेशन रोक दिया जाता है या हटा दिया जाता है, तो यह मेमोरी मुक्त हो जाती है।
  2. उपयोग-पश्चात-मुक्त को ट्रिगर करना: कमजोरी के काल्पनिक मामले में, एनिमेशन ऑब्जेक्ट्स का तेजी से निर्माण और विनाश ब्राउज़र को उस ऑब्जेक्ट तक पहुँचने का प्रयास करने का कारण बन सकता है जिसे पहले ही डीलोकेट किया जा चुका है, जिससे उपयोग-पश्चात-मुक्त स्थिति उत्पन्न होती है।
  3. शोषण की संभावना: यदि कोई हमलावर इस मेमोरी को नियंत्रित कर सकता है (शायद ब्राउज़र को मुक्त मेमोरी स्थान में नियंत्रित डेटा आवंटित करने के लिए मजबूर करके), तो वे संभावित रूप से ब्राउज़र के व्यवहार में हेरफेर कर सकते हैं, जिससे रिमोट कोड निष्पादन हो सकता है।
टूल डाउनलोड करें