← नवीनतम पेपर
💻 computer science

From Documentation to Zero-day Vulnerabilities: LLM-Driven Fuzzing of JavaScript Engines in PDF Readers

यह शोध पत्र PDFuzzer को प्रस्तुत करता है, जो एक नवीन LLM-संचालित फज़र है जो API संबंधों का अनुमान लगाने और जटिल कॉल अनुक्रमों को उत्पन्न करने के लिए लार्ज लैंग्वेज मॉडल्स का लाभ उठाता है, जिससे कोड कवरेज में उल्लेखनीय सुधार होता है और मौजूदा अत्याधुनिक उपकरणों की तुलना में मुख्यधारा के PDF रीडर्स में 31 ज़ीरो-डे कमजोरियों (zero-day vulnerabilities) की खोज की जाती है।

मूल लेखक: Suyue Guo, Stijn Pletinckx, Tianle Yu, Yigitcan Kaya, Saad Ullah, Wenbo Guo, Christopher Kruegel, Giovanni Vigna

प्रकाशित 2026-08-20
📖 9 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Suyue Guo, Stijn Pletinckx, Tianle Yu, Yigitcan Kaya, Saad Ullah, Wenbo Guo, Christopher Kruegel, Giovanni Vigna

मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें

एक ऐसी डिजिटल दस्तावेज़ की कल्पना करें जो केवल स्क्रीन पर स्थिर रहने के बजाय, सोच सके, गणना कर सके और प्रतिक्रिया दे सके। यह पोर्टेबल डॉक्यूमेंट फॉर्मेट (PDF) का वह वादा है, जब इसे एक अंतर्निहित कंप्यूटर प्रोग्राम जिसे जावास्क्रिप्ट इंजन कहा जाता है, से लैस किया जाता है। जिस तरह एक भौतिक पुस्तक में एक छिपा हुआ हिस्सा हो सकता है जो केवल एक विशिष्ट पृष्ठ पलटने पर खुलता है, उसी तरह एक PDF के भीतर ऐसा कोड हो सकता है जो रीडर एप्लिकेशन के अंदर चलता है, जिससे इंटरैक्टिव फॉर्म, स्पेल-चेकिंग और डायनेमिक मेनू संभव हो पाते हैं। हालाँकि, यह शक्ति अपने साथ एक जोखिम भी लाती है। यदि कोई हैकर इस इंजन को गलती करने के लिए बहला सके, तो वे संभावित रूप से उस कंप्यूटर का नियंत्रण ले सकते हैं जो उस फ़ाइल को पढ़ रहा है, डेटा चुरा सकते हैं या दुर्भावनापूर्ण सॉफ़्टवेयर इंस्टॉल कर सकते हैं। वर्षों से, सुरक्षा शोधकर्ताओं ने इन दस्तावेज़ों के यादृच्छिक (random) विविधताओं को PDF रीडर्स पर फेंककर इन छिपे हुए जालों को खोजने की कोशिश की है, इस उम्मीद में कि प्रोग्राम क्रैश हो जाएगा। लेकिन यह तरीका अक्सर अंधेरे में तीर चलाने जैसा है; यह उन सबसे खतरनाक खामियों को सक्रिय करने के लिए आवश्यक जटिल, विशिष्ट क्रियाओं के अनुक्रमों को चूक जाता है।

