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

Vulnerability Abundance: A formal proof of infinite vulnerabilities in code

यह शोध पत्र एक औपचारिक प्रमाण प्रस्तुत करता है कि एक एकल सी (C) प्रोग्राम में CVE-योग्य भेद्यताओं (vulnerabilities) का एक गणनीय अनंत (countably infinite) सेट हो सकता है, जो सुरक्षा दोषों के वितरण का विश्लेषण करने के लिए "भेद्यता प्रचुरता" (vulnerability abundance) की अवधारणा को पेश करता है और भेद्यताओं की सैद्धांतिक अनंतता तथा वास्तविक एक्सप्लॉइट्स के परिमित सेट के बीच अंतर करता है।

मूल लेखक: Eireann Leverett, Jeroen van der Ham-de Vos

प्रकाशित 2026-04-10
📖 7 मिनट में पढ़ें🧠 गहराई से पढ़ें

मूल लेखक: Eireann Leverett, Jeroen van der Ham-de Vos

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

मुख्य विचार: अनंत बग मशीन (The Infinite Bug Machine)

कल्पना कीजिए कि आपके पास एक जादुई फैक्ट्री है। आप उसमें एक बटन डालते हैं, और वह एक नया, अनूठा सॉफ्टवेयर प्रोग्राम बाहर निकालती है। लेकिन यहाँ एक ट्विस्ट है: उस द्वारा बनाए गए हर एक प्रोग्राम में एक छिपा हुआ ट्रैपडोर (trapdoor) है।

इस शोध पत्र के लेखकों ने "वल्नरेबिलिटी फैक्ट्री" (Vulnerability Factory) नामक एक वास्तविक, काम करने वाला कंप्यूटर प्रोग्राम बनाया। उन्होंने गणितीय रूप से सिद्ध किया कि यह फैक्ट्री अनंत काल तक नए प्रोग्राम बनाती रह सकती है, और उनमें से प्रत्येक में एक विशिष्ट, ठीक करने योग्य सुरक्षा दोष (security flaw) है।

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

एक्शन में फैक्ट्री: कुकी कटर की उपमा (A Cookie Cutter Analogy)

वल्नरेबिलिटी फैक्ट्री को एक हाई-टेक कुकी कटर की तरह समझें।

  • आटा (Dough): यह बुनियादी कोड संरचना है।
  • कटर (Cutter): यह "वल्नरेबिलिटी" वाला हिस्सा है।
  • प्रक्रिया (Process): हर बार जब मशीन चलती है, तो वह कुकी के आकार को थोड़ा बदल देती है (शायद 16 इंच, फिर 17 इंच, फिर 18 इंच)।

सॉफ्टवेयर सुरक्षा की दुनिया में, यदि आपके पास "बफर ओवरफ्लो" (Buffer Overflow) बग है (जो कि एक छेद का क्लासिक प्रकार है जहाँ डेटा बाहर निकल जाता है), तो यह आमतौर पर तब होता है जब एक प्रोग्राम बहुत अधिक पानी को एक कप में डालने की कोशिश करता है।

  • मशीन रन #1: एक ऐसा कप बनाता है जो 16 औंस का है। यदि आप 17 डालते हैं, तो यह टूट जाता है।
  • मशीन रन #2: एक ऐसा कप बनाता है जो 17 औंस का है। यदि आप 18 डालते हैं, तो यह टूट जाता है।

भले ही गलती का प्रकार एक ही हो (कप को ओवरफ्लो करना), लेकिन विशिष्ट विवरण अलग हैं। सॉफ्टवेयर सुरक्षा की वास्तविक दुनिया में (विशेष रूप से CVE सिस्टम में जिसका उपयोग बग को ट्रैक करने के लिए किया जाता है), यदि कप का आकार अलग है, तो इसे एक अलग बग माना जाता है।

चूंकि मशीन 16, 17, 18... के आकार के कप अनंत तक बना सकती है, इसलिए यह अनंत संख्या में विशिष्ट बग बनाती है।

