ब्राउज़र एक्सटेंशन ओवरलोड: क्यों निष्क्रिय ऐड-ऑन एक बढ़ती सुरक्षा संकट हैं
हम ब्राउज़र एक्सटेंशन को एक कबाड़ दराज की तरह मानते हैं। एक दिन वे अपरिहार्य उत्पादकता बूस्टर होते हैं जो तुरंत UI प्रेरणा कैप्चर करते हैं, अगले दिन वे एड्रेस बार के ऊपर चुपचाप बैठे भूले-बिसरे ब्लोटवेयर बन जाते हैं। लेकिन एक धूल भरी रसोई दराज के विपरीत, एक अनुरक्षित एक्सटेंशन सिर्फ जगह नहीं लेता। इसके पास आपके डॉक्यूमेंट ऑब्जेक्ट मॉडल, आपके क्लिपबोर्ड और अक्सर आपके ब्राउज़िंग इतिहास तक पढ़ने-लिखने की पहुंच होती है। जब आप उस उपेक्षित आइकन को महीनों तक अनदेखा करते हैं, तो आप सिर्फ गंदगी नहीं फैला रहे; आप हर उस टैब में एक प्रमाणित बैकडोर खुला छोड़ रहे हैं जिस पर आप जाते हैं।
आधुनिक वेब डेवलपर का वर्कफ़्लो विशेष टूलिंग, React DevTools, कलर पिकर, CSS कॉपियर और AI असिस्टेंट पर निर्भर करता है, लेकिन यही निर्भरता एक बड़ा हमला सतह बनाती है। जैसे-जैसे बाजार हल्के-फुल्के कॉपीकैट एक्सटेंशन से भर जाता है जो आपके UI वर्कफ़्लो को "सुपरचार्ज" करने का वादा करते हैं, एक कठोर सच्चाई सामने आती है: अधिक एक्सटेंशन का मतलब अधिक शक्ति नहीं है। उनका मतलब अधिक जोखिम है।
मौन अनुमति क्रीप जिसे आप हर अपडेट में अनदेखा करते हैं
अनुमति बहाव मेंढक को उबालने के तकनीकी समकक्ष है। जब आप एक साधारण CSS निरीक्षक स्थापित करते हैं, तो यह शुरू में "सक्रिय टैब" डेटा तक पहुंच का अनुरोध कर सकता है। छह महीने बाद, एक स्वचालित अपडेट के बाद, वही एक्सटेंशन अचानक उन सभी डेवलपर-दस्तावेज़ीकरण साइटों पर सभी डेटा पढ़ सकता है जिन पर आप जाते हैं, और शायद उन साइटों पर भी जिन पर आप नहीं जाते। ब्राउज़र विक्रेताओं ने अनुमति चेतावनियों में सुधार किया है, लेकिन वे उपयोगकर्ताओं पर निर्भर करते हैं कि वे वास्तव में अपडेट प्रॉम्प्ट पढ़ें। हममें से अधिकांश उसी मांसपेशी स्मृति के साथ "स्वीकार करें" पर क्लिक करते हैं जिसका उपयोग हम कुकी बैनर बंद करने के लिए करते हैं।
वैध एक्सटेंशन दुर्भावनापूर्ण होल्डिंग कंपनियों द्वारा इस विश्वास का शोषण करने के लिए अधिग्रहित किए जाते हैं। मूल डेवलपर ने अपने उपयोगकर्ता आधार को बेच दिया, और रातोंरात, अपडेट पाइपलाइन एक डेटा स्क्रैपर को बाहर धकेल देती है जो आपके पसंदीदा JSON फ़ॉर्मेटर के रूप में प्रच्छन्न होता है। यदि आप सक्रिय रूप से किसी एक्सटेंशन के चेंजलॉग और अनुमति इतिहास की निगरानी नहीं कर रहे हैं, और स्पष्ट रूप से, किसी के पास पंद्रह विभिन्न उपयोगिता प्लगइन्स के लिए अंतर पढ़ने का समय नहीं है, तो आप एक आपूर्ति श्रृंखला में अंध विश्वास रख रहे हैं जिसका आप ऑडिट नहीं कर सकते।
कैसे ज़ोंबी एक्सटेंशन आपके देव वातावरण के प्रदर्शन को तोड़फोड़ करते हैं
सुरक्षा जोखिम सुर्खियाँ बटोरते हैं, लेकिन प्रदर्शन में गिरावट आपको बिना चेतावनी के दैनिक रूप से प्रभावित करती है। आधुनिक ब्राउज़र मल्टी-प्रोसेस जानवर हैं, फिर भी हर सक्रिय एक्सटेंशन अपनी मेमोरी फुटप्रिंट और जावास्क्रिप्ट निष्पादन थ्रेड इंजेक्ट करता है। एक निष्क्रिय UI कैप्चर टूल जिसे आपने हफ्तों में नहीं खोला है, वह अभी भी हर पेज पर हर DOM परिवर्तन पर म्यूटेशन ऑब्ज़र्वर संलग्न कर रहा हो सकता है, एक "कैप्चर हॉटकी" की प्रतीक्षा कर रहा है जिसे आप बाँधना भूल गए।

