
CVE-2026-59891 के लिए @sigstore/oci में पृथक रिग्रेशन और सुरक्षा-नियंत्रण प्रयोगशाला
@sigstore/oci के वास्तविक कमजोर संस्करण और ठीक किए गए संस्करण की तुलना समान इनपुट के साथ करता है, और
वातावरण-विशिष्ट एक्सपोज़र शर्तों की जाँच करने वाली एक पृथक अभ्यास और read-only ऑडिट
परियोजना है।
इस परियोजना के CVE Reporter gyubin02 हैं।
भर्ती·साक्षात्कार हेतु सारांश: CVE-2026-59891 कमजोरी प्रबंधन स्वचालन केस स्टडी
CVE-2026-59891 का मूल Registry प्रमाण-पत्र चुनते समय होने वाला hostname भ्रम है।
0.7.0: cr.io के ghcr.io स्ट्रिंग के भीतर होने के कारण
ghcr.io प्रमाण-पत्र चुन सकता है।0.7.1: hostname को सामान्यीकृत करने के बाद केवल ठीक से मेल खाने वाला प्रमाण-पत्र
चुनता है।यह रिपॉज़िटरी सबसे पहले दो credential चयन परिदृश्यों को स्वचालित रूप से सत्यापित करती है।
ghcr.io प्रमाण-पत्र है, जबकि लक्ष्य cr.io हैcr.io प्रमाण-पत्र मौजूद हैकमजोर संस्करण पहले परिदृश्य में गलत प्रमाण-पत्र चुनता है, और ठीक किया गया संस्करण इसे अस्वीकार करना चाहिए। दोनों संस्करणों को दूसरे सामान्य परिदृश्य में सफल होना चाहिए।
इसमें वास्तविक बाहरी Registry के बजाय 127.0.0.1 पर एक बार उपयोग होने वाले mock
Registry का उपयोग करके गतिशील तुलना जोड़ी गई है। कमजोर संस्करण 0.7.0 स्थानीय रूप से
2 अनुरोध करता है और प्रमाणीकरण challenge के बाद दूसरे अनुरोध में संश्लेषित
Authorization header देखा जाता है। ठीक किए गए संस्करण 0.7.1 को credential
चयन चरण में अस्वीकार कर दिया जाता है, इसलिए अनुरोध 0 हैं। परिणाम में header मान के बजाय
केवल अवलोकन हुआ या नहीं और अनुरोधों की संख्या रखी जाती है।
cve-2026-59891-audit लक्ष्य परियोजना की package-lock.json और
स्पष्ट रूप से निर्दिष्ट Docker config का केवल metadata पढ़कर निम्नलिखित को
अलग करता है।
@sigstore/oci इंस्टॉलेशन स्थान और संस्करणसंश्लेषित fixture के साथ तुरंत चलाएँ:
npm run audit:demo
अन्य Node.js प्रोजेक्ट की जाँच करें:
npm run audit:project -- \
--project ../target-project \
--docker-config ../review-copy/config.json \
--image cr.io/example/demo \
--destination-trust unknown \
--format markdown \
--output reports/cve-2026-59891.md
--destination-trust में निम्नलिखित में से एक अवश्य निर्दिष्ट करना होगा।
trusted: कोड और allowlist द्वारा destination सीमित होने की पुष्टि की गईuntrusted: बाहरी इनपुट या workflow इनपुट का destination पर प्रभाव पड़ता हैunknown: अभी तक पुष्टि नहीं की गईनिर्णय exposure_conditions_met, potential_exposure,
affected_component_only, not_detected, indeterminate में
विभाजित होते हैं। not_detected भी केवल दर्ज किए गए इनपुट दायरे के लिए
परिणाम है, इसका अर्थ "सुरक्षित" या "अनुपालन" नहीं है।
~/.docker/config.json को न पढ़ती है न संशोधित करती है।HOME और मूल्यहीन
lab-user / LAB_ONLY_FAKE_TOKEN का उपयोग करती है।HOME, लैब मार्कर और नकली मान सभी सटीक हों।fetch
कॉल को tripwire से रोकती है।127.0.0.1 पोर्ट के HTTP अनुरोधों की अनुमति है। बाहरी·अन्य
पोर्ट HTTP, DNS resolver, TLS, UDP, वैश्विक fetch·WebSocket
अवरुद्ध हैं।--docker-config को छोड़ नहीं सकती और HOME या
DOCKER_CONFIG से फ़ाइल का अनुमान नहीं लगाती।npm-shrinkwrap.json मिलने पर सुरक्षित होने का दावा नहीं करती बल्कि
विफल होती है।जानबूझकर कमज़ोर पैकेज इंस्टॉल किए जाते हैं, इसलिए npm package वितरण को
"private": true से अवरुद्ध किया गया है। इसे उत्पाद कोड की निर्भरता के रूप में
उपयोग नहीं करना चाहिए।
इस कारण npm audit का 0.7.0 रिपोर्ट करना अपेक्षित परिणाम है,
और अपवाद का दायरा व कारण SECURITY.md में दर्ज किया गया है।
आवश्यकताएँ: Node.js 22.22.2+, 24.15.0+ या 26 से अधिक। अनुशंसित संस्करण
.nvmrc में पिन किया गया है।
npm ci --ignore-scripts
npm test
npm run demo
npm run dynamic:demo
npm run audit:fixture
npm run audit:demo
npm run evidence
npm run demo का मुख्य अपेक्षित परिणाम:
0.7.0 collision credential-selected
0.7.1 collision credential-rejected
0.7.0 exact credential-selected
0.7.1 exact credential-selected
Regression result: PASS
npm run dynamic:demo का मुख्य अपेक्षित परिणाम:
{
"vulnerable": {
"packageVersion": "0.7.0",
"credentialSelection": "credential-selected",
"requestCount": 2,
"authorizationObserved": true,
"digestVerified": true,
"networkPolicy": "exact-loopback-only"
},
"fixed": {
"packageVersion": "0.7.1",
"credentialSelection": "credential-rejected",
"requestCount": 0,
"authorizationObserved": false,
"digestVerified": false,
"networkPolicy": "exact-loopback-only"
},
"regressionResult": "PASS"
}
कुल स्वचालित परीक्षण 34 हैं। npm run evidence परीक्षण के अधीन
6 आर्टिफैक्ट और उनकी अखंडता को सत्यापित करने वाले SHA256SUMS को मिलाकर कुल 7
फ़ाइलें उत्पन्न करता है।
यह परियोजना एक सीमित शैक्षिक नियंत्रण मूल्यांकन है। loopback परिणाम केवल संश्लेषित परिवेश के व्यवहार-अंतर को प्रमाणित करते हैं, और वास्तविक कॉर्पोरेट परिवेश में credential के उजागर होने·क्षति या नियंत्रण प्रभाव को प्रमाणित नहीं करते। इसका अर्थ CISA योग्यता, ISMS-P प्रमाणन या किसी विशिष्ट संगठन के नियम-अनुपालन से नहीं है। Node API guard लॉक किए गए dependency के प्रेक्षित निष्पादन-पथ के लिए एक रक्षा-परत है, OS स्तर का network namespace या फ़ायरवॉल नहीं।
विस्तृत दायरा, परीक्षण, जोखिम और नियंत्रण दस्तावेज़ docs/ में हैं,
और npm run evidence पुनरुत्पादन-योग्य निष्पादन साक्ष्य तथा SHA-256 manifest
उत्पन्न करता है।