🔍 Contexte

Publié le 15 mai 2026 sur GitHub par le compte 0xdeadbeefnetwork, le dépôt ssh-keysign-pwn met à disposition un proof-of-concept (PoC) fonctionnel exploitant une vulnérabilité du noyau Linux. Le bug a été rapporté par Qualys et corrigé par Linus Torvalds le 2026-05-14 (commit 31e62c2ebbfd). Jann Horn avait identifié la forme de vol de descripteur de fichier dès octobre 2020, soit six ans avant le correctif.

🐛 Vulnérabilité exploitée

La faille réside dans __ptrace_may_access() : lorsque task->mm == NULL, la vérification dumpable est ignorée. Durant do_exit(), exit_mm() s’exécute avant exit_files(), créant une fenêtre temporelle où le processus n’a plus de mm mais conserve ses descripteurs de fichiers ouverts. pidfd_getfd(2) réussit dans cette fenêtre si l’UID de l’appelant correspond à celui de la cible.

🎯 Cibles et vecteurs d’exploitation

  • sshkeysign_pwn : extrait /etc/ssh/ssh_host_{ecdsa,ed25519,rsa}_key. ssh-keysign ouvre ces fichiers (mode 0600) avant permanently_set_uid(), puis abandonne sur EnableSSHKeysign=no en laissant les fds ouverts. Ce comportement existe depuis 2002.
  • chage_pwn : extrait /etc/shadow. chage -l <user> appelle spw_open(O_RDONLY) puis setreuid(ruid, ruid), effectuant un drop complet de privilèges. La race condition permet de récupérer le fd shadow et de craquer le hash root hors ligne.

🖥️ Systèmes confirmés vulnérables

  • Raspberry Pi OS Bookworm 6.12.75
  • Debian 13
  • Ubuntu 22.04 / 24.04 / 26.04
  • Arch Linux
  • CentOS 9

⚙️ Détails techniques

  • Langage : C (94.7%), Makefile (5.3%)
  • Fichiers clés : sshkeysign_pwn.c, chage_pwn.c, exploit_vuln_target.c, vuln_target.c
  • Fiabilité : succès en 100 à 2000 tentatives de spawn
  • Commit : 5655487
  • Popularité : 199 étoiles, 24 forks au moment de la publication

📌 Type d’article

Il s’agit d’une publication de PoC technique accompagnée d’une analyse de la vulnérabilité, visant à documenter et démontrer l’exploitabilité de la faille sur des systèmes Linux non patchés.

🧠 TTPs et IOCs détectés

TTP

  • T1068 — Exploitation for Privilege Escalation (Privilege Escalation)
  • T1552.004 — Unsecured Credentials: Private Keys (Credential Access)
  • T1003.008 — OS Credential Dumping: /etc/passwd and /etc/shadow (Credential Access)
  • T1083 — File and Directory Discovery (Discovery)

IOC

  • Fichiers : sshkeysign_pwn.c
  • Fichiers : chage_pwn.c
  • Fichiers : exploit_vuln_target.c
  • Fichiers : vuln_target.c
  • Fichiers : sshkeysign_pwn
  • Fichiers : chage_pwn
  • Chemins : /etc/ssh/ssh_host_ecdsa_key
  • Chemins : /etc/ssh/ssh_host_ed25519_key
  • Chemins : /etc/ssh/ssh_host_rsa_key
  • Chemins : /etc/shadow

Malware / Outils

  • ssh-keysign-pwn (tool)

🟡 Indice de vérification factuelle : 48/100 (moyenne)

  • ⬜ github.com — source non référencée (0pts)
  • ✅ 2202 chars — texte partiel (fulltext extrait) (13pts)
  • ✅ 10 IOCs (IPs/domaines/CVEs) (10pts)
  • ⬜ pas d’IOC vérifié (0pts)
  • ✅ 4 TTPs MITRE identifiées (15pts)
  • ✅ date extraite du HTML source (10pts)
  • ⬜ aucun acteur de menace nommé (0pts)
  • ⬜ pas de CVE à vérifier (0pts)

🔗 Source originale : https://github.com/0xdeadbeefnetwork/ssh-keysign-pwn