एक फ्रंटएंड डेवलपर के लिए जो मेमोरी लीक या रेस कंडीशन डीबग कर रहा है, यह निर्धारित करना कि कोई बग आपके एप्लिकेशन कोड में उत्पन्न होता है या किसी तृतीय-पक्ष एक्सटेंशन स्क्रिप्ट में, एक विशेष प्रकार का नरक है। वे इंजेक्ट की गई सामग्री स्क्रिप्ट वैश्विक दायरे को प्रदूषित करती हैं, देशी प्रोटोटाइप को ओवरराइड करती हैं, और अतुल्यकालिक हस्तक्षेप बनाती हैं जो स्पेगेटी कोड के ढेर के समान दिखता है। Chrome DevTools में अपने स्वयं के React हाइड्रेशन बेमेल को प्रोफाइल करने में चार घंटे बिताने से पहले, आपको यह ऑडिट करना चाहिए कि क्या कोई अनपैच्ड एक्सटेंशन वास्तविक अपराधी है।

आपके PageSpeed स्कोर को मारने से पहले संसाधन नालियों की पहचान करना
एक व्यावहारिक ट्राइएज एक साधारण गुप्त विंडो से शुरू होता है। सभी एक्सटेंशन अक्षम करें और एक Lighthouse ऑडिट चलाएं। फिर उन्हें एक-एक करके पुनः सक्षम करें, हर बार प्रदर्शन ट्रेस को फिर से चलाएं। आप अक्सर पाएंगे कि एक आला उपयोगिता, शायद एक अति-विशिष्ट React प्रॉप एक्सट्रैक्टर जिसे आपने एक सम्मेलन वार्ता के दौरान स्थापित किया था, हर नेविगेशन पर 300ms ब्लॉकिंग जावास्क्रिप्ट इंजेक्ट कर रहा है। आपकी उत्पादन साइट पर आने वाले आगंतुक के लिए, 300ms की अनुमानित देरी एक रूपांतरण और एक बाउंस के बीच का अंतर है। आपके लिए, यह वास्तविकता के विकृत सिमुलेशन में डीबग करना है।
अव्यवस्था के बिना UI कॉपी करना: सुरक्षा-प्रथम दृष्टिकोण
फ्रंटएंड डेवलपर्स के रूप में, ब्राउज़र एक्सटेंशन के साथ हमारा संबंध अद्वितीय रूप से घनिष्ठ है। हम उनका उपयोग केवल विज्ञापन-अवरोधन के लिए नहीं करते; हम उनका उपयोग अन्य लोगों के यूज़र इंटरफेस को विच्छेदित करने, कॉपी करने और सीखने के लिए करते हैं। किसी भी लाइव वेबसाइट से एक पूरी तरह से स्टाइल किया गया प्राइसिंग ग्रिड, एक उत्तरदायी नेविगेशन संरचना, या एक जटिल मल्टी-स्टेप फॉर्म को हथियाने की क्षमता एक उत्पादकता सुपरपावर है। लेकिन ऐतिहासिक रूप से, यह शक्ति खतरे के साथ बंडल में आई। वह एक्सटेंशन जो आपको एक-क्लिक तत्व कॉपी करने की सुविधा देता है, उसके पास पूर्ण डॉक्यूमेंट ऑब्जेक्ट मॉडल तक पहुंच भी है, जो एक पेचकस उधार लेने के लिए किसी को अपने घर की चाबी देने के डिजिटल समकक्ष है।
यह वह जगह है जहां उद्योग को अधिकतम पहुंच से न्यूनतम विशेषाधिकार की ओर बदलाव की आवश्यकता है। आदर्श उपकरण को उस कॉपी किए गए UI को स्वच्छ, पोर्टेबल HTML और CSS में परिवर्तित करना चाहिए, बिना पृष्ठभूमि स्क्रिप्ट की आवश्यकता के जो आपकी ब्राउज़िंग को ट्रैक करती हैं। इसे एक शल्य चाकू के रूप में काम करना चाहिए, न कि हमेशा चलने वाली निगरानी प्रणाली के रूप में। आप कच्ची HTML संरचना और गणना की गई शैलियाँ चाहते हैं, कुछ भी अधिक नहीं, कुछ भी कम नहीं। कोई व्यवहार ट्रैकिंग नहीं, कोई उपयोगकर्ता-एजेंट फिंगरप्रिंटिंग नहीं, कोई टेलीमेट्री नहीं जो किसी ऐसे एनालिटिक्स डैशबोर्ड पर घर फोन करती है जिसे आपने कभी नहीं देखा।
"डेवलपर के ब्राउज़र में सबसे खतरनाक अनुमति 'सभी डेटा पढ़ें और बदलें' नहीं है, बल्कि दो साल तक मौन अपडेट प्राप्त करते हुए निष्क्रिय और भूला हुआ बैठे रहने की अनुमति है।"
मैन्युअल निरीक्षण अब स्केलेबल क्यों नहीं है
शुद्धतावादी का बचाव एक्सटेंशन निर्भरता से पूरी तरह बचना है, UI को मैन्युअल रूप से पुनर्निर्मित करना। आप एक ग्रेडिएंट टेक्स्ट इफेक्ट देखते हैं, आप DevTools खोलते हैं, आप गणना की गई शैलियों को छानते हैं, विघटित परतों को कॉपी करते हैं, और इसे पुनर्निर्मित करने में 45 मिनट बिताते हैं। यह दृष्टिकोण निश्चित रूप से सुरक्षित है, लेकिन एक स्टार्टअप समयरेखा के भीतर जो तेजी से पुनरावृत्ति की मांग करती है, यह एक अविस्तारणीय अड़चन है। मध्य मार्ग उन उपकरणों में निहित है जो चुने गए तत्व का एक स्टेटलेस ट्रांसक्रिप्शन करते हैं, कॉपी पूरी होने के बाद तुरंत निष्पादन लूप से खुद को हटा लेते हैं। कोई स्थायी पृष्ठभूमि संदर्भ नहीं। कोई अनावश्यक द्विदिश संचार नहीं। बस एक एकल-शॉट, परमाणु संचालन जो शून्य निशान छोड़ता है।
एक दुबली, ऑडिट करने योग्य एक्सटेंशन सूची बनाना
परिधि रक्षा क्रूर वर्गीकरण से शुरू होती है। अपने ब्राउज़र का एक्सटेंशन प्रबंधन पैनल खोलें, हर क्रोमियम ब्राउज़र में chrome://extensions है, फ़ायरफ़ॉक्स about:addons प्रदान करता है, और अपनी सूची को तीन बाल्टियों में विभाजित करें: सुरक्षा महत्वपूर्ण, वर्कफ़्लो क्षणिक, और अज्ञात ऋण।

