Sono stati pubblicati aggiornamenti correttivi per X.Org Server 21.1.12 e il componente DDX (Device-Dependent X) xwayland 23.2.5, che consente l'esecuzione di X.Org Server per gestire applicazioni X11 in ambienti basati su Wayland. Nella nuova versione di X.Org Server sono state risolte 4 vulnerabilità. Una di queste vulnerabilità può essere sfruttata per un' escalation di privilegi nei sistemi in cui il server X gira con diritti di root, oltre che per l'esecuzione remota di codice in configurazioni in cui viene utilizzato il forwarding della sessione X11 tramite SSH.
Le altre tre vulnerabilità possono causare la fuga di contenuti dalla memoria сервера o provocare arresti anomali. Queste tre vulnerabilità vengono sfruttate attraverso l'uso di un diverso ordine dei byte sul lato client rispetto a server. Pertanto, nella nuova versione è stata proposta la possibilità di bloccare le connessioni dai client provenienti da sistemi con un diverso ordine dei byte. Per disattivare questa opzione, è possibile utilizzare il parametro di configurazione "AllowByteSwappedClients" o l'opzione da riga di comando "+byteswappedclients".
Modificare il valore predefinito permette di proteggersi da vulnerabilità che potrebbero non essere state ancora rilevate, che manomettendo l'ordine dei byte possono portare a interpretazioni e letture errate o a scritture in memoria di dimensioni maggiori rispetto a quelle del buffer allocato.
Attualmente rimane supportata la connessione a client con un diverso ordine dei byte, anche se, nella pratica, l'uso della conversione dell'ordine dei byte è raro, poiché le workstation su cui gira il server X sono generalmente equipaggiate con processori a ordine dei byte little-endian (dal byte meno significativo a quello più significativo), e il collegamento a questi client X con ordine dei byte big-endian, come la piattaforma s390x (IBM zSystems), è estremamente raro.
Problemi identificati:
- CVE-2024-31080, CVE-2024-31081, CVE-2024-31082 — lettura di dati da al di fuori del buffer tramite la manipolazione delle funzioni ProcXIGetSelectedEvents, ProcXIPassiveGrabDevice e ProcAppleDRICreatePixmap, che utilizzano un campo di dimensioni senza tener conto dell'ordine dei byte nel valore passato dal client. Di conseguenza, in caso di differenze nell'ordine dei byte tra client e server, queste funzioni restituiscono al client più dati. I primi due problemi si manifestano a partire dalla versione xorg-server-1.7.0 (2009), mentre il terzo dalla xorg-server-1.15.0 (2012).
- CVE-2024-31083 — accesso alla memoria già liberata (User-after-free) nella funzione ProcRenderAddGlyphs, che chiama la funzione AllocateGlyph() per salvare nuovi glifi forniti dal client. La funzione AllocateGlyph() restituisce un nuovo glifo con un contatore di riferimenti zero (refcount=0), e la riassegnazione del glifo non provoca un incremento del contatore di riferimenti, motivo per cui l'array glyph_new può includere più voci che puntano a un glifo senza contatore di riferimenti. Quando la funzione ProcRenderAddGlyphs() libera la memoria allocata per il glifo, un'ulteriore istanza del puntatore al glifo già liberato rimane nell'array e potrebbe essere utilizzata. Il problema si manifesta in X.Org Server e non colpisce xwayland.
Fonte: opennet.ru
