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

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

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

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

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

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
CVE-2026-22038 — CVE-2026-22038 का विस्तृत विश्लेषण, जो AutoGPT Stagehand ब्लॉक्स में एक उच्च-गंभीरता वाली भेद्यता है जो API कुंजियों को सादे पाठ (plaintext) में लॉग करती है, जिसमें मूल कारण, प्रभाव और निवारण शामिल है। | Kitploit
उपकरण/GitHubGitHub/sivaadityacoder/cve-2026-22038
भेद्यता विश्लेषणकोड विश्लेषणसीक्रेट डिटेक्शनलर्निंग और शिक्षालॉग विश्लेषण
GitHubsivaadityacoder/cve-2026-22038

CVE-2026-22038

CVE-2026-22038 का विस्तृत विश्लेषण, जो AutoGPT Stagehand ब्लॉक्स में एक उच्च-गंभीरता वाली भेद्यता है जो API कुंजियों को सादे पाठ (plaintext) में लॉग करती है, जिसमें मूल कारण, प्रभाव और निवारण शामिल है।

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

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

सभी देखें →

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

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

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

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

CVE-2026-22038 — AutoGPT Stagehand ब्लॉक्स लॉग API कुंजियाँ प्लेनटेक्स्ट में

CVE ID: CVE-2026-22038
उत्पाद: AutoGPT प्लेटफ़ॉर्म (Stagehand एकीकरण)
प्रभावित संस्करण: autogpt-platform-beta-v0.6.45 तक के सभी संस्करण
पैच किया गया: autogpt-platform-beta-v0.6.46
भेद्यता प्रकार: CWE-532 — लॉग फ़ाइल में संवेदनशील जानकारी का सम्मिलन
गंभीरता: उच्च
रिपोर्टकर्ता: पनुगंती शिव आदित्य (@sivaadityacoder)
रिपोर्ट दिनांक: 19 दिसंबर, 2025
GitHub सलाह: GHSA-rc89-6g7g-v5v7


मेरा दृष्टिकोण

AutoGPT एक ओपन-सोर्स प्लेटफ़ॉर्म है जो उपयोगकर्ताओं को स्वायत्त AI एजेंट बनाने और चलाने की सुविधा देता है। इसमें एक Stagehand एकीकरण शामिल है जो ब्राउज़र ऑटोमेशन और OpenAI, Anthropic, और Groq जैसे LLM प्रदाताओं से जुड़ता है।

Stagehand ब्लॉक्स की कोड समीक्षा के दौरान, मैंने देखा कि क्रेडेंशियल ऑब्जेक्ट सीधे logger.info() कॉल में पास किए जा रहे थे। मैंने प्रत्येक लॉग स्टेटमेंट का पता लगाया और पाया कि को इनलाइन कॉल किया जा रहा था — जो Pydantic द्वारा प्रदान की गई सुरक्षा को स्पष्ट रूप से बायपास करता है।

.get_secret_value()
SecretStr

भेद्य फ़ाइल:

root@kitploit:~
autogpt_platform/backend/backend/blocks/stagehand/blocks.py

तीन ब्लॉक प्रभावित हैं, प्रत्येक में समान पैटर्न है:

StagehandObserveBlock (पंक्तियाँ 185–188)

root@kitploit:~
logger.info(f"OBSERVE: Stagehand credentials: {stagehand_credentials}")
logger.info(
    f"OBSERVE: Model credentials: {model_credentials} for provider "
    f"{model_credentials.provider} secret: {model_credentials.api_key.get_secret_value()}"
)

StagehandActBlock (पंक्तियाँ 285–288)

root@kitploit:~
logger.info(f"ACT: Stagehand credentials: {stagehand_credentials}")
logger.info(
    f"ACT: Model credentials: {model_credentials} for provider "
    f"{model_credentials.provider} secret: {model_credentials.api_key.get_secret_value()}"
)

StagehandExtractBlock (पंक्तियाँ 373–376)

root@kitploit:~
logger.info(f"EXTRACT: Stagehand credentials: {stagehand_credentials}")
logger.info(
    f"EXTRACT: Model credentials: {model_credentials} for provider "
    f"{model_credentials.provider} secret: {model_credentials.api_key.get_secret_value()}"
)

शोषण की पुष्टि करने के लिए, मैंने वैध क्रेडेंशियल के साथ प्रत्येक Stagehand ब्लॉक चलाया और एप्लिकेशन लॉग खोजे:

root@kitploit:~
grep "secret:" /var/log/autogpt/application.log

