AI ने TOCTOU के दोहरे खर्च के जोखिम का पता लगाया
टाइम-ऑफ-चेक-टाइम-ऑफ-यूज़ रेस कंडीशन्स टाइमिंग बग्स का एक वर्ग है जो सिस्टम के निर्णय बिंदु और उस निर्णय पर कार्रवाई के क्षण के बीच के अंतराल को पाटता है। ब्लॉकचेन भुगतान प्रवाह में, ऐसा अंतर एक वैध खरीदारी और दोहरे खर्च के बीच का अंतर हो सकता है। जब कोड शेष राशि पढ़ता है, फिर बाद में खरीदारी लागू करता है, तो एक हमलावर, जो लगभग एक साथ लेनदेन प्रस्तुत कर सकता है या पुनर्व्यवस्था का फायदा उठाकर, जाँच को दो बार सफल बना सकता है जबकि स्थिति अद्यतन केवल एक बार होता है। यही दोहरे खर्च वाले TOCTOU का मूल है।

पेनलिजेंट कैसे काम करता है
इन मुद्दों को खोजने के लिए पेनलिजेंट का तरीका अनुमान लगाने जैसा नहीं है। यह स्थिर विश्लेषण पैटर्न से शुरू होता है जो "जाँचें-फिर-कार्रवाई करें" मुहावरों को चिह्नित करते हैं - कोड की वे पंक्तियाँ जहाँ शेष राशि या पात्रता पढ़ी जाती है और उसके बाद लिखा गया लेखन एक पात्रता काउंटर को अपडेट करता है। ये चिह्नित स्थान संदर्भ प्राप्त करते हैं: कोड पथ का कॉल ग्राफ़, नेटवर्क एंडपॉइंट जो इसे लागू करता है, और इसके द्वारा की गई पर्यावरणीय धारणाएँ (जैसे, "एकल-थ्रेडेड अपडेट मान लेता है" या "अगले चरण से पहले ब्लॉक पुष्टिकरण मान लेता है")। इस संदर्भ के साथ, पेनलिजेंट नियंत्रित सत्यापन को ट्रिगर करता है: स्टेजिंग एंडपॉइंट्स के विरुद्ध गैर-विनाशकारी जाँच, उपलब्ध होने पर लेनदेन ट्रेस के साथ सहसंबंध, और लक्षित समवर्ती परीक्षण जो लगभग एक साथ सबमिशन के तहत व्यवहार का नमूना लेते हैं।
ठोस रूप से, उत्पादन में एक असुरक्षित प्रवाह इस तरह दिख सकता है: अनुप्रयोग जाँच करता है शेष[दुकान_पता] == 1_000_000 और फिर खरीदार के डायमंड काउंट को बढ़ा देता है। एक हमलावर दो 1,000,000 DDCoin लेनदेन सबमिट करता है जो जाँच और प्रभावी स्थिति परिवर्तन के बीच की अवधि में आते हैं। चूँकि जाँच किसी भी लेनदेन के प्रतिबद्ध होने से पहले चलती है, दोनों जाँचें पास हो जाती हैं, और उपयोगकर्ता को संपत्ति की केवल एक इकाई खर्च करके दो डायमंड मिलते हैं। पेनलिजेंट अनुरोध/प्रतिक्रिया ट्रेस, लेन-देन आईडी, ब्लॉक टाइमस्टैम्प और किसी भी अवलोकनीय रेस आर्टिफैक्ट को एकत्रित करके साक्ष्य एकत्र करता है, फिर उन्हें उस स्थिर कोड स्थान से बाँध देता है जो जाँच करता है।

