Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-22038 — # Detaillierte Analyse von CVE-2026-22038 Detaillierte Analyse von CVE-2026-22038, einer Schwachstelle mit hohem Schweregrad in AutoGPT-Stagehand-Blöcken, die API-Schlüssel im Klartext protokolliert, einschließlich Ursache, Auswirkungen und Abhilfemaßnahmen. | Kitploit
Tools/GitHubGitHub/sivaadityacoder/cve-2026-22038
SchwachstellenanalyseCode-AnalyseSecret-ErkennungLernen & BildungLog-Analyse
GitHubsivaadityacoder/cve-2026-22038

CVE-2026-22038

# Detaillierte Analyse von CVE-2026-22038 Detaillierte Analyse von CVE-2026-22038, einer Schwachstelle mit hohem Schweregrad in AutoGPT-Stagehand-Blöcken, die API-Schlüssel im Klartext protokolliert, einschließlich Ursache, Auswirkungen und Abhilfemaßnahmen.

Repository anzeigen
vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-22038 — AutoGPT Stagehand-Blöcke protokollieren API-Schlüssel im Klartext

CVE-ID: CVE-2026-22038
Produkt: AutoGPT-Plattform (Stagehand-Integration)
Betroffene Versionen: Alle Versionen bis einschließlich autogpt-platform-beta-v0.6.45
Behoben in: autogpt-platform-beta-v0.6.46
Schwachstellentyp: CWE-532 — Einfügung vertraulicher Informationen in Protokolldateien
Schweregrad: Hoch
Gemeldet von: Panuganti Siva Aditya (@sivaadityacoder)
Meldedatum: 19. Dezember 2025
GitHub Advisory: GHSA-rc89-6g7g-v5v7


Mein Vorgehen

AutoGPT ist eine Open-Source-Plattform, mit der Benutzer autonome KI-Agenten erstellen und ausführen können. Sie enthält eine Stagehand-Integration, die eine Verbindung zu Browser-Automatisierung und LLM-Anbietern wie OpenAI, Anthropic und Groq herstellt.

Bei einer Code-Überprüfung der Stagehand-Blöcke fiel mir auf, dass Anmeldedaten-Objekte direkt an logger.info()-Aufrufe übergeben wurden. Ich verfolgte jede Protokollanweisung und stellte fest, dass inline aufgerufen wurde — wodurch der von Pydantic bereitgestellte -Schutz explizit umgangen wurde.

.get_secret_value()
SecretStr

Die verwundbare Datei:

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

Drei Blöcke sind betroffen, jeweils mit demselben Muster:

StagehandObserveBlock (Zeilen 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 (Zeilen 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 (Zeilen 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()}"
)

Um die Ausnutzbarkeit zu bestätigen, führte ich jeden Stagehand-Block mit gültigen Anmeldedaten aus und durchsuchte die Anwendungsprotokolle:

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

Die Ausgabe bestätigte, dass echte API-Schlüssel im Klartext erschienen:

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...

Grundursache

Die AutoGPT-Codebasis verwendet korrekt den SecretStr-Typ von Pydantic für API-Schlüssel. Wenn ein SecretStr-Objekt in einen f-String eingefügt oder normal ausgegeben wird, wird es als ********** dargestellt — dieser Schutz ist beabsichtigt.

Die Grundursache ist, dass die Entwickler .get_secret_value() direkt innerhalb der logger.info()-Anweisungen aufgerufen haben. Dadurch wird das Geheimnis explizit entschlüsselt und der rohe Zeichenfolgenwert an den Logger übergeben, wodurch die integrierte Maskierung von SecretStr vollständig umgangen wird.

Die Protokollebene ist INFO, was bedeutet, dass diese Anweisungen in normalen Produktionsumgebungen ausgeführt werden — nicht nur in lokalen Debugging-Sitzungen. Jedes Mal, wenn einer dieser Blöcke mit Anmeldedaten ausgeführt wird, wird das Geheimnis in die Protokolldatei geschrieben.


Auswirkungen

  • Diebstahl von Anmeldedaten — Klartext-API-Schlüssel in Protokolldateien, für jeden mit Protokollzugriff sichtbar
  • Finanzieller Schaden — gestohlene Schlüssel werden verwendet, um teure API-Aufrufe auf Kosten des Opfers zu tätigen
  • Datenzugriff — die gestohlenen Anmeldedaten können Zugriff auf die Daten des Opfers in diesen Diensten gewähren
  • Kontingenterschöpfung — ein Angreifer kann absichtlich Ratenlimits aufbrauchen, um den Dienst zu verweigern
  • Langes Offenlegungsfenster — Protokolldateien werden oft 30–90 Tage aufbewahrt, sodass ein einmal verwendeter Schlüssel monatelang offengelegt bleiben kann
  • Compliance-Probleme — das Protokollieren von Geheimnissen verstößt gegen PCI-DSS-, SOC-2- und DSGVO-Anforderungen

Angriffsszenario:

  1. Ein Angreifer erhält Lesezugriff auf Protokolldateien über ein falsch konfiguriertes Aggregationssystem (Splunk, ELK, Datadog, CloudWatch), ein kompromittiertes Überwachungskonto oder übermäßigen internen Zugriff.
  2. Er durchsucht Protokolle nach Mustern wie secret:, sk-proj- oder sk-ant-.
  3. Er extrahiert echte API-Schlüssel aus der Protokollausgabe.
  4. Er verifiziert den Schlüssel:
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. Mit einem gültigen Schlüssel kann er API-Aufrufe tätigen, Kontingente aufbrauchen oder auf die Daten des Opfers zugreifen.

Offengelegte Anmeldedaten: Stagehand-/Browserbase-API-Schlüssel, OpenAI-API-Schlüssel, Anthropic-API-Schlüssel, Groq-API-Schlüssel und alle LLM-Anbieter-Anmeldedaten, die in den Stagehand-Blöcken konfiguriert sind.


Behebung

Der Patch in autogpt-platform-beta-v0.6.46 entfernt die .get_secret_value()-Aufrufe aus den logger.info()-Anweisungen.

Empfohlener Ansatz — das Geheimnis vollständig aus dem Protokoll entfernen:

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

# Nachher (behoben):
logger.info(
    f"OBSERVE: Model credentials for provider {model_credentials.provider} (API key redacted)"
)

Alternative — Schwärzung unter Beibehaltung der Protokollstruktur:

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())}"
)