आउटपुट ने पुष्टि की कि वास्तविक API कुंजियाँ प्लेनटेक्स्ट में दिखाई दीं:

root@kitploit:~
[INFO] OBSERVE: Model credentials: ... secret: sk-proj-abc123xyz789...
[INFO] ACT: Model credentials: ... secret: sk-ant-api03-def456uvw...
[INFO] EXTRACT: Model credentials: ... secret: sk-1234567890abcdef...

मूल कारण

AutoGPT कोडबेस API कुंजियों के लिए Pydantic के SecretStr प्रकार का सही ढंग से उपयोग करता है। जब एक SecretStr ऑब्जेक्ट को f-string में शामिल किया जाता है या सामान्य रूप से प्रिंट किया जाता है, तो यह ********** के रूप में प्रदर्शित होता है — वह सुरक्षा जानबूझकर है।

मूल कारण यह है कि डेवलपर्स ने logger.info() स्टेटमेंट के अंदर सीधे .get_secret_value() कॉल किया। यह स्पष्ट रूप से सीक्रेट को अनरैप करता है और कच्चे स्ट्रिंग मान को लॉगर को पास करता है, जिससे SecretStr की अंतर्निहित मास्किंग पूरी तरह से बायपास हो जाती है।

लॉग स्तर INFO है, जिसका अर्थ है कि ये स्टेटमेंट सामान्य उत्पादन वातावरण में निष्पादित होते हैं — न कि केवल स्थानीय डिबगिंग सत्रों में। हर बार जब इनमें से कोई ब्लॉक क्रेडेंशियल के साथ चलता है, तो सीक्रेट लॉग फ़ाइल में लिखा जाता है।


प्रभाव

  • क्रेडेंशियल चोरी — लॉग फ़ाइलों में प्लेनटेक्स्ट API कुंजियाँ, जो लॉग एक्सेस रखने वाले किसी भी व्यक्ति के लिए उपलब्ध हैं
  • वित्तीय क्षति — चुराई गई कुंजियों का उपयोग पीड़ित की लागत पर महंगे API कॉल करने के लिए किया जाता है
  • डेटा एक्सेस — चुराए गए क्रेडेंशियल उन सेवाओं में पीड़ित के डेटा तक पहुंच प्रदान कर सकते हैं
  • कोटा समाप्ति — एक हमलावर सेवा से इनकार करने के लिए जानबूझकर दर सीमाओं को समाप्त कर सकता है
  • लंबी एक्सपोज़र अवधि — लॉग फ़ाइलें अक्सर 30–90 दिनों तक रखी जाती हैं, इसलिए एक बार उपयोग की गई कुंजी महीनों तक उजागर रह सकती है
  • अनुपालन मुद्दे — सीक्रेट लॉग करना PCI-DSS, SOC 2, और GDPR आवश्यकताओं का उल्लंघन करता है

हमले का परिदृश्य:

  1. एक हमलावर गलत कॉन्फ़िगर किए गए एग्रीगेशन सिस्टम (Splunk, ELK, Datadog, CloudWatch), समझौता किए गए मॉनिटरिंग खाते, या अत्यधिक आंतरिक पहुंच के माध्यम से लॉग फ़ाइलों तक पढ़ने की पहुंच प्राप्त करता है।
  2. वे secret:, sk-proj-, या sk-ant- जैसे पैटर्न के लिए लॉग खोजते हैं।
  3. वे लॉग आउटपुट से वास्तविक API कुंजियाँ निकालते हैं।
  4. वे कुंजी सत्यापित करते हैं:
root@kitploit:~
curl https://api.openai.com/v1/chat/completions \
  -H "Authorization: Bearer sk-proj-abc123xyz789..." \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-4", "messages": [{"role": "user", "content": "test"}]}'
  1. वैध कुंजी के साथ वे API कॉल कर सकते हैं, कोटा समाप्त कर सकते हैं, या पीड़ित के डेटा तक पहुंच सकते हैं।

उजागर क्रेडेंशियल: Stagehand / Browserbase API कुंजियाँ, OpenAI API कुंजियाँ, Anthropic API कुंजियाँ, Groq API कुंजियाँ, और Stagehand ब्लॉक्स में कॉन्फ़िगर किए गए कोई भी LLM प्रदाता क्रेडेंशियल।


समाधान

autogpt-platform-beta-v0.6.46 में पैच logger.info() स्टेटमेंट से .get_secret_value() कॉल हटा देता है।

