
GitLab CVE-2026-97229 (और CVE-2026-110264) के लिए केवल-पहचान आधारित ट्रायाज: किसी self-managed GitLab संस्करण और उसके Ruby को ग्रेड करें, Oct-12-पैच और custom-Ruby जालों को पकड़ें। कोई पेलोड नहीं, कोई नेटवर्क प्रोब नहीं।
gitlab-onigmo-scannerदो CVSS 10.0 GitLab रेगेक्स खामियों, CVE-2026-97229 और CVE-2026-110264, के लिए संस्करण ट्राइएज। इसे अपना कोई GitLab संस्करण दें, यह आपको बताता है कि वह बिल्ड अभी भी खुला है या नहीं, और यह उन दो जालों को पकड़ता है जो पहले से ही लोगों को फँसा रहे हैं। यह कभी नेटवर्क को नहीं छूता, कभी पेलोड नहीं भेजता, कभी किसी CI लिंट एंडपॉइंट पर हिट नहीं करता, कभी कोई रचा हुआ रेगेक्स कंपाइल नहीं करता।
खामीविवरण | मान |
|---|---|
CVE | CVE-2026-97229, साथ ही CVE-2026-110264 जिसे इसके साथ ही ग्रेड किया गया है |
बग | Onigmo में Integer overflow (CWE-190), जो Ruby में अंतर्निहित रेगेक्स इंजन है, तब होता है जब GitLab उपयोगकर्ता-प्रदत्त रेगुलर एक्सप्रेशन कंपाइल करता है |
प्रभाव | कुछ शर्तों के तहत, स्व-प्रबंधित GitLab सर्वर पर Unauthenticated remote code execution |
गंभीरता | दोनों के लिए 10.0 क्रिटिकल, GitLab द्वारा CNA के रूप में स्कोर किया गया |
शोषण | CVE-2026-97229 को 2026-10-29 को CISA KEV में जोड़ा गया, संघीय नियत तिथि 2026-11-01। इस लेखन के समय तक CVE-2026-110264 की कोई KEV लिस्टिंग नहीं है, और GitLab के अनुसार इसके हमलों में उपयोग होने का कोई संकेत नहीं है |
CVE-2026-97229 वह CI/CD रेगेक्स खामी है: CI/CD कॉन्फ़िगरेशन में एक विशेष रूप से रचा गया रेगुलर एक्सप्रेशन, अपर्याप्त रेगेक्स सत्यापन, 2026-10-12 को ठीक किया गया। CVE-2026-110264 एक दूसरी, अधिक व्यापक रेगेक्स खामी है जिसे 2026-10-21 को ठीक किया गया, जो 7.0 तक के हर स्व-प्रबंधित रिलीज़ तक पहुँचती है। वही इंजन, वही स्कोर, अलग बग, और यही कारण है कि एक जाँच पर्याप्त नहीं है।
ठीक किए गए संस्करणCVE-2026-97229 (2026-10-12 को ठीक किया गया)लाइन | इसमें ठीक किया गया |
|---|---|
GitLab 19.2 | 19.2.8 |
GitLab 19.3 | 19.3.5 |
GitLab 19.4 | 19.4.2 |
GitLab 19.5, 19.2 से पुराना | इस CVE से प्रभावित के रूप में सूचीबद्ध नहीं |
CVE-2026-110264 (2026-10-21 को ठीक किया गया)लाइन | इसमें ठीक किया गया |
|---|---|
GitLab 19.5 | 19.5.1 |
GitLab 19.4 | 19.4.3 |
GitLab 19.3 | 19.3.6 |
GitLab 19.2 | 19.2.9 |
GitLab 19.1 | 19.1.9 |
GitLab 19.0 | 19.0.10 |
GitLab 18.11 | 18.11.13 |
GitLab 18.10 और पुराने | कोई ठीक किया गया रिलीज़ नहीं, 18.11.13 या बाद के संस्करण में अपग्रेड करें |
Ruby, सोर्स और कस्टम-इमेज इंस्टॉल के लिएलाइन | इसमें ठीक किया गया |
|---|---|
Ruby 3.3 | 3.3.13 |
Ruby 3.4 | 3.4.12 |
Ruby 4.0 | 4.0.9 |
Ruby 3.2 और पुराने | कोई फ़िक्स नहीं, जीवनकाल समाप्त, 3.4 या 4.0 पर जाएँ |
जाल 1: 12 अक्टूबर का पैच 21 अक्टूबर को कवर नहीं करता19.4.2, 19.3.5 और 19.2.8 ने CVE-2026-97229 को ठीक किया। इनमें से हर एक अपनी शाखा के CVE-2026-110264 फ़िक्स (19.4.3, 19.3.6, 19.2.9) से नीचे है। यदि आपने 12 अक्टूबर को पैच किया और रुक गए, तो आप अभी भी असुरक्षित हैं, और जो स्कैनर केवल पहला CVE जानता है वह आपको साफ़ बताएगा। यह टूल दोनों को ग्रेड करता है, और जब यह इसे देखता है तो अपने आउटपुट में इस जाल का नाम लेता है।
जाल 2: GitLab को अपग्रेड करने से आपका अपना Ruby ठीक नहीं होताGitLab का फ़िक्स उस Ruby में एक पैच है जिसे वह अपने आधिकारिक पैकेजों और इमेजों में बंडल करता है। एक सोर्स इंस्टॉल, या एक कस्टम इमेज जो Ruby को अलग से इंस्टॉल करती है, उसे GitLab अपग्रेड से वह पैच नहीं मिलता। Alpine Linux ने यह खुद भुगता: इसने 2026-10-22 को GitLab 19.3.6 में अपग्रेड किया और असुरक्षित बना रहा, क्योंकि इसकी इमेज मानक Ruby का उपयोग करती थी। एक हमलावर ने 2026-10-20 और 21 को इसके सर्वर की जाँच की, आठ बार वर्कर क्रैश किए, उनमें से चार में शोषण आधे रास्ते तक पहुँचा, और 25 और 26 को वापस आया। Alpine को शोषण सफल होने का कोई प्रमाण नहीं मिला, वह इसे नकार भी नहीं सका, इसने इंस्टेंस को शुरू से फिर बनाया, अपनी गुप्त कुंजियाँ बदलीं और हर पासवर्ड रीसेट किया। इसकी ठीक की गई इमेज, जिसे 2026-10-27 के बाद फिर से पुल किया गया, Ruby 3.3.13 लेकर आती है।
तो: --install-type official केवल GitLab संस्करण को ग्रेड करता है, क्योंकि Ruby उसके साथ ही आता है। --install-type source या custom उस Ruby को भी ग्रेड करता है जिसे आप --ruby-version के साथ देते हैं, और Ruby संस्करण अनुपस्थित होने पर UNKNOWN ग्रेड मिलता है, साफ़ नहीं। Ruby 4.0.8 एक विशेष मामला है जिसे जानना ज़रूरी है: यह CVE-2026-97229 बग को ठीक करता है लेकिन CVE-2026-110264 को नहीं, इसलिए यहाँ इसे VULNERABLE ग्रेड मिलता है। Ruby ने इन फ़िक्सों के लिए अपने स्वयं के कोई CVE पहचानकर्ता अनुरोधित नहीं किए हैं, इसीलिए इंस्टॉल किए गए पैकेजों के विरुद्ध CVE रिकॉर्ड का मिलान करने वाला स्कैनर कहीं भी कोई भेद्य Ruby नहीं पाता। यह टूल इसके बजाय सीधे Ruby संस्करण की जाँच करता है।
यह क्या जाँचता हैGitLab संस्करण: CVE-2026-97229 और CVE-2026-110264 अलग-अलग, फिर एक समग्र निर्णयCSV इन्वेंटरी: name,gitlab_version,ruby_version,install_type,hostingRuby जाल, जब आप कहते हैं कि इंस्टॉल source या custom हैGitLab.com और Dedicated को पहले से पैच किया गया, कोई कार्रवाई आवश्यक नहींप्रत्येक निष्कर्ष को एक निर्णय मिलता है: VULNERABLE, FIXED, EOL_NO_FIX, UNKNOWN, या किसी ऐसी ब्रांच पर एकल CVE के लिए NOT_AFFECTED जिसे वह स्पर्श नहीं करता। EOL_NO_FIX को भेद्य माना जाता है: उस लाइन के लिए कोई पैच नहीं आने वाला है।
यह कभी क्या नहीं करताकोई नेटवर्क अनुरोध नहीं। रिमोट सर्वर की कोई प्रोबिंग नहीं। कोई रचित regex नहीं, कोई CI lint अनुरोध नहीं, कोई exploit ट्रैफ़िक नहीं, कोई PoC कोड नहीं। यह आपके द्वारा दिए गए संस्करण स्ट्रिंग्स को पढ़ता है और रुक जाता है। यह जानबूझकर है: CVE-2026-97229 के लिए सार्वजनिक PoC पहले से मौजूद हैं, और यहाँ एक को पुनः उत्पन्न करने से कोई रक्षात्मक लाभ नहीं मिलेगा।
जब PoC और संस्करण काउंटर पहले से मौजूद हैं तो यह क्योंCVE-2026-97229 के लिए सार्वजनिक सामग्री अधिकतर आक्रामक है: ऐसे PoC जो git उपयोगकर्ता के रूप में कोड चलाते हैं, और ऐसी लैब जो मैप करती हैं कि कौन से बिल्ड हथियारीकरण योग्य हैं। Censys संस्करण के अनुसार उजागर होस्ट गिनता है। GitLab ने लॉग में शोषण के प्रयासों को पहचानने के लिए Sigma नियम प्रकाशित किए। इनमें से कोई भी एक स्वतंत्र रक्षात्मक ट्रायाज टूल नहीं है जो अक्टूबर के दोनों CVSS 10.0 दोषों को एक साथ ग्रेड करे और source या custom इंस्टॉल के नीचे के Ruby की जाँच करे। यही अंतराल यह रेपो है: एक कमांड, दोनों CVE, दोनों जाल, कोई पेलोड नहीं। इसे GitLab के Sigma नियमों के साथ उपयोग करें, उनके बजाय नहीं। यदि किसी इंस्टेंस की प्रोबिंग की गई थी, तो संस्करण ट्रायाज समझौता ट्रायाज नहीं है: worker crash लॉग और Onigmo crash रिपोर्ट जाँचें, और यदि आप किसी प्रयास को बाहर नहीं कर सकते तो Alpine के उदाहरण का पालन करें।
ग्रेडिंगFinding | Severity |
|---|---|
किसी भी CVE के लिए अपनी ब्रांच के फ़िक्स से नीचे GitLab | VULNERABLE |
18.10 या उससे पुराने पर GitLab, या source/custom इंस्टॉल पर Ruby 3.2 या उससे पुराना | EOL_NO_FIX, भेद्य माना जाता है |
दोनों फ़िक्सों पर या उससे आगे GitLab, और जहाँ लागू हो वहाँ एक फ़िक्स किया गया Ruby | FIXED |
Ruby संस्करण के बिना Source/custom इंस्टॉल, या इस टूल के डेटा (2026-10-30) से नई ब्रांच | UNKNOWN, साफ़ नहीं |
GitLab.com / Dedicated | FIXED, GitLab द्वारा पैच किया गया |
उपयोग# One instance, official package or image
python3 gitlab_onigmo_scanner.py --version 19.4.2
# One instance, source install with its own Ruby
python3 gitlab_onigmo_scanner.py --version 19.4.3 --ruby-version 3.4.11 --install-type source
# A whole estate, machine-readable output
python3 gitlab_onigmo_scanner.py --list inventory.csv --json
# Tests (version tables only, no network)
python3 -m unittest discover -s tests -v
inventory.csv प्रारूप, हेडर पंक्ति वैकल्पिक:
name,gitlab_version,ruby_version,install_type,hosting
prod,19.4.1,,official,self-managed
staging,19.4.3,,official,self-managed
legacy-source,19.4.3,3.4.11,source,self-managed
एग्ज़िट कोड: 0 = कुछ भी भेद्य नहीं मिला, 2 = भेद्य या एंड-ऑफ़-लाइफ़ निष्कर्ष, 1 = स्कैन त्रुटि। UNKNOWN एग्ज़िट कोड नहीं बदलता, लेकिन यह स्वच्छ नहीं है। उन आइटम्स को बंद करने से पहले किसी अन्य तरीके से पुष्टि करें।
स्रोत असहमतियाँ, और यह टूल किसका पालन करता है