Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

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

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 पेलोड्स के साथ।

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

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

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

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

संक्षिप्त उत्तर: नहीं। JSON-डिकोड पाथ और बाइनरी वायर-डिकोड पाथ दोनों यहाँ परीक्षण किए गए हर केस में अपनी रिकर्शन सीमाओं को सही ढंग से लागू करते हैं, जिसमें 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 बूटस्ट्रैप करता है, और ASan/UBSan के तहत वास्तविक डिकोडर एंट्री पॉइंट्स (upb_JsonDecode, upb_Decode) को सीधे एडवर्सेरियल पेलोड्स के साथ चलाता है।

पाथगार्डडिफ़ॉल्ट सीमापरिणाम
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 बाइंडिंगसमान गार्ड फंक्शन्ससमानपहचान के प्रमाण द्वारा असत्यापित, अलग रन से नहीं — नीचे देखें

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

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

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

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

  • C# बाइंडिंग — शुद्ध मैनेज्ड कोड, upb-आधारित नहीं (JsonParser / CodedInputStream अपने स्वयं के RecursionLimit हैंडलिंग के साथ)। वास्तव में अप्रयुक्त; यह रेपो अभी इसे कवर नहीं करता।
  • इसी upb कोर में अन्य बग क्लासेस अप्रयुक्त हैं: एक्सटेंशन रजिस्ट्री कन्फ्यूज़न, mini_table पार्सिंग, बंडल किया गया utf8_range.c वैलिडेशन।

इसे पुनरुत्पादित करना

root@kitploit:~
./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 पुनरुत्पादकता एंकर है।

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