# ssh-keysign-pwn (CVE-2026-46333): una cursa a ptrace deixa llegir claus SSH i /etc/shadow

- **Publicat el:** 2026-05-15
- **Categoria:** Seguretat
- **Pàgina original:** https://linuxgratis.com/ca/articles/cve-2026-46333-ptrace-exit-race-ssh-keysign-pwn-kernel-linux

Un error de lògica al subsistema ptrace del kernel Linux permet a un usuari local sense privilegis robar les claus de host SSH i els hash de contrasenyes. Hi és des del 2016 i ja hi ha pedaços per a Debian, Ubuntu, Fedora, SUSE, AlmaLinux i CloudLinux.

---

Un usuari local sense privilegis no hauria de poder llegir les claus privades del host SSH ni `/etc/shadow`. CVE-2026-46333, batejat **ssh-keysign-pwn**, obre exactament aquesta porta a través d'una cursa al subsistema `ptrace` del kernel Linux. Qualys el va reportar a l'equip de seguretat del kernel l'11 de maig de 2026, el pedaç es va integrar el 14 de maig i NVD va publicar l'entrada el 15 amb un CVSS de 7.1 (vector `AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N`).

## On és l'error

El problema viu a `__ptrace_may_access()` i la lògica de `get_dumpable()`. Quan un procés acaba, el kernel separa primer el seu descriptor de memòria (`mm`) i només després tanca la seva taula de descriptors de fitxer. Entre aquests dos moments hi ha una finestra molt curta en què `mm` ja és `NULL`, i la comprovació d'accés de `ptrace` se salta la seva salvaguarda de "dumpable" precisament perquè no troba cap mapa de memòria associat.

Aquí entra `pidfd_getfd(2)`, la interfície introduïda a Linux 5.6 que permet clonar un descriptor obert d'un altre procés. Durant aquesta finestra, un procés sense privilegis pot cridar `pidfd_getfd(2)` contra un binari SUID que estigui sortint i copiar-se els seus descriptors ja oberts. El blanc són binaris SUID que obren fitxers propietat de root a la seva ruta normal d'execució: sobretot `ssh-keysign` (que llegeix les claus privades del host SSH) i `chage` (que llegeix la base de dades de contrasenyes en ombra).

L'error no és nou. És al codi de mainline des del novembre de 2016 i arrenca d'una proposta de pedaç de Jann Horn que mai es va arribar a fusionar. Qualys va desenvolupar quatre exploits funcionals: contra `chage`, `ssh-keysign`, `pkexec` i `accounts-daemon`.

## A qui afecta i amb quina gravetat

Qualsevol sistema amb un kernel que inclogui `pidfd_getfd()` (Linux 5.6 i posteriors) i la lògica vulnerable de `ptrace`. La llista de distribucions amb avís publicat inclou Debian 13, Ubuntu 24.04 i 26.04, Fedora 43 i 44, SUSE, AlmaLinux i CloudLinux.

No és execució remota ni dona root directe, i per això es queda en CVSS 7.1 en lloc de pujar més. Però llegir les claus de host SSH i els hash de `/etc/shadow` és greu de debò: amb la clau privada del host pots suplantar el servidor en atacs man-in-the-middle, i amb els hash de contrasenyes pots intentar trencar-les sense pressa fora de la màquina. En entorns multiusuari, hosting compartit o servidors amb comptes de poca confiança, el risc és directe.

## Com mitigar-ho

El correcte és actualitzar el kernel a la versió amb pedaç que publiqui la teva distribució i reiniciar. Els avisos de Debian, Ubuntu, Fedora, SUSE, AlmaLinux i CloudLinux ja estaven disponibles a mitjans de maig de 2026.

Si has d'esperar el pedaç, hi ha una mitigació interina sòlida: puja `kernel.yama.ptrace_scope` a `2`, que limita l'attach de `ptrace` només a administradors. Això bloqueja els exploits públics, perquè la seva ruta via `pidfd_getfd(2)` passa per `__ptrace_may_access()`.

```bash
sysctl -w kernel.yama.ptrace_scope=2
```

Per fer-ho persistent, afegeix `kernel.yama.ptrace_scope = 2` a `/etc/sysctl.d/`. Tingues en compte que això pot afectar depuradors i eines que necessitin `ptrace` entre processos del mateix usuari, així que prova-ho abans en producció.

És un altre recordatori que l'escalada local continua sent terreny fèrtil al kernel. Si vols veure casos semblants, fes una ullada a [Copy Fail (CVE-2026-31431)](/ca/articles/cve-2026-31431-copy-fail-algif-aead-privesc-root-kernel-linux), una altra escalada a root al mòdul crypto del kernel. I per seguir les versions del kernel i els seus pedaços, tens la fitxa de [Linux kernel](/ca/linux-kernel).

## Font

- [NVD - CVE-2026-46333](https://nvd.nist.gov/vuln/detail/CVE-2026-46333)
- [Qualys Threat Research - CVE-2026-46333](https://blog.qualys.com/vulnerabilities-threat-research/2026/05/20/cve-2026-46333-local-root-privilege-escalation-and-credential-disclosure-in-the-linux-kernel-ptrace-path)