कैलिफोर्निया विश्वविद्यालय, सांता बारबरा के शोधकर्ताओं की एक टीम ने इस समस्या के लिए एक नया दृष्टिकोण विकसित किया है, जो अंधे होकर अनुमान लगाने से हटकर बुद्धिमान तर्क की ओर बढ़ता है। उन्होंने PDFuzzer नामक एक उपकरण बनाया, जो एक तीर चलाने वाले के बजाय एक ऐसे छात्र की तरह कार्य करता है जिसने किसी कार्य को करने से पहले उसके निर्देश मैनुअल का गहन अध्ययन किया है। साधारण, अलग-थलग कमांड्स पर निर्भर रहने के बजाय, यह प्रणाली सीखती है कि PDF इंजन की प्रोग्रामिंग भाषा के विभिन्न भाग एक-दूसरे पर कैसे निर्भर करते हैं। यह समझता है कि एक विशिष्ट क्रिया करने के लिए, उपयोगकर्ता को पहले एक स्थिति (condition) स्थापित करने की आवश्यकता हो सकती है, या दो अलग-अलग कमांड्स को एक साथ काम करने के लिए बिल्कुल एक ही नाम का उपयोग करना चाहिए। कंप्यूटर को इन सॉफ़्टवेयर इंजनों के जटिल, लिखित दस्तावेज़ों को पढ़ने और समझने के लिए प्रशिक्षित करके, शोधकर्ता अत्यधिक परिष्कृत टेस्ट केस उत्पन्न करने में सक्षम हुए जिन्हें पिछले उपकरण कल्पना भी नहीं कर सकते थे।

इस नई पद्धति का मूल इस बात में निहित है कि यह सॉफ़्टवेयर के "नियमों" को कैसे संभालती है। अतीत में, स्वचालित परीक्षण उपकरण अक्सर संघर्ष करते थे क्योंकि वे केवल बुनियादी संबंधों को समझते थे, जैसे कि एक कमांड द्वारा परिणाम को अगले को रिले रेस में बैटन की तरह सौंपना। वे अधिक सूक्ष्म संबंधों को मिस कर देते थे, जैसे कि जब दो कमांड्स को सही ढंग से परस्पर क्रिया करने के लिए एक ही विशिष्ट मान (value) का उपयोग करना होता है, या जब एक कमांड एक छिपी हुई स्थिति (state) निर्धारित करता है जिस पर बाद वाला कमांड निर्भर करता है। PDFuzzer एक लार्ज लैंग्वेज मॉडल का उपयोग करता है, जो टेक्स्ट की विशाल मात्रा पर प्रशिक्षित एक प्रकार का आर्टिफिशियल इंटेलिजेंस है, जो सॉफ़्टवेयर के आधिकारिक मैनुअल्स और तकनीकी ट्रेसेस को पढ़ता है। इसके बाद, यह एक विस्तृत मानचित्र बनाता है कि प्रत्येक फंक्शन दूसरे फंक्शन से कैसे संबंधित है। यह लिखित विवरणों को सख्त तार्किक नियमों में अनुवादित करता है, यह सुनिश्चित करते हुए कि जब यह एक टेस्ट जनरेट करता है, तो पैरामीटर्स पूरी तरह से मेल खाते हों। उदाहरण के लिए, यदि एक कमांड के लिए एक विशिष्ट नाम का उपयोग करने की आवश्यकता है, तो सिस्टम यह सुनिश्चित करता है कि बाद के कमांड में उसी नाम का उपयोग किया जाए जिसे उसकी आवश्यकता है, बजाय इसके कि वह यादृच्छिक रूप से अनुमान लगाए।

अपने निर्माण का परीक्षण करने के लिए, शोधकर्ताओं ने PDFuzzer को दुनिया भर में उपयोग किए जाने वाले तीन सबसे लोकप्रिय PDF रीडर्स पर लागू किया: एडोब एक्रोबैट रीडर (Adobe Acrobat Reader), फॉक्सिट PDF रीडर (Foxit PDF Reader), और PDF-XChange एडिटर (PDF-XChange Editor)। उन्होंने अपने टूल को हफ्तों तक चलाया, और मौजूदा सर्वोत्तम तरीकों के विरुद्ध इसके प्रदर्शन की तुलना की जिनका उपयोग आज सुरक्षा विशेषज्ञ करते हैं। परिणाम आश्चर्यजनक थे। जहाँ पुराने उपकरण सॉफ़्टवेयर के आंतरिक तर्क के केवल एक अंश को ही खोज पाए, वहीं PDFuzzer ने काफी गहराई तक पहुँच बनाई, और कोड के 48 प्रतिशत अधिक हिस्से को कवर किया। इससे भी महत्वपूर्ण बात यह है कि इस गहरी खोज ने 31 पहले से अज्ञात सुरक्षा खामियों, जिन्हें 'ज़ीरो-डे वल्नरेबिलिटीज़' (zero-day vulnerabilities) कहा जाता है, की खोज की। ये मामूली गड़बड़ियाँ नहीं थीं; इनमें से कई गंभीर मुद्दे थे जो हमलावर को मनमाना कोड निष्पादित करने (execute arbitrary code) की अनुमति दे सकते थे, जो मूल रूप से पीड़ित के कंप्यूटर का पूर्ण नियंत्रण लेने, या संवेदनशील जानकारी लीक करने की क्षमता रखते थे। इसके विपरीत, अन्य उपकरणों ने समान अवधि के दौरान अधिकतम छह ऐसी खामियों को ही खोजा था।

