Nella libreria libinput 1.20.1, che fornisce uno stack di input unificato consentendo di utilizzare gli stessi strumenti di gestione degli eventi dai dispositivi di input in ambienti basati su Wayland e X.Org, è stata rimossa una vulnerabilità (CVE-2022-1215) che permette l'esecuzione di codice arbitrario attraverso la connessione a un sistema di un dispositivo di input appositamente modificato/emulato. Il problema si manifesta in ambienti basati su X.Org e Wayland e può essere sfruttato sia tramite la connessione locale di dispositivi sia attraverso la manipolazione di dispositivi con interfaccia Bluetooth. Se il server X viene eseguito con diritti di root, la vulnerabilità consente l'esecuzione di codice con privilegi elevati.
Il problema è causato da un errore di formattazione della stringa nel codice responsabile della registrazione delle informazioni di connessione del dispositivo. In particolare, la funzione evdev_log_msg modificava la stringa di formattazione originale per il registro utilizzando la chiamata a snprintf, nella quale veniva aggiunto come prefisso il nome del dispositivo. Successivamente, la stringa modificata veniva passata alla funzione log_msg_va, che a sua volta utilizzava la funzione printf. Così, nel primo argomento di printf, al quale viene applicato l'analisi dei caratteri di formattazione, si trovavano dati esterni non verificati e un attaccante poteva innescare un danno allo stack, facendo sì che il dispositivo restituisse un nome contenente caratteri di formattazione della stringa (ad esempio, "Evil %s").
Fonte: opennet.ru