"केमिकल एबंडेंस" की उपमा (The "Chemical Abundance" Analogy)

यह शोध पत्र एक नया सिद्धांत पेश करता है जिसे "वल्नरेबिलिटी एबंडेंस" (Vulnerability Abundance) कहा जाता है। इसे समझने के लिए, रसायन विज्ञान (chemistry) के ब्रह्मांड की कल्पना करें।

  • हाइड्रोजन हर जगह है। यह सबसे आम तत्व है।
  • सोना (Gold) दुर्लभ है।
  • ऑक्सीजन पृथ्वी की पपड़ी (crust) में आम है लेकिन गहरे अंतरिक्ष में दुर्लभ है।

लेखक कहते हैं कि सॉफ्टवेयर भी ऐसा ही है।

  • मेमोरी एरर्स (Memory Errors) (जैसे बफर ओवरफ्लो) C और C++ प्रोग्रामिंग के "हाइड्रोजन" हैं। वे हर जगह हैं क्योंकि ये भाषाएं आपको मेमोरी के साथ सीधे छेड़छाड़ करने की अनुमति देती हैं।
  • लॉजिक एरर्स (Logic Errors) Python या Java के "सोने" की तरह हो सकते हैं। उन भाषाओं में वे दुर्लभ हैं क्योंकि वे आपको मेमोरी संबंधी गलतियां करने से रोकती हैं, लेकिन आप अभी भी लॉजिकल गलतियां कर सकते हैं।

यह क्यों मायने रखता है?
जिस तरह एक रसायन शास्त्री ब्रह्मांड को समझने के लिए तत्वों के पाए जाने के स्थान का अध्ययन करता है, उसी तरह सुरक्षा विशेषज्ञों को बड़े जोखिमों को समझने के लिए "वल्नरेबिलिटी एबंडेंस" का अध्ययन करना चाहिए। यदि कोई कंपनी ऐसी भाषा का उपयोग करती है जो मेमोरी एरर्स के मामले में "समृद्ध" (rich) है, तो उस कंपनी में सुरक्षित भाषा का उपयोग करने वाली कंपनी की तुलना में संभावित बग्स की "एबंडेंस" बहुत अधिक होगी।

पेच: अनंत बग बनाम सीमित एक्सप्लॉइट्स (Infinite Bugs vs. Finite Exploits)

यहाँ शोध पत्र का सबसे महत्वपूर्ण हिस्सा है, और यह थोड़ी राहत देने वाला है।

सिर्फ इसलिए कि अनंत बग हैं, इसका मतलब यह नहीं है कि अनंत हैकर्स या अनंत हमले भी हैं।

इसे एक जंगल की तरह सोचें जिसमें अनंत पेड़ हैं।

  • बग्स (Bugs): जंगल का हर एक पेड़ बाघ के छिपने की एक संभावित जगह है। चूंकि अनंत पेड़ हैं, इसलिए छिपने की जगह भी अनंत है।
  • एक्सप्लॉइट्स (Exploits): बाघ (हैकर्स) दुर्लभ हैं। वे केवल उन्हीं पेड़ों का शिकार करते हैं जो सड़क के पास हैं (लोकप्रिय सॉफ्टवेयर) या वे पेड़ जिन्हें चढ़ना आसान है।

शोध पत्र एक कठोर वास्तविकता की ओर इशारा करता है:

  1. अधिकांश बग्स का कभी उपयोग नहीं किया जाता है। ज्ञात सॉफ्टवेयर बग्स में से केवल लगभग 6% का ही हैकर्स द्वारा वास्तव में शोषण (exploit) किया जाता है।
  2. हैकर्स आलसी (कुशल रूप से) होते हैं। उन्हें हर बग खोजने की ज़रूरत नहीं है। उन्हें बस उस सॉफ्टवेयर में बग खोजने की ज़रूरत है जिसे हर कोई उपयोग करता है