Der Schwärzungsansatz legt nur die ersten und letzten 4 Zeichen offen — genug, um zu identifizieren, welcher Schlüssel verwendet wurde, ohne das vollständige Geheimnis preiszugeben.


Wichtige Erkenntnisse

  1. Rufen Sie .get_secret_value() niemals in Protokollanweisungen auf. Wenn Ihr Framework einen Typ zur Geheimnismaskierung bereitstellt (SecretStr, SecretBytes usw.), lassen Sie ihn seine Aufgabe erfüllen. Das Aufrufen der Entpackungsmethode innerhalb eines Loggers macht den gesamten Zweck zunichte.

  2. INFO ist Protokollierung auf Produktionsebene. Debug-artige Ausgaben von Anmeldedaten sollten niemals die INFO-Ebene erreichen. Wenn Sie wirklich bestätigen müssen, welche Anmeldedaten aktiv sind, protokollieren Sie nur nicht sensible Metadaten (Anbietername, Schlüsselpräfix, letzte 4 Zeichen).

  3. Protokolldateien sind eine Angriffsfläche. Behandeln Sie sie wie jeden anderen sensiblen Datenspeicher — beschränken Sie den Zugriff, rotieren Sie sie und prüfen Sie, was hineingelangt. Aggregationstools (Splunk, ELK, Datadog) haben oft breiten Lesezugriff, sodass ein Geheimnis in einer Protokollzeile effektiv auch ein Geheimnis in diesen Systemen ist.

  4. Die Behebung ist immer einfacher als der Fehler. Das Entfernen von zwei Protokollzeilen (oder deren Ersetzung durch geschwärzte Äquivalente) schließt diese Offenlegung vollständig. Sicherheitsschulden durch „temporäres Debug-Logging", das in der Produktion verbleibt, sind häufig und durch Code-Überprüfung vermeidbar.

  5. SecretStr-Schutz ist optional, nicht automatisch. Entwickler müssen verstehen, dass der Schutz nur so lange gilt, wie niemand den Wert explizit entpackt. Die Code-Überprüfung sollte jede Verwendung von .get_secret_value() außerhalb des Authentifizierungspfads kennzeichnen.


Zeitplan

DatumEreignis
19. Dezember 2025Gemeldet an die AutoGPT-Maintainer über Huntr und GitHub Security Advisory
2025–2026Maintainer Nicholas Tindle bestätigte den Bericht
Vor April 2026Behoben in autogpt-platform-beta-v0.6.46
25. April 2026CVE-2026-22038 zugewiesen

Referenzen

  • GitHub Security Advisory GHSA-rc89-6g7g-v5v7
  • CWE-532: Insertion of Sensitive Information into Log File
  • OWASP Logging Cheat Sheet
  • Trickest CVE Database Entry
Tool herunterladen