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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-71557-poc — CVE-2026-71557 के लिए स्थानीय प्रूफ-ऑफ-कॉन्सेप्ट जो go-git फाइलसिस्टम रेफरेंस स्टोरेज में पाथ ट्रैवर्सल दर्शाता है, जिसमें एक्सप्लॉइट लॉजिक और असुरक्षित-बनाम-सुरक्षित संस्करण तुलना शामिल है। | Kitploit
उपकरण/GitHubGitHub/saku0512/cve-2026-71557-poc
भेद्यता विश्लेषणशोषणपेनिट्रेशन टेस्टिंगआपूर्ति श्रृंखला सुरक्षालर्निंग और शिक्षा
GitHubsaku0512/cve-2026-71557-poc

CVE-2026-71557-poc

CVE-2026-71557 के लिए स्थानीय प्रूफ-ऑफ-कॉन्सेप्ट जो go-git फाइलसिस्टम रेफरेंस स्टोरेज में पाथ ट्रैवर्सल दर्शाता है, जिसमें एक्सप्लॉइट लॉजिक और असुरक्षित-बनाम-सुरक्षित संस्करण तुलना शामिल है।

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

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

सभी देखें →

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

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

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

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

CVE-2026-71557: go-git reference name path traversal PoC

English version

सारांश

यह रिपॉज़िटरी go-git की सार्वजनिक एडवाइज़री GHSA-qgq7-7hm3-q39j पर आधारित CVE-2026-71557 का सुरक्षित स्थानीय PoC है।

फिक्स से पहले storage/filesystem loose reference के नाम को पर्याप्त रूप से सत्यापित नहीं करता था और उसे .git/<reference-name> पथ के रूप में उपयोग करता था। इसलिए, refs/heads/../../config जैसा reference नाम पास करने पर .. सामान्यीकृत हो जाता है, और सामान्य reference storage के बाहर स्थित .git/config को अधिलेखित किया जा सकता है।

यह PoC वास्तविक go-git API को कॉल करता है और केवल अस्थायी निर्देशिका में बनाई गई डमी .git/config को लक्षित करता है। यह बाहरी Git सर्वर से कनेक्शन, मौजूदा रिपॉज़िटरी में परिवर्तन, या मनमाने कमांड का निष्पादन नहीं करता है।

अस्वीकरण

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

भेद्यता विवरण

  • CVE ID: CVE-2026-71557
  • GitHub Advisory: GHSA-qgq7-7hm3-q39j
  • प्रकार: Path Traversal (CWE-22)
  • गंभीरता: Medium
  • CVSS v3.1: 6.3 (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:L)
  • प्रभावित संस्करण:
    • github.com/go-git/go-git/v5 <= 5.19.1
    • github.com/go-git/go-git/v6 <= 6.0.0-alpha.4
  • ठीक किए गए संस्करण:
    • v5: 5.19.2
    • v6: 6.0.0-alpha.5
  • प्रभावित स्टोरेज: storage/filesystem का dotgit reference storage
  • अप्रभावित स्टोरेज: storage/memory

मूल कारण

फिक्स से पहले v5.19.1 में, DotGit.SetRef reference नाम को सीधे फ़ाइल नाम के रूप में setRef को पास करता था।

root@kitploit:~
fileName := r.Name().String()
return d.setRef(fileName, content, old)

filesystem-backed storage का रूट आमतौर पर .git होता है। reference नाम refs/heads/../../config पथ सामान्यीकरण के बाद config बन जाता है, इसलिए reference मान का लेखन .git/config के लेखन में बदल जाता है। यदि कोई दुर्भावनापूर्ण Git सर्वर ऐसे reference नाम का विज्ञापित करता है और clone/fetch के दौरान refspec मैपिंग के बाद भी traversal बना रहता है, तो हमलावर-नियंत्रित reference नाम इस कोड पथ तक पहुँच सकता है।

फिक्स किया गया संस्करण filesystem storage के SetRef, Ref, RemoveRef जैसे प्रवेश बिंदुओं पर reference नाम को सत्यापित करता है और reference storage से बाहर जाने वाले नामों को अस्वीकार करता है।

PoC

आवश्यक वातावरण

  • Go 1.25 या उससे ऊपर, या toolchain स्वचालित प्राप्ति सक्षम वाला Go
  • पहले module download के लिए आवश्यक नेटवर्क कनेक्शन

कमजोर संस्करण पर पुनरुत्पादन

go.mod कमजोर v5.19.1 पर पिन किया गया है।

root@kitploit:~
go run .

अपेक्षित मुख्य आउटपुट:

root@kitploit:~
[*] go-git version: v5.19.1
[*] crafted reference: refs/heads/../../config
[*] SetReference error: <nil>
[!] VULNERABLE: .git/config was overwritten through the reference name.

PoC निम्नलिखित कार्य करता है:

  1. OS की अस्थायी निर्देशिका में filesystem-backed Git storage बनाता है
  2. .git/config में एक सुरक्षित marker लिखता है
  3. refs/heads/../../config नामक hash reference को SetReference में पास करता है
  4. सत्यापित करता है कि marker reference hash से बदल गया है
  5. अस्थायी निर्देशिका को स्वचालित रूप से हटा देता है

कमजोर और फिक्स किए गए संस्करण की तुलना

निम्नलिखित स्क्रिप्ट रिपॉज़िटरी के go.mod को बदले बिना, अस्थायी module का उपयोग करके v5.19.1 और v5.19.2 पर समान PoC को क्रम से चलाती है।

root@kitploit:~
./scripts/run-version-matrix.sh

अपेक्षित परिणाम:

root@kitploit:~
go-git v5.19.1
[!] VULNERABLE: .git/config was overwritten through the reference name.

go-git v5.19.2
[+] FIXED: the crafted reference was rejected and .git/config stayed intact.

यदि आप अस्थायी फ़ाइलों की जाँच करना चाहते हैं तो -keep जोड़ें। दिखाई गई निर्देशिका स्वचालित रूप से नहीं हटाई जाती, इसलिए जाँच के बाद इसे मैन्युअल रूप से हटा दें।

root@kitploit:~
go run . -keep

PoC का दायरा

यह PoC एडवाइज़री में वर्णित filesystem storage के कमजोर प्रवेश बिंदु को सीधे कॉल करके पथ ट्रैवर्सल द्वारा metadata overwrite को सत्यापित करता है। यह दुर्भावनापूर्ण Git प्रोटोकॉल सर्वर या clone/fetch की transport परत को लागू नहीं करता है।

उपाय

v5 उपयोगकर्ता v5.19.2 या उसके बाद के संस्करण में, और v6 alpha उपयोगकर्ता v6.0.0-alpha.5 या उसके बाद के संस्करण में अपडेट करें। जब तक अपडेट संभव न हो, filesystem-backed storage के साथ अविश्वसनीय Git सर्वर से clone/fetch न करें। केवल storage/memory का उपयोग करने वाले अनुप्रयोग इस भेद्यता से प्रभावित नहीं होते हैं।

संदर्भ

  • GHSA-qgq7-7hm3-q39j
  • go-git PR #2247 (v6 fix)
  • go-git PR #2254 (v5 backport)
  • v5 fix commit f3d0cc1
  • v5 additional safety commit 3b306ef
टूल डाउनलोड करें