În componenta systemd-coredump, care asigură procesarea fișierelor core generate după încheierea anormală a proceselor, a fost descoperită o vulnerabilitate (CVE-2022-4415) care permite unui utilizator local fără privilegii să determine conținutul memoriei proceselor privilegiate, lansate cu flag-ul suid root. Prezența problemei în configurația implicită a fost confirmată în distribuțiile openSUSE, Arch, Debian, Fedora și SLES.
Vulnerabilitatea este cauzată de absența unei prelucrări corecte a parametrului sysctl fs.suid_dumpable în systemd-coredump, care, în cazul în care este setat la valoarea implicită 2, permite generarea de core-dumps pentru celelalte procese cu flag-ul suid. Se presupune că fișierele core scrise de kernel pentru procesele suid ar trebui să aibă permisiuni de acces care permit citirea doar utilizatorului root. Utilitarul systemd-coredump, care este invocat de kernel pentru a salva fișierele core, salvează fișierul core sub identificatorul root, dar în plus oferă acces la fișierele core pe baza ACL, permițând citirea pe baza identificatorului proprietar care a lansat inițial procesul.
Această caracteristică permite încărcarea fișierelor core fără a ține cont de faptul că programul poate schimba identificatorul utilizatorului și să ruleze cu privilegii ridicate. Atacul constă în faptul că utilizatorul poate lansa o aplicație suid și să-i trimită un semnal SIGSEGV, după care poate încărca conținutul fișierului core, care include un eșantion al memoriei procesului în timpul încheierii sale anormale.
De exemplu, utilizatorul poate lansa „/usr/bin/su” și în alt terminal poate încheia executarea acestuia cu comanda „kill -s SIGSEGV `pidof su`”, după care systemd-coredump va salva fișierul core în directorul /var/lib/systemd/coredump, setând pentru acesta un ACL care permite citirea utilizatorului curent. Deoarece utilitarul suid „su” citește în memorie conținutul /etc/shadow, atacatorul poate obține acces la informațiile despre hash-urile parolelor tuturor utilizatorilor din sistem. Utilitarul sudo nu este vulnerabil la atac, deoarece interzice generarea fișierelor core prin ulimit.
Potrivit dezvoltatorilor systemd, vulnerabilitatea apare începând cu versiunea systemd 247 (noiembrie 2020), dar, conform cercetătorului care a descoperit problema, versiunea 246 este de asemenea afectată. Vulnerabilitatea se manifestă dacă systemd este compilat cu biblioteca libacl (care este implicit în toate distribuțiile populare). Ocorectare este disponibilă momentan sub formă de patch. Puteți urmări corectările în distribuții pe următoarele pagini: Debian, Ubuntu, Gentoo, RHEL, SUSE, Fedora, Gentoo, Arch. Ca măsură temporară de protecție, se poate seta sysctl fs.suid_dumpable la valoarea 0, dezactivând transmiterea dump-urilor către handler-ul systemd-coredump.
Sursa: opennet.ro
