./poc/CVE-2023–26604_systemd

Premessa

systemd prima della versione 247 non blocca adeguatamente l’escalation dei privilegi locali per alcune configurazioni di “sudo”, ad esempio il sudoers file in cui può essere eseguito il comando “systemctl status”.

Nello specifico, systemd non imposta a 1 la variabile LESSSECURE e quindi altri programmi possono essere lanciati dal programma “less”. Ciò presenta un notevole rischio per la sicurezza quando si esegue systemctl da sudo, poichè less viene eseguito come root quando la dimensione del terminale è troppo piccola per mostrare l’output completo del comando.

Da quanto si può leggere questo bug affligge sia RHEL 8.x che Ubuntu 20.x in quanto questi usano systemd alla versione 245 la quale non controlla l’eUID e l’UID che, insieme alla configurazione errata in /etc/sudoers, consente l’LPE (Local Privilege Escalation).

L’attacco funziona non solo con “systemctl status”, ma anche con gli altri comandi forniti da systemd.

How to fix

Aggiornare systemd almeno alla versione 247.

A questo link si può trovare la cronistoria del fix che riporto anche qua sotto

The autopaging logic in systemd’s various tools (such as systemctl) has been updated to turn on “secure” mode in “less”(i.e. $LESSECURE=1) if execution in a “sudo” environment is detected. This disables invoking external programs from the pager, via the pipe logic. This behaviour may be overridden via the new $SYSTEMD_PAGERSECURE environment variable.

Cosa controllare

Per verificare se la vostra versione di systemd è affetta da questo bug dare il comando

systemctl --version

Non avendo a disposizione una versione di systemd affetta da bug non sono riuscito a riprodurlo ma ho trovato su internet uno screenshot che mostra la PoC

LPE in ubuntu 20.04.5 via errata configurazione su /etc/sudoers

EOF

Rispondi