X.Org Server e XWayland: rilevate otto vulnerabilità di sicurezza

Alcune delle recenti vulnerabilità riscontrate su X.Org Server e XWayland sono molto vecchie e risalgono ai primi anni Novanta.

Otto nuove vulnerabilità di sicurezza sono state rese pubbliche nel codice di X.Org Server e coinvolgono anche XWayland. Il team di sicurezza della Trend Micro Zero Day Initiative ha scoperto una serie di problemi nel codice di X.Org Server. Alcune di queste falle di sicurezza sono molto vecchie e risalgono addirittura a X11R5, rilasciato nel lontano 1991.

La prima è CVE-2025-26594: Use-after-free of the root cursor. Il cursore di root è memorizzato nel server X come una variabile globale. Se un client riesce a liberare (eliminare) il cursore di root, il riferimento interno punterà a una memoria ormai liberata, causando un errore di tipo use-after-free (uso di memoria già deallocata). La seconda è stata tracciata come CVE-2025-26595: Buffer overflow in XkbVModMaskText(). La funzione XkbVModMaskText() alloca un buffer di dimensione fissa nello stack e vi copia i nomi dei modificatori virtuali. Tuttavia, non controlla correttamente i limiti del buffer, rischiando così un buffer overflow (overflow di buffer).

La terza è CVE-2025-26596: Heap overflow in XkbWriteKeySyms(). Il calcolo della lunghezza in XkbSizeKeySyms() non corrisponde a quello effettivamente usato in XkbWriteKeySyms(), il che può causare un buffer overflow nella memoria heap. La quarta vulnerabilità scoperta è stata CVE-2025-26597: Buffer overflow in XkbChangeTypesOfKey(). Se XkbChangeTypesOfKey() viene chiamata con 0 gruppi, ridimensiona la tabella dei simboli dei tasti a 0 ma lascia invariate le azioni. Se poi viene richiamata con un valore diverso da zero, si genera un buffer overflow a causa della dimensione errata delle azioni dei tasti.

X.Org Server: le altre vulnerabilità individuate

Tra le altre vulnerabilità risolte per X.Org Server e XWayland vi è CVE-2025-26598: Out-of-bounds write in CreatePointerBarrierClient(). La funzione GetBarrierDevice() cerca un dispositivo di puntamento tramite il suo ID e dovrebbe restituire NULL se non lo trova. Tuttavia, se nessun ID corrisponde, restituisce l’ultimo elemento della lista, rischiando un accesso fuori dai limiti della memoria. La sesta vulnerabilità è stata tracciata come CVE-2025-26599: Use of uninitialized pointer in compRedirectWindow(). In questo caso La funzione GetBarrierDevice() cerca un dispositivo di puntamento tramite il suo ID e, se non lo trova, dovrebbe restituire NULL. Tuttavia, in caso di mancata corrispondenza, restituisce l’ultimo elemento della lista, rischiando un accesso alla memoria fuori dai limiti.

Un altro difetto rilevato da Trend Micro è stato CVE-2025-26600: Use-after-free in PlayReleasedEvents(). Se un dispositivo viene rimosso mentre è ancora bloccato, gli eventi in coda per quel dispositivo restano, ma il dispositivo stesso viene liberato. Quando questi eventi vengono rielaborati, si verifica un errore di use-after-free (uso di memoria già deallocata). Infine, è stato risolta anche la vulnerabilità CVE-2025-26601: Use-after-free in SyncInitTrigger(). Quando si modifica un allarme, i valori del change mask vengono elaborati uno dopo l’altro, aggiornando i trigger e infine chiamando SyncInitTrigger(). Se un errore interrompe il processo, il nuovo oggetto di sincronizzazione non viene aggiunto, causando un use-after-free quando l’allarme si attiva.

XWayland 24.1.6 e X.Org Server 21.1.16 sono stati rilasciati per risolvere queste vulnerabilità recentemente divulgate. Maggiori dettagli su queste vulnerabilità ora pubbliche sono disponibili nell’annuncio della mailing list dedicata. Sono passati 12 anni da quando un ricercatore di sicurezza ha affermato che la sicurezza di X.Org Server è “persino peggiore di quanto sembri“. Come prova di ciò, ancora oggi continuano a emergere nuovi bug in questo codice ormai datato e poco mantenuto.

Ti consigliamo anche

Link copiato negli appunti