TOCOTOU को कैसे ठीक करें
ब्लॉकचेन संदर्भों में TOCTOU को ठीक करने का मतलब आमतौर पर बैलेंस चेक और स्टेट चेंज को एटॉमिक बनाना होता है। पारंपरिक बैकएंड पर, इसका मतलब है मज़बूत आइसोलेशन लेवल और म्यूटेक्स वाले डेटाबेस ट्रांज़ैक्शन या रीट्रीज़ वाली आशावादी समवर्ती योजनाएँ। स्मार्ट कॉन्ट्रैक्ट्स पर, इसका मतलब है कॉन्ट्रैक्ट को इस तरह डिज़ाइन करना कि स्टेट ट्रांज़िशन एक ही ट्रांज़ैक्शन में निष्पादित हो जाएँ, या नॉन्स और स्पष्ट प्रति-अकाउंट सीक्वेंस नंबर जैसे मैकेनिज़्म का इस्तेमाल करके बार-बार दोहराए जाने या दोहराए जाने वाले ऑपरेशन्स को रोका जा सके। निम्नलिखित सुरक्षित स्यूडोकोड रक्षात्मक पैटर्न दिखाता है, जो आक्रमण की संभावना के बजाय एटॉमिकिटी और शुद्धता पर ज़ोर देता है:
# रक्षात्मक छद्म कोड: db.transaction(isolation="serializable") के साथ एक क्रमिक लेनदेन के अंदर परमाणु अद्यतन: यदि शेष [shop_address] >= मूल्य: शेष [shop_address] -= मूल्य सत्र ["your_diamonds"] += 1 अन्यथा: अपर्याप्त शेष त्रुटि () उठाएँ
परिचालनात्मक रूप से, अतिरिक्त उपाय मददगार होते हैं: लेन-देन सबमिशन में नॉन्स या मोनोटोनिक काउंटर की आवश्यकता, एपीआई गेटवे पर संचालनों का सख्त क्रम बनाए रखना, और पूर्ण ट्रेसेबिलिटी को इंस्ट्रूमेंट करना ताकि समवर्ती सबमिशन पैटर्न का पुनर्निर्माण किया जा सके। दर सीमित करने और बैचिंग से उस व्यावहारिक विंडो को भी कम किया जा सकता है जिसमें समवर्तीता का फायदा उठाया जा सकता है।
पहचान के दृष्टिकोण से, पेनलिजेंट का वास्तविक मूल्य संकेतों को एकीकृत करने में निहित है। अकेले स्थिर संकेतक कई झूठे सकारात्मक परिणाम उत्पन्न करते हैं; अकेले रनटाइम टेलीमेट्री में स्रोत कोड से सीधा संबंध नहीं होता। पेनलिजेंट स्थिर कोड निष्कर्षों को वास्तविक निष्पादन साक्ष्य से जोड़ता है: कौन से एंडपॉइंट कॉल किए गए थे, कौन से लेनदेन आईडी ऑन-चेन देखे गए थे, और घटनाओं के किस क्रम के कारण स्टेट डाइवर्जेंस हुआ। परिणाम एक ऐसा साक्ष्य बंडल है जिस पर कार्रवाई की जा सकती है: डेवलपर्स को ठीक करने के लिए सटीक स्रोत लाइनें मिलती हैं, संचालन को किसी उलटफेर या शमन को मान्य करने के लिए लेनदेन के निशान मिलते हैं, और सुरक्षा टीमों को एक प्राथमिकता वाली सुधार योजना मिलती है।
इस मॉडल को अपनाने वाली टीमों के लिए, कार्यप्रवाह तेज़ और ज़्यादा जवाबदेह हो जाता है। महीनों तक मैन्युअल रूप से प्राथमिकता तय करने के बजाय, आपको पुनरुत्पादित करने योग्य साक्ष्य और एक स्पष्ट सुधार पथ मिलता है। यह समाधान जितना इंजीनियरिंग से संबंधित है, उतना ही प्रक्रिया से भी संबंधित है: उत्पाद स्वामियों को परमाणुता संबंधी बाधाओं को स्वीकार करना होगा, संचालन को परिनियोजन में लेन-देन संबंधी अलगाव सुनिश्चित करना होगा, और सुरक्षा को लक्षित पुन: संचालन के साथ शमन को मान्य करना होगा।
सुझाया गया पेनलिजेंट प्रॉम्प्ट (प्राकृतिक भाषा) - आंतरिक उपयोग के लिए
यदि आप चाहते हैं कि पेनलिजेंट किसी दी गई सेवा पर TOCTOU-शैली के दोहरे-खर्च के जोखिमों को स्कैन करे, तो एक संक्षिप्त संकेत हो सकता है:
“भुगतान समापन बिंदु को स्कैन करें https://staging.example.com/create_transaction TOCTOU और डबल-स्पेंड रेस कंडीशन के लिए। उन कोड पथों पर ध्यान केंद्रित करें जो बैलेंस या एंटाइटेलमेंट पढ़ते हैं और फिर स्टेट लिखते हैं। गैर-विनाशकारी सत्यापन नमूने उत्पन्न करें, किसी भी समवर्ती लेनदेन ट्रेस को सहसंबंधित करें, और स्रोत स्थानों और प्राथमिकता वाले सुधारों के साथ एक साक्ष्य बंडल तैयार करें।
यह संकेत पेनलिजेंट को स्थैतिक पैटर्न मिलान को सुरक्षित रनटाइम सत्यापन और साक्ष्य सहसंबंध के साथ संयोजित करने का निर्देश देता है।