शोधकर्ता केवल बग खोजने तक ही नहीं रुके; उन्होंने सॉफ़्टवेयर निर्माताओं के साथ सीधे काम किया ताकि उन्हें ठीक किया जा सके। एक समन्वित प्रक्रिया के माध्यम से, उन्होंने 31 कमजोरियों का विवरण उन कंपनियों को बताया जो PDF रीडर्स के लिए जिम्मेदार हैं। उद्योग ने त्वरित प्रतिक्रिया दी और 26 मुद्दों की पुष्टि की गई और उन्हें पैच किया गया, तथा दस को उपयोगकर्ताओं को चेतावनी देने के लिए आधिकारिक सुरक्षा पहचानकर्ता दिए गए। शोधकर्ताओं को उनके काम के लिए 'बग बाउंटी' के रूप में $2,450 का वित्तीय पुरस्कार भी प्राप्त हुआ। यह परिणाम उनके दृष्टिकोण के व्यावहारिक मूल्य को रेखांकित करता है: जटिल सॉफ़्टवेयर संबंधों को समझने के कठिन कार्य को स्वचालित करके, वे उन खतरों को खोजने और ठीक करने में सक्षम रहे जिन्हें मानव विशेषज्ञों और पुराने स्वचालित उपकरणों ने मिस कर दिया था।

उनकी सफलता का एक प्रमुख हिस्सा यह था कि टूल ने सॉफ़्टवेयर मैनुअल्स की विशाल मात्रा को कैसे संभाला। इन इंजनों के दस्तावेज़ सैकड़ों पन्नों लंबे हो सकते हैं, जो तकनीकी विवरणों से भरे होते हैं जिन्हें कंप्यूटर के लिए स्वचालित रूप से समझना कठिन होता है। शोधकर्ताओं ने पाया कि केवल आर्टिफिशियल इंटेलिजेंस से शुरुआत से टेस्ट केस बनाने के लिए कहना धीमा था और अक्सर निरर्थक परिणाम देता था। इसके बजाय, उन्होंने AI का उपयोग एक अनुवादक के रूप में किया, जो प्राकृतिक भाषा को सटीक, मशीन-पठनीय नियमों में परिवर्तित करता है। उन्होंने प्रक्रिया को चरणों में विभाजित किया: पहले, कमांड्स की बुनियादी संरचना को निकालना; दूसरे, उन कमांड्स के लिए छिपे हुए विवरणों का अनुमान लगाना जो पूरी तरह से प्रलेखित (documented) नहीं थे; और तीसरे, एक गणितीय सॉल्वर का उपयोग करना यह सुनिश्चित करने के लिए कि जनरेट किए गए टेस्ट केस सभी तार्किक बाधाओं (logical constraints) को पूरा करते हैं। यह हाइब्रिड दृष्टिकोण, जिसमें आर्टिफिशियल इंटेलिजेंस की तर्क शक्ति को गणितीय तर्क की सटीकता के साथ जोड़ा गया, केवल AI पर निर्भर रहने की तुलना में कहीं अधिक कुशल और प्रभावी साबित हुआ।

