CVE 2025-6018 & CVE 2025-6019
Local privilege escalation in Linux
Alexandre Bardiot
Hamza Bendali
Encadré par : Corentin Travers
1/36
Plan
Présentation
Historique
Démo
Impact
CVE-2025-6019
02 05
06
01
03
2/36
CVE-2025-6018
04
Présentation des CVE
3/36
Timeline
4/36
Analyse de la CVE-2025-6018 par NIST
Métrique Valeur
Vecteur d’attaque Local
Complexité
d’attaque
Faible
Privilège requis Faible
Interaction
utilisateur
Aucune
Portée Inchangée
Confidentialité Haute
Intégrité Haute
Disponibilité Haute
CVE-2025-6018
Score CVSS : 7.8 (High)
5/36
Analyse de la CVE-2025-6019 par NIST
Métrique Valeur
Vecteur d’attaque Local
Complexité
d’attaque
Haute
Privilège requis Faible
Interaction
utilisateur
Aucune
Portée Inchangée
Confidentialité Haute
Intégrité Haute
Disponibilité Haute
CVE-2025-6019
Score CVSS : 7.0 (High)
6/36
CVE-2025-6018
D’un compte sans privilège à un compte avec un faux accès physique
7/36
PAM
Pluggable authentication modules (PAM)
Authentification
Phase 1
Création de la session
Phase 2
8/36
PAM
Phase d’authentification :
/etc/pam.d/common-auth
pam_env.so
Etape 1
pam_unix.so
Etape 2
Etape 3 pam_permit.so
9/36
PAM
Phase de création de la session:
/etc/pam.d/common-session
pam_systemd.so
Etape 1
pam_env.so
Etape 2
10/36
Faille dans PAM
Phase
d’authentification
Phase de création
de la session
1
pam_env.so
2
~/.pam_environment (fichier utilisateur)
XDG_SEAT
pam_getenv
XDG_VTNR
/etc/pam.d/environment (global)
pam_systemd.so
11/36
Polkit
Type d’utilisateurs
allow_any
allow_active
allow_inactive
12/36
Polkit
Droits
yes
no
auth_self
auth_admin
13/36
Polkit
Type d’utilisateurs Droits associés
allow_any auth_admin
allow_active yes
allow_inactive auth_admin
Fonction Reboot et Redimensionnement de fichiers
14/36
D-Bus
Protocole de communication inter processus
PAM :
XDG_SEAT
XDG_VTNR
D-Bus
Polkit :
Allow_active
15/36
Recap CVE-2025-6018
Connexion en SSH
Création d’une session
avec l'environnement
PAM global corrompu
Modification du fichier
d'environnement pam
utilisateur
Création d’une nouvelle
session
Chargement du fichier
d'environnement
utilisateur
Utilisateur
allow_active
16/36
Contre Mesures CVE-2025-6018
Avant CVE découverte
Par défaut : Lit .pam_environment
Phase authentification puis phase session
Après CVE découverte
Par défaut : Ne lit pas .pam_environment
Phase session puis phase authentification
17/36
CVE-2025-6019
Passer d’un utilisateur allow_active à root
18/36
Objectif
Utilisateur allow_active Utilisateur root
19/36
Explication du bit SUID
Bit SUID
Binaire ajouté
Délégation d’autorité
20/36
Shell avec bit SUID
Shell avec bit SUID
Binaire bash/sh
Permet d'exécuter du code en tant que
Root
21/36
Drapeaux nosuid et nodev
nosuid nodev
Ignore le bit SUID
Empêche
l'interprétation des
fichiers de
périphérique
spéciaux
22/36
Système de fichiers et montage
Les données sont organisées dans
des systèmes de fichiers (ext4,
XFS…)
Point de montage : /mnt/usb donc
ce dossier affiche le contenu de
/dev/sdb1
commande de montage :
mount /dev/sdb1 /mnt/usb
Par mesure de sécurité, on monte ce système de fichiers avec les options nosuid et nodev afin
d’empêcher l’utilisation de bits SUID.
23/36
Image malveillante avec bash SUID
L’attaquant crée un “faux disque” sous forme de fichier (image XFS).
Il y met une copie de /bin/bash à l’intérieur.
Il configure ce bash avec le bit SUID root et le transfert à la victime
Si un service système monte cette image sans nosuid,
→ l’attaquant peut lancer ce bash et obtenir un shell
root.
24/36
Udisks et libblockdev
Udisks : Libblockdev :
- Système exposé sur D-Bus
- Reçoit les demandes des applis /
utilisateurs (monter, redimensionner,
formater…)
- Vérifie les droits avec polkit et décide
quoi est autorisé
- Bibliothèque utilisée par udisks
- Exécute les vraies opérations disque :
création, suppression,
redimensionnement, montage…
- Envoie les commandes concrètes au
kernel et aux outils disque
25/36
Comment le redimensionnement fonctionne
26/36
Où se situe exactement l’erreur
Depuis 2017 : redimensionnement XFS dangereux
Pour XFS, udisks appelle xfs_growfs via libblockdev.
Si le FS n’est pas monté : → libblockdev le monte temporairement
dans /tmp, redimensionne puis le démonte directement après
❌ Faille : ce montage se fait sans nosuid ni nodev.
Si on arrive à faire échouer le démontage alors on garde actif ce montage temporaire
qu’on peut utiliser par la suite.
27/36
Comment faire échouer le démontage ?
28/36
Comment faire échouer le démontage ?
29/36
Comment faire échouer le démontage ?
30/36
Comment faire échouer le démontage ?
31/36
Recap CVE-2025-6019
Préparation et dépôt
d’une image disque
malveillante
il exécute
/tmp/blockdev…/bash
L’attaquant
allow_active crée un
loop device sur une
image XFS
L’attaquant garde un
processus ouvert sur
/tmp/blockdev*/bash
et redimentionne
Le démontage échoue
car le montage est
occupé
Utilisateur root
32/36
Contre Mesures CVE-2025-6019
Avant CVE découverte
Monter temporairement sans les drapeaux
Après CVE découverte
Montage réalisé avec les drapeaux nosuid et nodev
33/36
Modèles de sécurité
Architecture :
- Hiérarchisé
- Centralisé
Attaquant :
- Accès local initial
34/36
Demo
35/36
Merci de votre attention !
Avez vous des questions ?
36/36

présentation powepoint matser CVE 2025.pdf