अनुशंसित दृष्टिकोण — सीक्रेट को लॉग से पूरी तरह हटाएँ:

root@kitploit:~
# पहले (भेद्य):
logger.info(
    f"OBSERVE: Model credentials: {model_credentials} for provider "
    f"{model_credentials.provider} secret: {model_credentials.api_key.get_secret_value()}"
)

# बाद में (ठीक किया गया):
logger.info(
    f"OBSERVE: Model credentials for provider {model_credentials.provider} (API key redacted)"
)

वैकल्पिक — रिडैक्ट करें, लॉग संरचना बनाए रखें:

root@kitploit:~
def redact_secret(value: str) -> str:
    if len(value) <= 8:
        return "***"
    return f"{value[:4]}...{value[-4:]}"

logger.info(
    f"OBSERVE: Model credentials for provider {model_credentials.provider} "
    f"secret: {redact_secret(model_credentials.api_key.get_secret_value())}"
)

रिडैक्शन दृष्टिकोण केवल पहले और अंतिम 4 अक्षर उजागर करता है — पूर्ण सीक्रेट प्रकट किए बिना यह पहचानने के लिए पर्याप्त है कि कौन सी कुंजी उपयोग की गई थी।


मुख्य निष्कर्ष

  1. लॉग स्टेटमेंट में कभी भी .get_secret_value() कॉल न करें। यदि आपका फ्रेमवर्क आपको सीक्रेट-मास्किंग प्रकार (SecretStr, SecretBytes, आदि) देता है, तो उसे अपना काम करने दें। लॉगर के अंदर अनरैप विधि कॉल करना पूरे उद्देश्य को विफल कर देता है।

  2. INFO उत्पादन-स्तर लॉगिंग है। क्रेडेंशियल के डिबग-शैली डंप कभी भी INFO तक नहीं पहुंचने चाहिए। यदि आपको वास्तव में पुष्टि करने की आवश्यकता है कि कौन से क्रेडेंशियल सक्रिय हैं, तो केवल गैर-संवेदनशील मेटाडेटा (प्रदाता नाम, कुंजी उपसर्ग, अंतिम 4 अक्षर) लॉग करें।

  3. लॉग फ़ाइलें एक हमले की सतह हैं। उन्हें किसी भी अन्य संवेदनशील डेटा स्टोर की तरह व्यवहार करें — पहुंच प्रतिबंधित करें, उन्हें घुमाएँ, और ऑडिट करें कि क्या जाता है। एग्रीगेशन टूल (Splunk, ELK, Datadog) में अक्सर व्यापक पढ़ने की पहुंच होती है, इसलिए किसी भी लॉग लाइन में एक सीक्रेट प्रभावी रूप से उन सिस्टमों में भी एक सीक्रेट है।

  4. समाधान हमेशा बग से सरल होता है। दो लॉग लाइनें हटाना (या उन्हें रिडैक्टेड समकक्षों से बदलना) इस एक्सपोज़र को पूरी तरह से बंद कर देता है। उत्पादन में छोड़े गए "अस्थायी डिबग लॉगिंग" से सुरक्षा ऋण सामान्य है और कोड समीक्षा से रोका जा सकता है।

  5. SecretStr सुरक्षाएँ ऑप्ट-इन हैं, स्वचालित नहीं। डेवलपर्स को समझना चाहिए कि सुरक्षा तभी बनी रहती है जब तक कोई स्पष्ट रूप से मान को अनरैप नहीं करता। कोड समीक्षा को प्रमाणीकरण पथ के बाहर .get_secret_value() के किसी भी उपयोग को चिह्नित करना चाहिए।


समयरेखा

दिनांकघटना
19 दिसंबर, 2025Huntr और GitHub सुरक्षा सलाह के माध्यम से AutoGPT अनुरक्षकों को रिपोर्ट किया गया
2025–2026अनुरक्षक निकोलस टिंडल ने रिपोर्ट स्वीकार की
अप्रैल 2026 से पहलेautogpt-platform-beta-v0.6.46 में पैच किया गया
25 अप्रैल, 2026CVE-2026-22038 निर्धारित किया गया

संदर्भ

  • GitHub सुरक्षा सलाह GHSA-rc89-6g7g-v5v7
  • CWE-532: लॉग फ़ाइल में संवेदनशील जानकारी का सम्मिलन
  • OWASP लॉगिंग चीट शीट
  • Trickest CVE डेटाबेस प्रविष्टि
टूल डाउनलोड करें