अध्ययन ने यह भी खुलासा किया कि सबसे खतरनाक कमजोरियों के लिए घटनाओं के एक विशिष्ट अनुक्रम की आवश्यकता होती थी जिसे पिछले उपकरण पुनरुत्पादित (replicate) नहीं कर सके। उदाहरण के लिए, एक खामी में ऐसी स्थिति शामिल थी जहाँ एक यूजर इंटरफेस तत्व बनाया गया और फिर तुरंत हटा दिया गया, लेकिन बाद का कमांड उसका उपयोग करने की कोशिश करता है। इसे ट्रिगर करने के लिए, टेस्ट केस को उस तत्व को बनाना, उसका उपयोग करना, उसे हटाना और फिर से उसे एक्सेस करने की कोशिश करना आवश्यक था, और यह भी सुनिश्चित करना था कि प्रत्येक चरण में उपयोग किए गए नाम और मान (values) समान हों। पुराने उपकरण, जो प्रत्येक कमांड को एक अलग घटना के रूप में देखते थे, इस विशिष्ट श्रृंखला को उत्पन्न नहीं कर सके। PDFuzizer द्वारा, कमांड्स के बीच के संबंध को समझने के कारण, उस खामी को उजागर करने के लिए आवश्यक सटीक अनुक्रम का निर्माण किया जा सका। जटिल निर्भरताओं को मॉडल करने की इस क्षमता ने ही अधिकांश नई कमजोरियों को खोजने में निर्णायक भूमिका निभाई।

PDF रीडर्स के तत्काल सफलता के अलावा, शोधकर्ता सुझाव देते हैं कि उनके तरीके को अन्य क्षेत्रों में भी लागू किया जा सकता है जहाँ विस्तृत दस्तावेज़ मौजूद हैं। उन्होंने अपने पाइपलाइन का परीक्षण माइक्रोसॉफ्ट वर्ड मैक्रोज़ (Microsoft Word macros) के लिए उपयोग की जाने वाली प्रोग्रामिंग भाषा पर किया, जो एक अलग लेकिन समान रूप से जटिल वातावरण है, और पाया कि वहां भी वही प्रकार के संबंध और निर्भरताएं मौजूद थीं। यह इंगित करता है कि सॉफ़्टवेयर घटकों के बीच परस्पर क्रिया को समझने की चुनौती केवल PDF रीडर्स तक सीमित नहीं है, बल्कि यह आधुनिक कंप्यूटिंग में एक व्यापक मुद्दा है। लिखित मैनुअल्स को कठोर परीक्षण नियमों में स्वचालित रूप से बदलने की क्षमता हमारे दैनिक जीवन को संचालित करने वाले सॉफ़्टवेयर को सुरक्षित करने का एक नया मार्ग प्रदान करती है।

अंत में, यह कार्य प्रदर्शित करता है कि सॉफ़्टवेयर सुरक्षा का भविष्य शायद कंप्यूटर को हमारे द्वारा लिखे गए निर्देशों को पढ़ने और समझने के लिए प्रशिक्षित करने में निहित है। मानव-लिखित दस्तावेज़ों और मशीन-जनित परीक्षणों के बीच के अंतर को पाटकर, शोधकर्ताओं ने दिखाया है कि हम खतरनाक खामियों को पहले से कहीं अधिक तेज़ी से और अधिक गहनता से खोज और ठीक कर सकते हैं। उनके द्वारा खोजी गई 31 कमजोरियां इस बात की याद दिलाती हैं कि हमारे द्वारा उपयोग किए जाने वाले सॉफ़्टवेयर में कितनी जटिलता छिपी हुई है, और हम कितने सुरक्षित हो सकते हैं जब हमारे पास ऐसे उपकरण हों जो बुरे तत्वों (bad actors) से पहले दरारों को ढूंढ सकें। यह प्रक्रिया जादू या भाग्य के बारे में नहीं थी, बल्कि सॉफ़्टवेयर के तर्क के माध्यम से सोचने वाले सिस्टम के निर्माण के बारे में थी, यह सुनिश्चित करते हुए कि प्रत्येक टेस्ट केस सिस्टम को तोड़ने का एक सार्थक प्रयास हो, न कि केवल एक यादृच्छिक अनुमान।

अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?

आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।

Digest आज़माएँ →