Un exploit pubblico dà accesso root sulle macchine Linux con AnyDesk 8.0.2
Alcuni ricercatori hanno pubblicato un exploit funzionante per AnyDesk su Linux che esegue comandi come root sulla macchina bersaglio, senza password e prima che qualcuno accetti la connessione. L'exploit, chiamato AnyPwn, colpisce AnyDesk 8.0.2 in esecuzione come servizio e lo raggiunge tramite la porta TCP 7070. AnyDesk ha corretto la falla a giugno nella versione 8.0.3, ma il changelog la descriveva solo come "fixed a bug that could lead to a crash" ("corretto un bug che poteva causare un arresto anomalo"), senza CVE e senza alcun avviso di sicurezza, quindi molti amministratori non avevano motivo di considerare urgente l'aggiornamento.
Cosa fa l'exploit
Il bug è stato scoperto da Rick de Jager della società di sicurezza V12, che ha pubblicato la proof of concept su GitHub l'8 ottobre. Si tratta di un heap overflow nel codice che gestisce i primi pacchetti di una sessione: AnyDesk si fida di un campo di lunghezza inviato dal lato remoto prima di verificarlo, il numero va in overflow e il programma copia i dati dell'attaccante oltre un minuscolo buffer. Su Linux il servizio AnyDesk di norma gira come root, quindi il codice eseguito in questo modo ottiene il controllo completo della macchina. Non serve alcun clic né l'approvazione della persona davanti allo schermo.
L'exploit pubblico ha dei limiti. È stato costruito per una specifica build di 8.0.2 su Linux a 64 bit, richiede una connessione diretta alla porta 7070 e non funziona sempre: quando il layout della memoria non coincide, a bloccarsi è il servizio AnyDesk. I ricercatori dicono che 8.0.1 potrebbe contenere la stessa falla, ma non hanno portato l'exploit su quella versione. AnyDesk afferma che il problema è "limited to direct connections on Linux (connections that do not go through our relays)" ("limitato alle connessioni dirette su Linux, cioè quelle che non passano dai nostri relay") e non riguarda Windows né macOS. V12, tuttavia, sostiene di aver confermato che il codice vulnerabile è raggiungibile anche attraverso i server relay di AnyDesk. Per quel percorso non ha costruito un exploit completo, quindi resta aperta la questione se le connessioni via relay siano sfruttabili.
Perché la patch è passata inosservata
I team di sicurezza di solito decidono cosa correggere per primo in base ai numeri CVE e agli avvisi dei produttori. Al 9 ottobre questa falla non aveva né l'uno né gli altri, quindi gli scanner e i pannelli di gestione delle patch che si basano sui feed CVE non avevano nulla da segnalare. Una macchina Linux su cui AnyDesk è stato aggiornato l'ultima volta prima di giugno esegue ancora una versione per cui ora esiste un exploit pubblico. Secondo V12, il produttore ha rimosso la build 8.0.2 dal proprio sito dopo che i ricercatori hanno diffuso un video dell'attacco.
Controllate le vostre macchine
- Trovate la versione: eseguite
anydesk --version. Qualsiasi versione precedente alla 8.0.3 va aggiornata. L'ultima release è la 8.1.0. - Verificate se il servizio è in ascolto:
sudo ss -ltnp | grep 7070. Una riga conanydesksignifica che la porta è aperta su quella macchina. - Aggiornate tramite il gestore di pacchetti o il repository di AnyDesk, poi riavviate il servizio con
sudo systemctl restart anydesk. - Chiudete la porta 7070 verso Internet sul firewall dell'host, sul router e in ogni security group cloud. La correzione è l'aggiornamento. Chiudere la porta è una seconda barriera finché resta aperta la questione delle connessioni via relay.
- Cercate i segnali d'allarme: arresti anomali ripetuti del servizio AnyDesk, connessioni inattese alla porta 7070 e processi avviati dal servizio AnyDesk che nessuno ha lanciato.
Un servizio di desktop remoto in ascolto su Internet aperto è un rischio anche quando è completamente aggiornato. Renderlo raggiungibile solo tramite una VPN o un'altra rete privata verso la rete dell'ufficio o di casa significa che una falla come questa non può essere colpita da Internet, ma solo da chi ha già accesso a quella rete. Lo stesso valeva per la falla SSH nei router MikroTik. La nostra guida alla configurazione di WireGuard mostra come creare un tunnel del genere sul proprio server.