În managerul de feronerie (multiplexor de terminale) GNU screen, care oferă o interfață cu mai multe feronerie în consolă, au fost identificate 5 vulnerabilități. Cea mai periculoasă problemă (CVE-2025-23395) permite obținerea drepturilor de root în sistem. Corectarea este inclusă în versiunea de astăzi a screen 5.0.1.
Vulnerabilitatea CVE-2025-23395 se manifestă doar în ramura screen 5.0.0, care este livrată în Fedora Linux, Arch Linux, NetBSD, OpenBSD și Alpine. În Debian, Ubuntu, RHEL (EPEL 9), Gentoo, FreeBSD, SUSE/openSUSE și OpenWrt, ramura screen 4.x este în continuare utilizată. Exploatarea vulnerabilității este posibilă pe sistemele care instalează fișierul executabil screen cu flagul setuid root, cum ar fi în Arch Linux și NetBSD. În Fedora, utilitarul este instalat cu flagul setgid pentru a obține drepturile grupului screen, permițând crearea de socketuri în directorul sistemic /run/screen, ceea ce limitează posibilitățile de atac prin refuz de serviciu.
Vulnerabilitatea este cauzată de faptul că, atunci când este rulat cu drepturi de root, funcția logfile_reopen() se execută înainte de resetarea privilegiilor, dar procesează datele în contextul directoarelor utilizatorului non-privilegiat care a lansat screen. Este de remarcat că deschiderea inițială a logului se face cu resetarea corectă a privilegiilor, dar la reaprinderea fișierului de log, resetarea privilegiilor nu se efectuează.
Prin manipularea activării modului de jurnalizare a conținutului sesiunii, utilizatorul poate obține scrierea de date într-un fișier cu drepturi de root, deși fișierul în sine poate fi păstrat în directorul de acasă al utilizatorului. Atacul constă în ștergerea fișierului de log creat și înlocuirea acestuia cu un link simbolic care indică către orice fișier din sistem. Dacă fișierul există deja, datele vor fi adăugate în el fără a schimba proprietarul. Dacă fișierul nu există, acesta va fi creat cu drepturile 0644, cu proprietarul root și grupul ca cel al utilizatorului curent.
Algoritmul atacului, care creează fișierul /etc/profile.d/exploit.sh cu comanda „chown $USER /root”:
- Crearea unei sesiuni screen cu activarea jurnalizării $ screen -Logfile $HOME/screen.log
- Apăsarea combinației de taste Ctrl-a-H pentru activarea jurnalului.
- Ștergerea fișierului de log și înlocuirea acestuia cu un link simbolic, ceea ce va determina crearea fișierului /etc/profile.d/exploit.sh $ rm $HOME/screen.log; ln -s /etc/profile.d/exploit.sh $HOME/screen.log
- Întoarcerea în sesiunea screen și afișarea pe ecran a datelor care vor fi scrise în fișierul de log. $ echo -e "\nchown $USER /root;"
- După ce se conectează un root real la sistem, se va lansa un script în /etc/profile.d/exploit.sh care va schimba proprietarul directorului /root. $ ls -lhd /root drwxr-x— 5 user root 4.0K Dec 30 2020 .
- În mod similar, se pot crea fișiere de configurație sudo sau se pot adăuga comenzi la sfârșitul scripturilor sistemului.
Vulnerabilități mai puțin periculoase în screen:
- CVE-2025-46802 — interceptarea dispozitivului TTY în sesiuni multiple (un utilizator poate obține setări pentru dispozitivul /dev/pts/1 cu permisiuni crw-rw-rw-). Problema apare în versiunile screen 4.x și 5.x.
- CVE-2025-46803 — setarea implicită a permisiunilor 0622 pe dispozitivul PTY, permițând scrierea de către toți utilizatorii. Problema apare doar în versiunea screen 5.0.
- CVE-2025-46804 — scurgerea informațiilor despre existența fișierelor și directorilor în directoarele restricționate (atunci când se specifică un director pentru socket-uri, utilizând variabila de mediu SCREENDIR, utilitarul returnează mesaje de eroare diferite, sugerând existența fișierelor și directorilor cu acest nume). Problema apare în versiunile screen 4.x și 5.x.
- CVE-2025-46805 — stare de competiție la trimiterea semnalelor SIGCONT și SIGHUP, ducând la un refuz de serviciu. Problema apare în versiunile screen 4.x și 5.x.
- Utilizarea incorectă a funcției strncpy (înlocuirea strcpy cu strncpy fără a ține cont de diferența în procesarea caracterelor nule '\0'), ducând la terminarea neașteptată a execuției pentru comenzi special formulate. Problema apare doar în versiunea screen 5.0.
Vulnerabilitățile au fost identificate în urma unui audit al codului sursă GNU screen efectuat de echipa responsabilă cu securitatea distribuției SUSE Linux. Informațiile despre vulnerabilitate au fost trimise dezvoltatorilor screen pe 7 februarie, dar în termenul de 90 de zile, aceștia nu au reușit să pregătească corecții pentru toate vulnerabilitățile, iar angajații SUSE au fost nevoiți să dezvolte unele patch-uri pe cont propriu. Cercetătorii care au efectuat auditul consideră că actualii mentenanți ai GNU screen nu sunt suficient de familiarizați cu baza de cod a proiectului și nu pot înțelege complet problemele de securitate identificate.
Sursa: opennet.ro