यदि 90% दुनिया Windows का उपयोग करती है, और Windows में एक बग है, तो वह एक बग उस छोटे, अज्ञात प्रोग्राम के लाखों बगों से अधिक खतरनाक है जिसे केवल पांच लोग उपयोग करते हैं।

"स्मॉल फ्लीट" का सिद्धांत (The "Small Fleet" Principle)

लेखक इसके लिए एक बेहतरीन रूपक का उपयोग करते हैं:
कल्पना कीजिए कि दुनिया के महासागर द्वीपों (वल्नरेबिलिटी) से भरे हुए हैं। वहां अनंत द्वीप हैं।

  • लेकिन समुद्री डाकुओं का बेड़ा (हैकर्स) छोटा है।
  • समुद्री डाकू हर द्वीप तक नहीं जाते। वे केवल उन तीन सबसे बड़े द्वीपों पर जाते हैं जहाँ खजाना है।

चूंकि सॉफ्टवेयर का "परिनियोजन" (deployment) केंद्रित है (हर कोई एक ही कुछ ऑपरेटिंग सिस्टम और ब्राउज़र का उपयोग करता है), इसलिए कुछ ही एक्सप्लॉइट्स लगभग सभी को खतरे में डाल सकते हैं। आपको हैकर्स की अनंत सेना की आवश्यकता नहीं है; आपको बस कुछ अच्छे लोगों की आवश्यकता है जो लोकप्रिय लक्ष्यों पर प्रहार कर सकें।

हमें क्या करना चाहिए?

शोध पत्र रणनीति में बदलाव का सुझाव देता है:

  1. "सभी" बग्स को खोजने की कोशिश छोड़ दें। चूंकि वे अनंत हैं, इसलिए आप काम कभी पूरा नहीं कर पाएंगे। यह समुद्र तट पर रेत के हर कण को गिनने की कोशिश करने जैसा है जो बढ़ता ही जा रहा है।
  2. "एबंडेंस" को मापना शुरू करें। केवल बग्स को गिनने के बजाय, हमें पूछना चाहिए: "हम जो सॉफ्टवेयर उपयोग कर रहे हैं उनमें किस प्रकार के बग सबसे आम हैं?"
  3. "सामग्री" (Ingredients) बदलें। यदि हम जानते हैं कि C और C++ खतरनाक मेमोरी बग्स के मामले में "समृद्ध" हैं, तो हमें Rust या Go जैसी भाषाओं की ओर बढ़ना चाहिए, जो उन विशिष्ट बग्स के मामले में "गरीब" (poor) हैं। यह हमारे सॉफ्टवेयर की रासायनिक संरचना को बदल देता है, जिससे खतरे का "हाइड्रोजन" बहुत कम समृद्ध हो जाता है।

सारांश

  • प्रमाण: हमने एक ऐसी मशीन बनाई है जो सिद्ध करती है कि सॉफ्टवेयर में अनंत बग हैं।
  • अवधारणा: हमें तत्वों को मापने की तरह विभिन्न प्रकार के बग्स की "एबंडेंस" को मापना चाहिए।
  • वास्तविकता: अनंत बग्स का मतलब अनंत खतरा नहीं है। खतरा बग्स + लोकप्रिय सॉफ्टवेयर के संयोजन से आता है।
  • समाधान: हर एक छेद को पैच करने की कोशिश न करें। इसके बजाय, उन प्रोग्रामिंग भाषाओं को बदलें जिनका हम उपयोग करते हैं ताकि "खतरनाक तत्व" शुरुआत में ही कम समृद्ध हों।

शोध पत्र एक मजाक के साथ समाप्त होता है: यदि आपको उनका काम पसंद आता है, तो आपको CVE डेटाबेस से उन्हें एक बग आईडी के रूप में CVE-2026-Infinity देने के लिए कहना चाहिए।

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

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

Digest आज़माएँ →