सुरक्षा महत्वपूर्ण में पासवर्ड मैनेजर, हार्डवेयर सुरक्षा टोकन हैंडलर और मल्टी-फैक्टर प्रमाणीकरण ब्रिज शामिल हैं। ये रहते हैं, लेकिन इन्हें मैन्युअल रूप से अपडेट किया जाना चाहिए और जब संभव हो तो स्रोत-कोड रिपॉजिटरी के खिलाफ सत्यापित किया जाना चाहिए। वर्कफ़्लो क्षणिक वस्तुएं आपके React DevTools, आपके क्लिपबोर्ड मैनेजर और आपके UI कॉपी करने वाली उपयोगिताएं हैं। इन्हें "सभी साइटों पर" व्यापक पहुंच देने के बजाय "क्लिक पर" या "विशिष्ट साइटों पर" मोड में टॉगल किया जाना चाहिए। अज्ञात ऋण बाकी सब कुछ है, इसे फ्रीज किया जाता है और अड़तालीस घंटों के भीतर हटाने के लिए निर्धारित किया जाता है जब तक कि आप एक विशिष्ट उपयोग मामले का दस्तावेजीकरण न करें।
साइट-विशिष्ट एक्सेस नियंत्रण लागू करना
ग्रैन्युलर होस्ट अनुमतियाँ आधुनिक ब्राउज़रों में सबसे कम उपयोग की जाने वाली सुरक्षा सुविधा हैं। किसी UI निष्कर्षण उपकरण को https://*/* पढ़ने की अनुमति देने के बजाय, इसे अपने डिज़ाइन-प्रेरणा-संग्रह बोर्ड या विशिष्ट उत्पादन समीक्षा साइटों तक सीमित करें। आप क्रोमियम ब्राउज़र में किसी एक्सटेंशन आइकन पर राइट-क्लिक करके, "यह साइट डेटा पढ़ और बदल सकता है" चुनकर, और दायरे को "सभी साइटों पर" से "क्लिक पर" या अनुमोदित डोमेन की कस्टम सूची में बदलकर इसे कॉन्फ़िगर कर सकते हैं।
डेवलपर्स के लिए, यह पैटर्न एक सुखद घर्षण पैदा करता है। जब आपको वास्तव में किसी प्रतियोगी के लैंडिंग पेज से एक हीरो सेक्शन कॉपी करने की आवश्यकता होती है, तो आप सचेत रूप से अस्थायी पहुँच प्रदान करते हैं। "हमेशा चालू" से "जस्ट-इन-टाइम विशेषाधिकार" में मानसिक बदलाव वही है जो जीरो-ट्रस्ट आर्किटेक्चर सर्वर स्तर पर उपदेश देता है, अब समय आ गया है कि हम इसे अपने क्लाइंट-साइड टूलिंग पर भी लागू करें।
| Strategy | Security Level | Workflow Impact | Memory Footprint |
|---|---|---|---|
| Allow All Permissions Unaudited | Critical Risk | Zero Friction | ~1.5GB |
| Manual Click-to-Grant Only | High | Minor Friction | ~400MB |
| Stateless One-Shot Tools | Maximum | Negligible | ~0MB after execution |
| Complete Extension Abstinence | Absolute | Lost Productivity | ~0MB |
एक समझौता किए गए डेवलपर टूल का छिपा हुआ जीवनचक्र
एक्सटेंशन-आधारित हमले की संरचना को समझने से यह स्पष्ट होता है कि स्प्रिंग क्लीनिंग को निर्दयी क्यों होना चाहिए। अधिकांश डेवलपर एक दुर्भावनापूर्ण .crx फ़ाइल को डार्क-वेब फ़ोरम से डाउनलोड होने की कल्पना करते हैं। वास्तविकता कहीं अधिक कपटी है: एक लोकप्रिय, ओपन-सोर्स UI उपयोगिता का रखरखाव एक नए योगदानकर्ता को हस्तांतरित हो जाता है। पुल रिक्वेस्ट साफ दिखती है, बस डिपेंडेंसी बंप और एक नई "सुविधा" जिसके लिए अतिरिक्त नेटवर्क एक्सेस की आवश्यकता होती है। ऑटो-अपडेट सोमवार सुबह की स्टैंडअप मीटिंग के दौरान चुपचाप 80,000 डेवलपर्स तक पहुँच जाता है। दोपहर के भोजन तक, एक्सटेंशन डेवलपर कंसोल लॉग और निजी रिपॉजिटरी URL को एक कमांड-एंड-कंट्रोल सर्वर पर बाहर निकाल रहा होता है।

