Skip to content
KitploitKITPLOIT
उपकरणएक्सप्लॉइटब्लॉग
Log in
जमा करें
उपकरणएक्सप्लॉइटब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

फ़ीडसंपर्कगोपनीयता© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
upb-any-recursion-audit — CVE-2026-0994 Any-unwrapping रिकर्शन बग क्लास Ruby और PHP protobuf बाइंडिंग्स में upb के C कोर को प्रभावित करता है या नहीं, इसका परीक्षण करने वाला ऑडिट हार्नेस, ASan/UBSan पेलोड्स के साथ। | Kitploit
उपकरण/GitHubGitHub/vardhan0257/upb-any-recursion-audit
स्थैतिक विश्लेषणमेमोरी फोरेंसिकभेद्यता विश्लेषणफज़िंगबाइनरी विश्लेषणपेपर और शोधलर्निंग और शिक्षा
GitHubvardhan0257/upb-any-recursion-audit

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →

upb-any-recursion-audit

CVE-2026-0994 Any-unwrapping रिकर्शन बग क्लास Ruby और PHP protobuf बाइंडिंग्स में upb के C कोर को प्रभावित करता है या नहीं, इसका परीक्षण करने वाला ऑडिट हार्नेस, ASan/UBSan पेलोड्स के साथ।

रिपॉजिटरी देखें
1321 महीना पहलेअभी तक समीक्षित नहीं
साझा करें

