Vulnerabilità che consente di inserire sequenze di escape nei terminali altrui

Nell'utilità wall, fornita nel pacchetto util-linux e destinata all'invio di messaggi ai terminali, è stata identificata una vulnerabilità (CVE-2024-28085) che consente di attaccare i terminali di altri utenti manipolando le sequenze di escape. Il problema è causato dal fatto che l'utilità wall blocca l'uso delle sequenze di escape nel flusso di input, ma non esegue questa operazione per gli argomenti nella riga di comando, permettendo all'attaccante di eseguire sequenze di escape nel terminale di altri utenti.

Ad esempio, eseguendo ‘wall $(printf «\033[33mHI»)’ è possibile visualizzare la scritta «HI» in giallo. Utilizzando sequenze di escape, che consentono di spostare il cursore, pulire e sostituire il contenuto sullo schermo, è possibile simulare la visualizzazione di un prompt per l'inserimento della password da parte dello strumento sudo nel terminale di un altro utente. Se l'utente non si accorge dell'inganno e inserisce la propria password, questa verrà registrata nella cronologia degli input come se fosse un comando inesistente (in sostanza, l'utente invece del comando inserirà la propria password nella riga di comando). «\033[3A» // spostiamo il cursore verso l'alto di 3 righe «\033[K» // rimuoviamo l'output precedente «[sudo] password for a_user:» // visualizziamo un falso prompt sudo «\033[?25l» // impostiamo il colore di sfondo per nascondere l'input «\033[38;2;48;10;36m»

Durante la visualizzazione di un avviso che indica che il comando inserito non è stato trovato, in molte distribuzioni viene avviato il gestore /usr/lib/command-not-found, che cerca di determinare il pacchetto in cui è presente il comando mancante e fornisce un suggerimento per la sua installazione. Il problema è che quando viene avviato il gestore command-not-found, il comando inesistente viene passato a questo come parametro della riga di comando, visibile durante la visualizzazione dei processi nel sistema (ad esempio, quando si tenta di avviare l'utilità non installata 'xsnow', nella lista dei processi sarà visibile '/usr/lib/command-not-found -- xsnow'). Di conseguenza, un attaccante potrebbe organizzare un monitoraggio dei processi avviati (analizzando l'emergere di '/proc/$pid/cmdline' per il numero di PID previsto) e determinare la password inserita dalla vittima nella riga di comando.

Per far sì che l'utente inserisca la password in risposta a un invito fittizio di sudo, viene suggerito un trucco che consiste nel monitorare nell'elenco dei processi l'effettivo avvio dell'utilità sudo, attendere il suo completamento e attuare l'attacco tramite 'wall' subito dopo. Attraverso manipolazioni con sequenze di escape, l'attaccante può sostituire il messaggio dopo l'esecuzione reale di sudo con un invito fittizio per l'inserimento della password. La vittima potrebbe pensare di aver sbagliato l'inserimento e digitare di nuovo la password, rivelando così la password tra gli argomenti del gestore 'command-not-found'.

Per un attacco riuscito è necessario impostare la modalità 'mesg' su 'y', che per impostazione predefinita è attivata in Ubuntu, Debian e CentOS/RHEL. La possibilità di condurre l'attacco è stata dimostrata su Ubuntu 22.04 nella configurazione predefinita utilizzando gnome-terminal. In Debian, l'attacco è complicato, poiché nel sistema operativo non è incluso di default il gestore 'command-not-found', mentre in CentOS/RHEL l'attacco non funzionerà, poiché l'utilità wall è installata senza il flag setgid e non ha accesso ai terminali di altri utenti. Utilizzando windows-terminal, l'attacco può essere modificato per cambiare il contenuto degli appunti.

La vulnerabilità è presente nel pacchetto util-linux dal 2013, dopo che nella versione 2.24 è stata aggiunta la possibilità di specificare un messaggio nella riga di comando del wall, ma è stata trascurata la pulizia delle sequenze di escape. La correzione della vulnerabilità è stata inclusa nell'uscita di ieri di util-linux 2.40. È interessante notare che durante il tentativo di correggere la vulnerabilità nella versione util-linux 2.39 è stata scoperta un'altra vulnerabilità simile, che consente di effettuare la sostituzione dei caratteri di controllo manipolando le impostazioni locali.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster