इथेरियम फाउंडेशनच्या प्रोटोकॉल सिक्युरिटी टीमकडून वास्तविक प्रोटोकॉल कोडवर समन्वित AI एजंट्स चालवण्याबाबतच्या नोंदी, ज्यामध्ये आम्ही काम कसे आयोजित करतो, बारकाईने तपासणी केल्यावर काय टिकून राहते आणि क्लायंट टीम्स आणि सुरक्षा संशोधक यातून काय घेऊ शकतात याचा समावेश आहे. ही पोस्ट स्वतःच परिपूर्ण आहे; नंतरच्या पोस्ट्स वैयक्तिक क्लायंट्सवर अधिक सखोल माहिती देतील.
आम्ही काय चालवत आहोत आणि आम्हाला कशाचे आश्चर्य वाटले
इथेरियम फाउंडेशनच्या प्रोटोकॉल सिक्युरिटी टीममध्ये, आम्ही नेटवर्क ज्या प्रकारच्या सिस्टीम्सवर अवलंबून असते, जसे की सिस्टीम्स सॉफ्टवेअर, क्रिप्टोग्राफिक कोड आणि अचूक असणे आवश्यक असलेले कॉन्ट्रॅक्ट्स, त्यांच्यावर समन्वित AI एजंट्स चालवत आहोत. एजंट्सना वास्तविक बग्स सापडले. त्यापैकी एक आता सार्वजनिक आहे: libp2p च्या gossipsub मधील रिमोटली-ट्रिगर करण्यायोग्य पॅनिक, जो इथेरियम एकमत (consensus) क्लायंट्स चालवत असलेल्या पीअर-टू-पीअर लेयरचा मुख्य भाग आहे, जो दुरुस्त केला गेला आहे आणि टीमला श्रेय देऊन CVE-2026-34219 म्हणून उघड केला गेला आहे.
एजंट्सना बग्स सापडणे हे आश्चर्यकारक नव्हते. आश्चर्य या गोष्टीचे होते की ते शोधण्यात किती कमी काम लागले आणि जे बग्स फक्त खऱ्यासारखे दिसत होते त्यांच्यातून वास्तविक बग्स ओळखण्यात किती जास्त काम लागले.
ही पोस्ट क्लायंट टीम्स आणि सुरक्षा संशोधकांसाठी आहे ज्यांना हेच करायचे आहे. यामध्ये आम्ही एजंट्स कसे आयोजित करतो, एखादा उमेदवार शोध म्हणून गणला जाण्यापूर्वी त्याला कोणता निकष पार करावा लागतो आणि परिणामांना विश्वासार्ह ठेवणाऱ्या सवयी यांचा समावेश आहे.
सुरुवातीलाच एक पूर्वसूचना: एजंट-चालित ऑडिट्ससाठीचे टूलिंग वेगाने बदलते आणि कोणताही विशिष्ट सेटअप काही आठवड्यांतच जुना होतो. त्यामुळे ही पोस्ट जाणीवपूर्वक टूलिंगऐवजी पद्धतींबद्दल आहे, ज्या कायमस्वरूपी असतात. प्रकटीकरण हा स्वतःच एक विषय आहे आणि कदाचित त्यावर एक स्वतंत्र पोस्ट असेल.
एजंट हे एक शोध साधन आहे, ओरॅकल नाही
कोडबेसकडे निर्देशित केलेला एजंट हे फझर (fuzzer) सारखेच एक शोध साधन आहे. फरक एवढाच आहे की परत काय येते. फझर तुम्हाला क्रॅश आणि स्टॅक ट्रेस देतो. एजंट तुम्हाला त्याहून बरेच काही देतो, ज्यामध्ये एक राईट-अप (कॉल चेन, प्रभावाचा दावा, सुचवलेली तीव्रता) आणि त्याला पुष्टी देणारे आर्टिफॅक्ट्स, जसे की वास्तविक कोडवर चालवता येणारे प्रूफ-ऑफ-कन्सेप्ट यांचा समावेश असतो.
या सर्वांमुळे परिणाम वाचायला आणि त्यावर विश्वास ठेवायला सोपे जाते, विशेषतः चालणारे प्रूफ-ऑफ-कन्सेप्ट. त्यामुळे एजंट किती उमेदवार तयार करतो हे मोजू नका. त्यापैकी किती खरे ठरतात हे मोजा.
कामाचे आयोजन कसे केले जाते
आम्ही एका लक्ष्याविरुद्ध समांतरपणे अनेक एजंट्स चालवतो. ते रिपॉझिटरीद्वारेच समन्वय साधतात, ज्यामध्ये व्हर्जन कंट्रोलमध्ये सामायिक स्थिती असते आणि काम वाटून देणारी कोणतीही मध्यवर्ती प्रक्रिया नसते. एक एजंट असा दावा लिहितो जो इतरांना दिसू शकतो, काम करतो आणि कमिट करतो.
आम्हाला हा दृष्टिकोन Anthropic च्या एजंट्सच्या ताफ्यासह C कंपायलर तयार करण्यावरील राईट-अपमधून मिळाला, जो याच प्रकारे समन्वय साधतो. तयार करण्यासाठी किंवा देखरेख करण्यासाठी कोणताही मध्यवर्ती समन्वयक नसतो आणि त्यामुळे चुका होण्याची शक्यता कमी असते.
शोधल्या गेलेल्या कामातून भूमिका तयार होतात:
रेकन (Recon) अटॅक सरफेसचे ठोस, चाचणी करण्यायोग्य गृहीतकांमध्ये रूपांतर करते. "डिकोडरचे ऑडिट करा" असे नाही तर "या बिंदूच्या पुढे या फील्डवर विश्वास ठेवला जातो; ही ती प्रॉपर्टी आहे जी त्याने राखली पाहिजे, ज्या प्रकारे ती खंडित होऊ शकते आणि तो पुरावा जो हे सिद्ध करेल."
हंटिंग (Hunting) एक गृहीतक घेते, कोड पाथ ट्रेस करते आणि एक रिप्रॉड्युसर तयार करण्याचा प्रयत्न करते.
गॅप-फिलिंग (Gap-filling) काय स्वीकारले गेले आणि काय नाकारले गेले हे पाहते, गृहीतकांची पुढची बॅच लिहिते आणि कव्हरेज ट्रॅक करते जेणेकरून एजंट्स एकाच गोष्टीवर पुन्हा पुन्हा काम करणार नाहीत.
व्हॅलिडेशन (Validation) प्रत्येक उमेदवाराची स्वतंत्रपणे पुन्हा तपासणी करते, डुप्लिकेट्स काढून टाकते आणि निर्णय घेते.
आम्ही ही पाईपलाईन शोधून काढलेली नाही. Cloudflare याच टप्प्यांचे वर्णन करते, रेकन, समांतर हंटिंग, स्वतंत्र व्हॅलिडेशन, डिडुप्लिकेशन, रिपोर्टिंग आणि त्यांच्या राईट-अपने आमची पाईपलाईन तयार करण्यात मदत केली.
एखादा उमेदवार शोध म्हणून गणला जाण्यापूर्वी तो कसा दिसतो ते येथे दिले आहे:
लक्ष्य: घटक आणि एंट्री पॉईंट जिथपर्यंत हल्लेखोर प्रत्यक्षात पोहोचू शकतो
अपरिवर्तनीय: ती प्रॉपर्टी जी कायम राहिली पाहिजे
यंत्रणा: ती विशिष्ट पद्धत ज्याद्वारे ती खंडित केली जाऊ शकते
यश: निरीक्षण करण्यायोग्य पुरावा: एक पॅनिक, एक स्टॉल, एक स्वीकारलेला-अवैध इनपुट
रिप्रॉड्युसर: एक स्वयंपूर्ण आर्टिफॅक्ट जो वास्तविक कोडवर चालतो
डिडुप: एक की, जेणेकरून दोन एजंट्स एकाच गोष्टीचा पाठलाग करणार नाहीत
स्कीमा एका कारणासाठी आहे. तो एक विशिष्ट, चाचणी करण्यायोग्य दावा आणि काम पूर्ण झाल्याची स्पष्ट व्याख्या सक्तीची करतो. ज्या एजंटला निरीक्षण करण्यायोग्य पुरावा लिहावा लागतो तो "हे धोकादायक दिसते" असे म्हणून पळवाट काढू शकत नाही.
पुनरुत्पादित करण्यायोग्य किंवा ते घडलेच नाही
एक नियम इतर कोणत्याही नियमापेक्षा जास्त महत्त्वाचा आहे. जोपर्यंत वास्तविक कोडवर बिघाड पुनरुत्पादित करणारा स्वयंपूर्ण आर्टिफॅक्ट नसतो आणि जो तो न लिहिलेल्या व्यक्तीसाठी चालत नाही, तोपर्यंत उमेदवार हा शोध नसतो.
रिप्रॉड्युसर राईट-अप वाचत नाही आणि मॉडेल किती आत्मविश्वासाने बोलत होते याची त्याला पर्वा नसते. तो एकतर चालतो किंवा चालत नाही.
त्याचे बहुतांश मूल्य तो पकडत असलेल्या फॉल्स पॉझिटिव्ह्जमध्ये आहे. त्यापैकी तीन वारंवार समोर येतात आणि प्रत्येक वेळी एजंटला चुकीच्या कारणासाठी पास मिळतो:
एक पॅनिक जे फक्त डीबग बिल्डमध्ये घडते. सॉफ्टवेअर जसे प्रत्यक्षात शिप केले जाते तसे ते कंपाइल करा आणि चालवा, आणि मूल्य फक्त रॅप अराऊंड होते. काहीही क्रॅश होत नाही. ते क्रॅशसारखे दिसते, पण तसे नसते.
एक रिप्रॉड्युसर जो हाताने काही अंतर्गत मूल्य तयार करतो, जे कोणतेही वास्तविक इनपुट कधीही तयार करू शकत नाही, कारण हल्लेखोर नियंत्रित करत असलेला प्रत्येक मार्ग त्याला आधीच नाकारतो. बग फक्त अशा फंक्शनवर "पुनरुत्पादित" होतो ज्याला पोहोचण्यायोग्य कोणतीही गोष्ट त्या प्रकारे कॉल करत नाही.
फॉर्मल-व्हेरिफिकेशनच्या कामात, एक पुरावा जो पार पडतो पण त्याचा अर्थ तुम्हाला हवा तसा नसतो. कोड काय करतो याची पर्वा न करता विधान क्षुल्लकपणे सत्य असते, किंवा तुम्ही कॅप्चर करू इच्छित असलेल्या प्रॉपर्टीपेक्षा ते कमकुवत असते. पडताळणीकर्ता समाधानी असतो, परंतु प्रमेय तुम्हाला प्रत्यक्षात ज्या वर्तनाची काळजी होती त्याला मर्यादित करत नाही.
यात काहीही नवीन नाही. ही अशीच गोष्ट आहे जशी एखादी चाचणी पास होते कारण ती प्रत्यक्षात काहीही तपासत नाही. नवीन गोष्ट म्हणजे त्याचे प्रमाण. एजंट निरुपयोगी आवृत्ती खऱ्या आवृत्तीइतक्याच वेगाने आणि तितक्याच आत्मविश्वासाने लिहितो. त्यामुळे तपासणी स्वयंचलित असली पाहिजे. एजंट स्वतःची चूक स्वतःच पकडेल यावर तुम्ही अवलंबून राहू शकत नाही.
सिग्नल-टू-नॉईज हेच बहुतांश काम आहे
बहुतांश उमेदवार चुकीचे, डुप्लिकेट किंवा व्याप्तीच्या बाहेरचे असतात. ही पद्धतीची समस्या नाही; ती तशीच काम करते. चुकीच्या उमेदवारांना वेगाने नाकारणे आणि खऱ्या उमेदवारांना अशा पुराव्यासह पाठिंबा देणे ज्यावर वाद घालणे कठीण आहे, हे उद्दिष्ट आहे.
टिकून राहणाऱ्या प्रत्येक उमेदवाराच्या दोन स्वतंत्र तपासण्या होतात. सामान्य कॉन्फिगरेशनमध्ये एखादा खरा हल्लेखोर प्रत्यक्षात तिथपर्यंत पोहोचू शकतो का? आणि जर ते काम करत असेल तर नेटवर्कला जे नुकसान होते त्याच्या तुलनेत हल्लेखोराला ते करण्यासाठी किती खर्च येतो? कोणताही एक पीअर ट्रिगर करू शकणारा बग हा विशेष ॲक्सेस किंवा मोठ्या प्रमाणावर संसाधनांची आवश्यकता असलेल्या बगपेक्षा खूप वेगळा असतो.
आधीच ज्ञात असलेल्या, दुरुस्त केलेल्या किंवा नाकारलेल्या गोष्टींच्या चालू यादीविरुद्ध प्रत्येक गोष्टीची तपासणी केली जाते. त्याशिवाय, एजंट्स तोच बंद झालेला मुद्दा पुन्हा शोधत राहतात आणि वारंवार त्याची तक्रार करत राहतात.
स्वीकृतीचे दर लक्ष्यानुसार खूप बदलतात आणि ती भिन्नता स्वतःच उपयुक्त आहे. हे परिपक्व, मोठ्या प्रमाणावर ऑडिट केलेल्या कोडवर चालवा आणि जवळजवळ काहीही टिकत नाही, जे तरीही जाणून घेण्यासारखे आहे. "आम्ही खूप शोधले आणि काहीही सापडले नाही" हा एक वास्तविक परिणाम आहे. हे कमी-अन्वेषण केलेल्या कोडवर किंवा औपचारिकरित्या सत्यापित केलेल्या कोडवर चालवा, जिथे मशीन-तपासलेला पुरावा मॉडेल कव्हर करतो आणि तैनात केलेला बाइटकोड फक्त त्याच्याशी जुळतो असे गृहीत धरले जाते, आणि तिथे अधिक गोष्टी पार पडतात.
ट्रायज हा कठीण भाग आहे हे शोधणारे आम्ही एकटेच नाही. Cloudflare चा मुख्य निष्कर्ष असा होता की अरुंद व्याप्ती व्यापक स्कॅनिंगपेक्षा सरस ठरते. Anthropic च्या प्रॉपर्टी-आधारित-चाचणी एजंटने सुमारे एक हजार उमेदवार अहवाल तयार केले, त्यानंतर रँकिंग आणि तज्ञांच्या पुनरावलोकनाचा वापर करून एका टॉप टियरपर्यंत पोहोचले जे सुमारे 86 टक्के वेळा टिकून राहिले. निर्मिती हा सोपा भाग होता. मी आमचे स्वतःचे आकडे येथे प्रकाशित करणार नाही; एका विशिष्ट लक्ष्याशी जोडलेले असल्याने, ते पद्धतीपेक्षा लक्ष्याबद्दल अधिक सांगतील.
एजंट्स कशात चांगले आहेत आणि ते कुठे दिशाभूल करतात
दोन्ही दिशांना खूप चर्चा आहे, त्यामुळे एजंट्स काय चांगले करतात आणि ते कुठे दिशाभूल करतात याची ही एक साधी यादी आहे.
कशात चांगले आहेत
कशात दिशाभूल करतात
स्पेक आणि कोड एकत्र वाचणे
कॉल चेन्स ज्या पोहोचण्यायोग्य दिसतात पण नसतात
वास्तविक अपरिवर्तनीय सांगणे आणि तपासणे
यश तपासणीत फेरफार करणे (चुकीच्या कारणासाठी पास होणे).
एका ओळीच्या कल्पनेवरून रिप्रॉड्युसरचा मसुदा तयार करणे
राईट-अप किती नाट्यमय वाटतो याच्याशी जुळण्यासाठी तीव्रता वाढवणे
तुम्ही पाहण्यापूर्वीच मूळ कारण सुचवणे
वैध पायऱ्यांच्या क्रमामध्ये पसरलेले बग्स
हे विभाजन एका कामातून दुसऱ्या कामात स्थिरही नसते. स्टॅनिस्लाव्ह फोर्ट, वास्तविक असुरक्षांवर मॉडेल्सच्या श्रेणीची चाचणी करताना, याला जॅग्ड फ्रंटियर म्हणतात, किंवा एका कोडबेसवर संपूर्ण एक्सप्लॉइट चेन रिकव्हर करणारे मॉडेल दुसऱ्यावर मूलभूत डेटा-फ्लो ट्रेसिंगमध्ये अपयशी ठरू शकते. तुम्ही असे गृहीत धरू शकत नाही की एका चांगल्या परिणामाचा अर्थ पुढचा परिणामही टिकून राहील, हेच आणखी एक कारण आहे की प्रत्येक उमेदवाराची स्वतःची स्वतंत्र तपासणी केली जाते.
शेवटची ओळ महत्त्वाची आहे. एकच एजंट सत्र वन-शॉट रिझनिंगमध्ये चांगले असते आणि अशा बग्समध्ये वाईट असते जे पायऱ्यांच्या क्रमामध्ये पसरलेले असतात, जिथे प्रत्येक पायरी वैध असते आणि फक्त क्रम चुकीचा असतो. त्यांच्यासाठी, एजंट हे शोध साधन नाही. त्याचे काम हे सुचवणे आहे की कोणते क्रम स्टेटफुल टेस्ट हार्नेसद्वारे चालवण्यासारखे आहेत. त्या प्रकारे वापरल्यास, ते चांगले काम करते. हार्नेसला पर्याय म्हणून वापरल्यास, ते सर्वात महागडे बग्स गमावते, जे फक्त एका क्रमामध्ये दिसून येतात.
प्रामाणिकपणा जपणे
काही सवयी एजंटचे शोध विश्वासार्ह बनवण्याचे बहुतांश काम करतात आणि त्यापैकी कोणतीही गुंतागुंतीची नाही.
प्रत्येक आर्टिफॅक्टवर मूळ स्रोत: ते कशाने तयार केले, कोणत्या संदर्भासह, कोणत्या रिव्हिजनविरुद्ध. शोध असा असावा जो तुम्ही महिन्यांनंतर पुन्हा चालवू शकता.
जिथे महत्त्वाचे आहे तिथे निश्चितता: एक वातावरण, तयार करण्याचा आणि चालवण्याचा एक मार्ग, जेणेकरून "पुनरुत्पादित" चा अर्थ प्रत्येक मशीनवर सारखाच असेल, फक्त ज्यावर तो सापडला त्यावर नाही.
नियम, स्क्रिप्ट्स नाही: क्रमांकित प्रक्रियेऐवजी एजंट्सना काय महत्त्वाचे आहे, अपरिवर्तनीय आणि वास्तविक शोधासाठीचा निकष सांगा. ओव्हर-स्क्रिप्ट केलेले एजंट्स त्याच प्रकारे खंडित होतात जसे ओव्हर-स्पेसिफाईड चाचण्या होतात, पायऱ्यांचा अर्थ उरत नसतानाही ते पायऱ्यांचे अनुसरण करत राहतात. रिपॉझिटरी कॉन्टेक्स्ट फाईल्सच्या अभ्यासातही हेच आढळून आले: अतिरिक्त आवश्यकतांमुळे कामाचे यश कमी झाले आणि खर्च 20% पेक्षा जास्त वाढला, आणि लेखक कॉन्टेक्स्ट किमान आवश्यकतांपर्यंत ठेवण्याची शिफारस करतात.
एक व्यक्ती अंतिम निर्णय घेते: एजंट्स सुचवतात. काय खरे आहे, ज्ञात समस्येचे डुप्लिकेट काय आहे, किंवा काय आणि केव्हा उघड केले जाते हे ते ठरवत नाहीत.
अडथळा हलवला गेला
AI ने सुरक्षा संशोधकाची जागा घेतली नाही. त्याने काम हलवले. जो वेळ गृहीतके मांडण्यात आणि त्यांचा पाठलाग करण्यात जात असे तो आता मोठ्या प्रमाणावर त्यांचा न्याय करण्यात जातो, ज्यामध्ये ओरॅकल तयार करणे, ट्रायज चालवणे, ज्ञात समस्यांची यादी ठेवणे आणि प्रकटीकरण हाताळणे यांचा समावेश आहे.
अडथळा दूर झाला नाही. तो बग्स शोधण्यापासून परिणामांवर विश्वास ठेवण्याकडे वळला, जे त्याच्यासाठी एक चांगले ठिकाण आहे, कारण तिथेच मानवी निर्णय प्रत्यक्षात महत्त्वाचा असतो. पण तो अजूनही एक अडथळा आहे, आणि त्याकडे दुर्लक्ष केल्यामुळेच तुम्ही चुकीचे "हे ठीक आहे" शिप करता.
हे काम करणाऱ्या पद्धती नवीन नाहीत. पुनरुत्पादित करण्यायोग्य बिघाड, वास्तविक ओरॅकल्स आणि काळजीपूर्वक ट्रायज या त्याच पद्धती आहेत ज्यांनी गेल्या पंधरा वर्षांत फझिंगला संशोधन विषयातून मानक पद्धतीमध्ये बदलले. साधने नवीन आहेत. पद्धती नाहीत.
साधने किती वेगाने बदलत राहतात हा एक खुला प्रश्न आहे. निकोलस कार्लिनी, जे काळजीपूर्वक आहेत आणि एकेकाळी स्वतः साशंक होते, असा युक्तिवाद करतात की घातांकीय प्रकरणाला गांभीर्याने घेणे योग्य आहे, जरी ते त्यावर विस्तृत त्रुटी बार ठेवत असले तरीही. जर निर्मितीची बाजू इतक्या वेगाने वर चढत असेल, तर न्यायाच्या बाजूलाही त्यासोबत वर चढावे लागेल, अन्यथा जे तयार होते आणि जे प्रत्यक्षात सत्यापित होते त्यामधील दरी फक्त रुंदावत जाईल.
इथेरियम ज्या सिस्टीम्सवर अवलंबून आहे, त्यांच्यासाठी हाच भाग महत्त्वाचा आहे. एजंट्स आम्हाला हाताने शक्य असलेल्यापेक्षा कितीतरी जास्त भाग कव्हर करू देतात. त्या बदल्यात, ते आत्मविश्वासाने भरलेल्या दाव्यांच्या खूप मोठ्या ढिगाऱ्यावर अधिक काळजीपूर्वक न्यायाची मागणी करतात. हा एक फायदेशीर सौदा आहे, जोपर्यंत तुम्ही हे लक्षात ठेवता की न्याय हेच खरे उत्पादन आहे.
This post has been translated from English. As a result, it may not be entirely accurate or up to date. The original version can be found in English.