मैलवेयर से परे: एक्सटेंशन EULA में डेटा लाइसेंसिंग जाल
एक कम गुप्त लेकिन समान रूप से खतरनाक प्रवृत्ति "डेटा लाइसेंसिंग पिवट" है। एक एक्सटेंशन जिसे आपने दो साल पहले विशिष्ट HTML एलिमेंट स्टाइल प्राप्त करने के लिए इंस्टॉल किया था, वह अपने एंड यूज़र लाइसेंस एग्रीमेंट को अपडेट करता है। धारा 12.4 में दबा हुआ एक अनुदान है: "आप हमें हमारी सेवा के माध्यम से एक्सेस या प्रोसेस किए गए किसी भी UI पैटर्न, कोड स्निपेट या रचनात्मक कार्य के लिए रॉयल्टी-मुक्त, स्थायी लाइसेंस प्रदान करते हैं।" कानूनी और शायद ही कभी अदालत में लागू किया जाता है, लेकिन तकनीकी रूप से यह एक स्टार्टअप को आपकी कंपनी के अनलॉन्च किए गए उत्पाद UI को अपने AI प्रशिक्षण सेट में फीड करने का अधिकार देता है। स्टील्थ-मोड SaaS पर काम करने वाले फ्रंटएंड इंजीनियर के लिए, यह एक बौद्धिक संपदा आपदा है जो होने वाली है।
"एक एक्सटेंशन को अनइंस्टॉल करना यह स्वीकार करना नहीं है कि आपने दो साल पहले एक खराब इंस्टॉल किया था, यह स्वीकार करना है कि सॉफ्टवेयर का सड़ना अपरिहार्य है।"
एक UI निष्कर्षण वर्कफ़्लो डिज़ाइन करना जो सुरक्षा सीमाओं का सम्मान करता है
तो एक व्यावहारिक फ्रंटएंड डेवलपर तेज UI प्रोटोटाइपिंग की आवश्यकता और अपने ब्राउज़र को लॉक डाउन करने की अनिवार्यता के बीच सामंजस्य कैसे बिठाता है? समाधान "देखने" को "मालिक होने" से अलग करना है। आपको एक भारी-भरकम एक्सटेंशन की आवश्यकता नहीं है जो बना रहे, क्लाउड खाते से सिंक हो, और बैकग्राउंड हार्टबीट बनाए रखे। आपको एक स्टेटलेस ट्रांसफॉर्मर की आवश्यकता है: एक एलिमेंट चुनें, स्वच्छ, प्रोडक्शन-ग्रेड HTML और CSS प्राप्त करें, और सत्र बंद करें।

