CVE-2025-68670: Vulnerabilità RCE pre-auth nel server xrdp tramite campo domain
Analisi tecnica di CVE-2025-68670: un overflow nel buffer del domain name in xrdp consente l'esecuzione di codice remoto pre-autenticazione.
Contenuto

Kaspersky ha pubblicato l'analisi tecnica dettagliata riguardante CVE-2025-68670, una vulnerabilità critica di tipo Remote Code Execution (RCE) che colpisce il server open source xrdp. Il difetto risiede nella gestione dei pacchetti iniziali di connessione e permette a un attaccante non autenticato di eseguire codice arbitrario sul sistema target. La scoperta è avvenuta durante un audit di sicurezza condotto dai ricercatori di Kaspersky sul prodotto Kaspersky USB Redirector.
La vulnerabilità trasforma un elemento apparentemente innocuo del protocollo RDP, ovvero il nome del dominio, in un vettore d'attacco diretto. Sfruttando una discrepanza tra le dimensioni del buffer allocato e i limiti di copia definiti nel codice, un utente malevolo può causare uno stack buffer overflow. Poiché l'errore si verifica nelle prime fasi della comunicazione, l'intero attacco può essere portato a termine prima che al client vengano richieste le credenziali di accesso.
- La vulnerabilità CVE-2025-68670 è causata da uno stack buffer overflow nella funzione
xrdp_wm_parse_domain_informationdel server xrdp. - Un buffer di 256 byte denominato
resultIPviene sovrascritto da una copia che ammette fino a 512 byte di dati. - Il vettore d'attacco è un domain name UTF-8 appositamente configurato all'interno di una richiesta di connessione RDP.
- L'esecuzione di codice può avvenire in modalità pre-autenticazione, rendendo superfluo il possesso di account validi sul sistema vulnerabile.
- Le patch sono disponibili nelle versioni di xrdp 0.10.5, 0.9.27 e 0.10.4.1, correggendo la logica di parsing del dominio.
L'analisi dell'overflow nel buffer resultIP
Il cuore tecnico della vulnerabilità CVE-2025-68670 risiede nel modo in cui xrdp interpreta le informazioni sul dominio inviate dal client. Durante la fase di inizializzazione della sessione, il server richiama la funzione xrdp_wm_parse_domain_information per estrarre e processare il nome del dominio. In questa sezione del codice, viene dichiarato un buffer nello stack chiamato resultIP, la cui dimensione è fissata a 256 byte.
L'errore critico di programmazione emerge nell'uso della funzione di copia g_strncpy. I ricercatori hanno osservato che il server è configurato per accettare e copiare nel buffer fino a 512 byte di dati provenienti dal campo domain name. Poiché 512 byte superano significativamente i 256 byte allocati per resultIP, l'operazione di copia scrive oltre i limiti del buffer, invadendo lo spazio destinato ad altre variabili nello stack del thread.
Questa sovrascrittura non controllata ha conseguenze dirette sulla stabilità e sulla sicurezza del processo. I dati in eccesso possono modificare i puntatori di memoria e, come evidenziato dall'analisi tecnica, potenzialmente alterare il return address del thread. Se un attaccante riesce a controllare il valore del return address, può deviare il flusso di esecuzione verso istruzioni arbitrarie, ottenendo il controllo del sistema operativo sottostante con i privilegi del processo xrdp.
La complessità dell'attacco è legata alla gestione delle codifiche dei caratteri. Il protocollo RDP trasmette solitamente il nome del dominio in formato UTF-16, che viene successivamente convertito dal server in UTF-8. Un attaccante può costruire una stringa che, a seguito della conversione, si espande fino a saturare e superare i 256 byte del buffer, utilizzando delimitatori specifici come l'underscore singolo '_' e il doppio underscore '__' per guidare il parsing malevolo.
Il bufferresultIPmisura 256 byte, ma la funzioneg_strncpypermette di scriverne fino a 512, creando un potenziale overflow di 256 byte direttamente nello stack.
Perché la vulnerabilità è sfruttabile senza credenziali
Uno degli aspetti più allarmanti di CVE-2025-68670 è la sua natura pre-autenticazione. Nel flusso di esecuzione di xrdp, la funzione vulnerabile xrdp_wm_parse_domain_information viene invocata molto presto, durante la gestione dei parametri di setup della connessione. Kaspersky ha documentato il call stack dimostrando che questo ramo di codice viene eseguito prima che il server richieda o verifichi l'identità dell'utente (username e password).
Questa collocazione architettonica rimuove la necessità di attacchi di forza bruta o di furto di credenziali. Un utente malintenzionato deve semplicemente inviare un pacchetto di connessione RDP con un campo domain appositamente istruito. Il server, tentando di elaborare questa informazione per preparare l'ambiente di login, innesca involontariamente l'overflow prima ancora di aver stabilito se il client è autorizzato ad accedere alle risorse.
Per confermare la gravità del problema, i ricercatori hanno sviluppato un Proof-of-Concept (PoC) basato su un file .rdp modificato. Durante i test, l'invio di questo file a un server vulnerabile ha causato un crash immediato. L'analisi tramite debugger (gdb) ha rivelato che il sistema ha tentato di terminare il processo a causa della corruzione dello stack, confermando che i dati inviati dall'attaccante avevano effettivamente raggiunto e sovrascritto le aree di memoria sensibili.
Il ruolo dei compilatori e della protezione stack canary
La possibilità di trasformare questo overflow in una esecuzione di codice affidabile dipende fortemente dalle protezioni attive a livello di compilazione. Kaspersky sottolinea che la maggior parte dei compilatori moderni abilita di default la protezione nota come "stack canary". Questa tecnologia inserisce un valore casuale (il canary) tra il buffer e il return address; se il canary viene modificato da un overflow, il sistema rileva l'intrusione e interrompe il programma.
Nelle prove effettuate, il PoC ha attivato l'errore __stack_chk_fail (stack smashing detected), dimostrando che il canary ha impedito la sovrascrittura diretta e semplice del return address. Tuttavia, l'esistenza di questa protezione non rende la vulnerabilità irrilevante. In ambienti specifici, come sistemi embedded o distribuzioni con build personalizzate dove queste protezioni potrebbero essere disabilitate per ottimizzare le prestazioni, il rischio di RCE immediato è estremamente elevato.
Inoltre, la storia della cybersecurity insegna che la presenza di uno stack canary non è una difesa assoluta contro attaccanti determinati. Esistono tecniche avanzate per bypassare tali protezioni, specialmente quando l'attaccante ha un controllo preciso sui dati sovrascritti. La vulnerabilità CVE-2025-68670 fornisce una primitiva di overflow stabile che potrebbe essere utilizzata come parte di una catena di exploit più complessa per aggirare le difese del compilatore.
Cosa fare adesso
Data la natura pre-autenticazione della falla e la disponibilità di dettagli tecnici pubblici, è fondamentale intervenire tempestivamente per mettere in sicurezza i server xrdp esposti. Le raccomandazioni si concentrano sull'aggiornamento del software e sulla riduzione della superficie d'attacco.
- Aggiornamento immediato del pacchetto xrdp: Installare la versione 0.10.5 o superiore. I manutentori hanno rilasciato questa versione per correggere specificamente il buffer overflow.
- Applicazione dei backport: Se non è possibile passare alla versione 0.10.5, verificare che siano installate le versioni 0.9.27 o 0.10.4.1, che includono le patch di sicurezza retrocompatibili per mitigare CVE-2025-68670.
- Verifica dell'hardening del binario: Per gli amministratori che compilano xrdp dai sorgenti, è fondamentale assicurarsi che le opzioni
-fstack-protector-strongo equivalenti siano attive, per garantire che il meccanismo del canary sia presente nel binario finale. - Limitazione degli accessi di rete: Poiché la vulnerabilità è pre-auth, qualsiasi sistema in grado di raggiungere la porta TCP di xrdp (solitamente la 3389) può tentare l'exploit. Si consiglia di restringere l'accesso tramite firewall o VPN, evitando l'esposizione diretta su Internet.
In assenza di queste misure, i sistemi rimangono vulnerabili a tentativi di Denial of Service (tramite il crash del processo) o, in configurazioni meno protette, a una completa compromissione remota. Il monitoraggio dei log per tentativi di connessione che causano il riavvio del servizio xrdp può essere un indicatore di attività malevola in corso.
In conclusione, CVE-2025-68670 rappresenta un importante promemoria dei rischi legati alla gestione delle stringhe e delle codifiche in C. L'assunzione che un campo come il nome del dominio non possa causare danni ha portato a un errore di overflow classico che, oggi, minaccia la sicurezza di migliaia di server Linux che utilizzano xrdp per l'accesso remoto. La rapidità nel patchare è l'unica difesa efficace contro questo specifico vettore.
Nota editoriale: L'analisi qui riportata si basa esclusivamente sul report tecnico fornito da Kaspersky. Al momento della stesura, non sono disponibili conferme indipendenti da parte di altri vendor o ricercatori esterni sulla replicabilità del bypass del canary o su evidenze di exploitation attiva in scenari reali al di fuori dei laboratori di ricerca.
Le informazioni sono state verificate sulle fonti citate e aggiornate al momento della pubblicazione.