upb Any-रिकर्शन ऑडिट (Ruby / PHP / C# बाइंडिंग्स)

स्थिति: पूर्ण। तीन स्वतंत्र कार्यान्वयनों (Ruby/PHP साझा upb कोर, C# का अलग प्रबंधित कार्यान्वयन) में छह रिकर्शन-गार्ड जाँचें, सभी को गलत सिद्ध किया गया, सिवाय उस एक के जो पहले से ही सार्वजनिक और पहले से ही पैच किया गया Python CVE था जिसके विरुद्ध यह ऑडिट किया जा रहा था। कोई नई भेद्यता नहीं मिली।

protobuf की Python और JavaScript बाइंडिंग्स में पुष्ट Any-अनरैपिंग रिकर्शन CVEs के अनुवर्ती (सबसे हाल ही में CVE-2026-0994, json_format.py के _ConvertAnyMessage में एक शुद्ध-Python बग, जो ConvertMessage() के बजाय methodcaller() के माध्यम से रिकर्शन करता था और चुपचाप गहराई काउंटर को छोड़ देता था)।

प्रश्न: क्या यही बग वर्ग Ruby और PHP नेटिव एक्सटेंशन्स में बंडल किए गए C upb कोर में मौजूद है?

संक्षिप्त उत्तर: नहीं। JSON-डिकोड पथ, बाइनरी वायर-डिकोड पथ, और स्वतंत्र प्रबंधित C# कार्यान्वयन सभी यहाँ परीक्षण किए गए प्रत्येक मामले में अपनी रिकर्शन सीमाओं को सही ढंग से लागू करते हैं, जिसमें 1MB स्टैक के अंतर्गत चलाया गया 200,000-स्तरीय स्ट्रेस पेलोड भी शामिल है। यह साक्ष्य के साथ गलत सिद्ध की गई परिकल्पना है, भेद्यता नहीं — इसे यहाँ एक स्वच्छ नकारात्मक परिणाम के रूप में दर्ज किया गया है, उसी तरह जैसे आप किसी अन्य शोध शाखा में गलत सिद्ध की गई परिकल्पना को दर्ज करते हैं।

वास्तव में क्या परीक्षण किया जा रहा है

Protobuf के Ruby और PHP नेटिव एक्सटेंशन्स प्रत्येक साझा लाइब्रेरी को लिंक करने के बजाय upb के C कोर (ruby-upb.c, php-upb.c) का एकल-फ़ाइल समामेलन वेंडर करते हैं। यह ऑडिट उसी फ़ाइल को एक स्टैंडअलोन C लक्ष्य के रूप में बनाता है — कोई Ruby या PHP रनटाइम शामिल नहीं — google.protobuf.Any / Struct / Value / ListValue डिस्क्रिप्टरों के साथ एक upb_DefPool बूटस्ट्रैप करता है, और वास्तविक डिकोडर एंट्री पॉइंट्स (upb_JsonDecode, upb_Decode) को सीधे विरोधी पेलोड के साथ, ASan/UBSan के अंतर्गत संचालित करता है।

पथगार्डडिफ़ॉल्ट सीमापरिणाम
JSON डिकोड, jsondec_any (Ruby)d->depth, jsondec_push में जाँचा गया64गलत सिद्ध — 5000-स्तरीय पेलोड पर स्वच्छ त्रुटि, बाइट ऑफ़सेट लगभग ~64 स्तरों से ठीक मेल खाता है
बाइनरी वायर डिकोड, upb_Decode (Ruby)Decode_LimitDepth100गलत सिद्ध — 60-स्तरीय सीमा पेलोड पर और 200,000-स्तरीय स्ट्रेस पेलोड पर स्वच्छ kUpb_DecodeStatus_MaxDepthExceeded, दोनों 8MB स्टैक और 1MB स्टैक (गैर-मुख्य Ruby थ्रेड का अनुमान) के अंतर्गत
PHP बाइंडिंगसमान गार्ड फ़ंक्शनसमानतत्समकता के प्रमाण द्वारा गलत सिद्ध, अलग रन द्वारा नहीं — नीचे देखें
JSON डिकोड, JsonParser.MergeAny (C#, Google.Protobuf 3.36.1)tokenizer.RecursionDepth, Merge() में जाँचा गया100गलत सिद्ध — 200-स्तरीय पेलोड पर पुष्ट; MergeAny प्रत्येक Any-अनरैप के लिए FromReplayedTokens के माध्यम से एक नया JsonTokenizer बनाता है, लेकिन गहराई लेखांकन सही ढंग से उसके माध्यम से प्रसारित होता है
बाइनरी वायर डिकोड, CodedInputStream/Value.Parser (C#, Google.Protobuf 3.36.1)स्ट्रीम पर recursionDepth/recursionLimit64गलत सिद्ध — 60-स्तरीय सीमा पेलोड पर स्वच्छ InvalidProtocolBufferException (Ruby वायर परीक्षण के समान पेलोड बाइट्स, सीधे पुनः उपयोग किए गए)

किसी भी रन में कोई ASan या UBSan उल्लंघन नहीं देखा गया। कोई क्रैश नहीं, कोई हैंग नहीं, कोई स्टैक थकावट नहीं।

PHP को अलग से क्यों नहीं चलाया गया

php-upb.c और ruby-upb.c समग्र रूप से ~1,964 पंक्तियों में भिन्न हैं, लेकिन jsondec_any, jsondec_push, और वायर गहराई-सीमा स्थिरांक दोनों फ़ाइलों के बीच बाइट-समान हैं (verify_php_identical.sh इसे सिद्ध करता है, इसे विश्वास पर मत लें — इसे चलाएँ)। चूँकि गार्ड कोड स्वयं प्रमाणित रूप से समान है, Ruby परिणाम बिना किसी अनावश्यक PHP-विशिष्ट हार्नेस की आवश्यकता के स्थानांतरित होता है।

अभी भी क्या खुला है

चार बाइंडिंग्स का परीक्षण किया गया (Ruby, PHP, C#, साथ ही Python का पहले से सार्वजनिक CVE), सभी गलत सिद्ध, सिवाय उस एक के जो पहले से ही अपस्ट्रीम में पैच किया गया था। शेष खुली शाखाएँ, इनमें से कोई भी इस विशिष्ट बग वर्ग की नहीं:

  • upb C कोर में अन्य बग वर्ग: एक्सटेंशन रजिस्ट्री भ्रम, mini_table पार्सिंग, बंडल किया गया utf8_range.c सत्यापन।
  • C# वायर-डिकोड परीक्षण (dotnet run -- wire <payload>) अभी तक CI में जोड़ा नहीं गया है — केवल JSON-मोड C# परीक्षण स्वचालित है।

इसे पुनः उत्पन्न करना

./fetch_source.sh          # pins & clones protobuf @ ead3f0029facc43da13588132e9091bf9bd7a26f
./build.sh                 # compiles both harnesses w/ ASan+UBSan against the fetched source
./run_tests.sh              # generates payloads, runs the full matrix, prints results
./verify_php_identical.sh   # confirms the PHP claim above instead of asserting it

आवश्यक: gcc, protoc (apt-get install protobuf-compiler), python3, git. gcc (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 और libprotoc 3.21.12 के विरुद्ध निर्मित और सत्यापित — भिन्न संस्करण भिन्न व्यवहार कर सकते हैं; यदि आपके परिणाम ऊपर दी गई तालिका से मेल नहीं खाते, तो वह डेटा है, आपके सेटअप में कोई बग नहीं। यह मानने से पहले कि यह टूलिंग बेमेल है, कारण जानें।

प्रोवेनेंस नोट

third_party/ (fetch_source.sh द्वारा प्राप्त) में Google का Apache-2.0-लाइसेंस प्राप्त protobuf स्रोत है, जो ऊपर दिए गए कमिट पर पिन किया गया है। यह कभी भी इस रेपो में कमिट नहीं किया जाता — किसी और के स्रोत ट्री को इस में वेंडर करने के बजाय fetch_source.sh ही पुनरुत्पादनशीलता का आधार है।

टूल डाउनलोड करें