यह परमाणु वर्कफ़्लो आधुनिक DevSecOps सिद्धांतों के साथ पूरी तरह से मेल खाता है। एक उपकरण जो किसी भी साइट पर किसी भी UI को पुन: प्रयोज्य कोड में परिवर्तित करता है, बिना किसी स्थायी बैकग्राउंड प्रक्रिया के संचालित होता है, "रात भर एक्सटेंशन खुला छोड़ दिया" कमजोरियों के पूरे वर्ग को समाप्त कर देता है। आपको प्राप्त कोड पूरी तरह से पोर्टेबल है, विक्रेता-विशिष्ट निर्भरताओं से मुक्त है, और ईवेंट लिसनर, टेलीमेट्री या ट्रैकिंग बीकन को खींचे बिना React कंपोनेंट या Svelte टेम्पलेट में पेस्ट करने के लिए तैयार है। आप किसी और के डेटा पाइपलाइन में नोड बने बिना एलिमेंट कॉपी करने की दक्षता प्राप्त करते हैं।
डेवलपर का 30-दिवसीय डिजिटल डिटॉक्स प्रोटोकॉल
इस दर्शन को एक दोहराने योग्य आदत में बदलने से "संभावित रूप से कभी उपयोगी" एक्सटेंशन को हटाने के लिए भावनात्मक प्रतिरोध दूर हो जाता है। एंडपॉइंट सुरक्षा ढाँचों से अनुकूलित इस रोलिंग तीस-दिवसीय प्रोटोकॉल का पालन करें:
- दिन 1-3: पूर्ण ऑडिट। प्रबंधन API का उपयोग करके सभी एक्सटेंशन, संस्करण और प्रदत्त अनुमतियों की एक सूची निर्यात करें। प्रत्येक को महत्वपूर्ण, क्षणिक, या अज्ञात ऋण के रूप में टैग करें। सभी क्षणिक वस्तुओं को डिफ़ॉल्ट रूप से अक्षम करें।
- दिन 4-10: अनुमति न्यूनीकरण। प्रत्येक महत्वपूर्ण एक्सटेंशन के लिए, मैन्युअल रूप से होस्ट अनुमतियों को एक विशिष्ट अनुमति सूची तक कम करें। यदि कोई एक्सटेंशन "सभी साइटों" के बिना कार्य नहीं कर सकता है, तो प्रतिस्पर्धी टूल पर स्विच करें।
- दिन 11-21: ब्लोट को सटीकता से बदलें। 3-4 ओवरलैपिंग UI उपयोगिता एक्सटेंशन की पहचान करें। उन्हें एक एकल, सुरक्षा-केंद्रित समाधान में समेकित करें जो बिना स्थायी निगरानी के एक-शॉट क्रिया के रूप में HTML/CSS निष्कर्षण करता है।
- दिन 22-30: जीरो-ट्रस्ट आदतें स्थापित करें। "ब्राउज़र परिधि समीक्षा" शीर्षक से एक आवर्ती मासिक कैलेंडर ईवेंट लागू करें। यह सत्यापित करने में दस मिनट बिताएं कि किसी भी एक्सटेंशन ने ऑटो-अपडेट करके नए अनुमति दायरे में प्रवेश नहीं किया है।
यह प्रोटोकॉल व्यामोह नहीं है, यह पेशेवर स्वच्छता है। वही डेवलपर जो स्वचालित भेद्यता स्कैनर के साथ package.json निर्भरताओं का सावधानीपूर्वक प्रबंधन करते हैं, वे शायद ही कभी उसी कठोरता को ब्राउज़र एक्सटेंशन पर लागू करते हैं जो उनके बिल्ड लॉग पढ़ रहे हैं।
भविष्य स्थायी बैकग्राउंड स्क्रिप्ट नहीं, बल्कि अस्थायी एक्सेस टोकन का है
ब्राउज़र विक्रेता धीरे-धीरे मेनिफेस्ट V3 की ओर बढ़ रहे हैं, जो लंबे समय तक चलने वाले बैकग्राउंड पेजों पर क्षणिक सेवा कार्यकर्ताओं पर जोर देता है। यह वास्तुशिल्प बदलाव साबित करता है कि उद्योग स्थायी एक्सटेंशन निष्पादन के खतरे को पहचानता है। लेकिन डेवलपर टूल को इस चार्ज का नेतृत्व डिज़ाइन द्वारा करना चाहिए, न कि केवल अनुपालन द्वारा। एक UI निष्कर्षण उपकरण को केवल तब जागना चाहिए जब आप इसे स्पष्ट रूप से आमंत्रित करते हैं, आपके चयनित एलिमेंट के संरचनात्मक और शैलीगत डेटा को ठीक से संसाधित करना चाहिए, आपके मौजूदा डिज़ाइन सिस्टम टोकन का सम्मान करने वाला मुहावरेदार कोड आउटपुट करना चाहिए, और बिना कुछ पीछे छोड़े समाप्त होना चाहिए।
अगली बार जब आप एक "त्वरित छोटा एक्सटेंशन" स्थापित करने पर विचार करें जो आपके विकास वर्कफ़्लो को 10% तक गति देने का वादा करता है, तो अपने आप से पूछें: क्या यह उपकरण मेरे ब्राउज़र के विश्वसनीय कंप्यूटिंग बेस में एक स्थायी स्लॉट की मांग करता है, या क्या यह एक क्षणिक उपयोगिता के रूप में समान परिणाम प्राप्त कर सकता है? दस में से नौ बार, आपको जिस कार्यक्षमता की आवश्यकता है, वह बैकग्राउंड निगरानी कर के बिना वितरित की जा सकती है। और एक मामले में जहां यह नहीं हो सकता है, इसे रूट सर्टिफिकेट की तरह मानें: मैन्युअल रूप से ऑडिट किया गया, सक्रिय रूप से निगरानी की गई, और जिस क्षण यह अपने विशिष्ट उद्देश्य से अधिक जीवित रहता है, उसे निर्दयतापूर्वक निपटाया जाए।
एक साफ ब्राउज़र एक सुरक्षित ब्राउज़र होता है। न्यूनतम एक्सटेंशन सूची वाला ब्राउज़र तेज़ होता है। और एक एकल, अच्छी तरह से डिज़ाइन किया गया उपकरण जो किसी भी UI को साफ कोड में बदल देता है, बिना आपकी सुरक्षा ऋण में वृद्धि किए, एक उत्पादक ब्राउज़र है। स्प्रिंग क्लीनिंग का मौसम तकनीकी ब्लॉग की सुर्खी से उत्पन्न वार्षिक अपराध यात्रा नहीं होनी चाहिए। यह एक स्थायी, शून्य-विश्वास मानसिकता होनी चाहिए जो उस सॉफ्टवेयर पर लागू हो जिसे हम अपने निकटतम विकास परिधि में आने देते हैं।
