Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
postgres-basebackup-symlink — PostgreSQL 18.6 - Élevé - À distance - Écriture de fichier - pg_basebackup suit un lien symbolique tar absolu, résidu de CVE-2026-6475 | Kitploit
Outils/GitHubGitHub/abraxas/postgres-basebackup-symlink
Analyse des VulnérabilitésExploitationExploitation d'Applications WebTests d'IntrusionArticles et RechercheSécurité des Bases de DonnéesLabs et Pratique
GitHub
abraxas/postgres-basebackup-symlink

postgres-basebackup-symlink

PostgreSQL 18.6 - Élevé - À distance - Écriture de fichier - pg_basebackup suit un lien symbolique tar absolu, résidu de CVE-2026-6475

Voir le dépôt
6il y a 3 joursPas 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

Abraxas Labs - postgres-basebackup-symlink

abraxaslabs.tech  ·  github.com/abraxas  ·  @abraxas_null  ·  [email protected]  ·  postgres-basebackup-symlink

postgres-basebackup-symlink

Classe : Écriture de fichier Portée : Distante

PostgreSQL 18.6 (724edf9) - PostgreSQL Global Development Group

CVE-2026-6475 a ajouté path_is_safe_for_extraction pour les noms de membres tar. Les cibles de liens symboliques absolues échappent toujours à cette vérification afin que les tablespaces fonctionnent. astreamer_file.c fait ensuite un symlink() de la cible, puis un fopen(..., "wb") la suit. Le format par défaut de pg_basebackup est plain (-F p). pg_rewind create_target_symlink vérifie le chemin et ne crée jamais le lien.

Une source hostile qui parle BASE_BACKUP peut planter un lien symbolique absolu et écraser n'importe quel fichier que l'UID de sauvegarde peut écrire. Même modèle de victime que 6475. Il ne s'agit pas d'un nouveau signalement des vérifications de noms de membres.

IDpas encore de CVE
ClasseÉcriture de fichier (reste de lien symbolique tar absolu de CVE-2026-6475)
PortéeDistante (UI:R client contre PostgreSQL hostile)
CWECWE-59, CWE-22
CVSSÉlevé : 8.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
ProduitPostgreSQL
Affectétag 18.6 REL_18_6 (724edf9bde9d356724ad384a2e196edc3c9f80f7), pg_basebackup / pg_rewind in-tree
Authla victime exécute pg_basebackup -D <dir> par défaut contre une source attaquante
LicenceGNU Affero GPL v3.0
Lab127.0.0.1 uniquement

Ce qu'un attaquant peut faire

Quelqu'un capable d'amener un opérateur à exécuter pg_basebackup -D contre son PostgreSQL (le même modèle UI:R que CVE-2026-6475) peut écrire en dehors de -D.

PrivilègeMéthode / sinkProuvé en lab ou déduit
Intégrité : écrire un fichier en dehors de -DTar BASE_BACKUP hostile : membre typeflag '2' avec un nom relatif sûr (pg_tblspc/16384) et une cible de lien absolue, puis un membre régulier sous ce nom. extract_link puis create_file_for_extract fopen(..., "wb") sans O_NOFOLLOWProuvé en lab. A écrit POSTGRES-BASEBACKUP-SYMLINK-WITNESS dans /work/oracle/. Dest contient le lien symbolique. Le tar de contrôle (sans lien symbolique) a laissé l'oracle vide et n'a écrit PG_VERSION qu'à l'intérieur de -D
Intégrité : écraser un rc de shell, authorized_keys, une unité utilisateur systemd ou un crontabMême sink, tout chemin que l'UID client peut écrireDéduit. Ce lab ne touche pas à ces fichiers
Disponibilité : détruire la config ou les clés du clientMême écritureDéduit. Non démontré
Reconnaissance du disque clientl'extraction est une écriture, pas une lectureFermé
Remonter .. ou des noms de membres absoluspath_is_safe_for_extractionFermé. C'est CVE-2026-6475
SQL non privilégié côté serveur / protocole non authentifiéserveur 18.6 par défautFermé. Ce reste concerne le client
Sauvegarde tar uniquementpg_basebackup -F t stocke le tar sans l'extraireFermé
RCE dans postgrespas ce sinkFermé

pg_rewind a le même reste create_target_symlink / open(). Ce lab ne pilote que pg_basebackup.

Comment je l'ai trouvé

J'ai épinglé postgres/postgres REL_18_6 après la vague 18.6 (28 CVE, plus l'ensemble 18.4/18.2 déjà présent sur cet arbre). Vingt-deux chasses. Serveur par défaut, SQL non privilégié, protocole non authentifié : rien à ce niveau. CVE-2026-6475 était le frère à relire.

Les noms de membres sont vérifiés. Les cibles de liens symboliques absolues ne le sont pas :

if (!is_absolute_path(linktarget) &&
    !path_is_safe_for_extraction(member->linktarget))
{
    pg_fatal("link target has unsafe path name: \"%s\"",
             member->linktarget);
}
extract_link(mystreamer->filename, linktarget);

create_file_for_extract est toujours fopen(filename, "wb"). Le commentaire à astreamer_file.c:351-356 indique que le mapping est appliqué sans vérifier que le lien est à l'intérieur de pg_tblspc.

Fausses pistes déjà consignées : considérer 6475 comme fermé et passer à autre chose ; pointer -D vers un répertoire de données actif ; écraser un rc de shell pour le spectacle. Un serveur 18.6 honnête n'émet que des liens symboliques pg_tblspc/<oid> et place le contenu des tablespaces dans une archive séparée. Une source malveillante qui parle BASE_BACKUP peut placer le membre régulier de suivi dans le même tar. C'est cela, le reste.

Lab

python3 postgres-basebackup-symlink-Abraxas-Labs.py

ou

cd lab
./run.sh

postgres:18.6 comme image source, exécutant un speaker BASE_BACKUP. Le client est le pg_basebackup in-tree du même tag (pg_basebackup (PostgreSQL) 18.6). Loopback 127.0.0.1:19370. Projet Compose postgres-basebackup-symlink. Ne pointez pas -D vers un répertoire de données actif.

SUCCESS postgres-basebackup-symlink control-inside=yes oracle-outside=yes dest-is-symlink=yes image=postgres:18.6 how=pg_basebackup POSTGRES-BASEBACKUP-SYMLINK-WITNESS

Le correctif

Traiter les cibles de liens symboliques absolues comme non sûres, sauf si elles sont réécrites par --tablespace-mapping. Ouvrir les fichiers extraits avec O_NOFOLLOW / lstat afin qu'un lien planté ne puisse pas être suivi. Appliquer path_is_safe_for_extraction à la réécriture de link ainsi qu'à path. Rejeter un membre régulier dont le chemin traverse un lien symbolique sorti de -D.

Références

  • github.com/postgres/postgres tag REL_18_6 (724edf9bde9d356724ad384a2e196edc3c9f80f7)
  • src/fe_utils/astreamer_file.c · src/fe_utils/astreamer_tar.c
  • src/bin/pg_rewind/file_ops.c
  • Correctif voisin (noms de membres, pas cette cible) : CVE-2026-6475
  • CWE-59 · CWE-22

Licence

GNU Affero GPL v3.0. Voir LICENSE. Lab en loopback uniquement. Aucune garantie.

Télécharger l’outil