È stata individuata una vulnerabilità nel codice del file system XFS (CVE-2021-4155), che consente a un utente locale non privilegiato di leggere direttamente i dati dei blocchi non utilizzati da un dispositivo a blocchi. Tutte le versioni significative del kernel Linux superiori alla 5.16 che contengono il driver XFS sono interessate da questo problema. La correzione è stata inclusa nella versione 5.16 e nei kernel aggiornati 5.15.14, 5.10.91, 5.4.171, 4.19.225, ecc. È possibile monitorare lo stato della distribuzione degli aggiornamenti che risolvono il problema nelle distribuzioni alle seguenti pagine: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch.
La vulnerabilità è causata da un comportamento errato di due ioctl specifici per XFS (XFS_IOC_ALLOCSP e XFS_IOC_FREESP), che sono l'analogo funzionale della syscall generica fallocate(). Quando si aumenta la dimensione di un file non allineato alla dimensione del blocco, gli ioctl XFS_IOC_ALLOCSP/XFS_IOC_FREESP non azzerano i byte di coda fino al successivo confine di blocco. Pertanto, su XFS con una dimensione di blocco standard di 4096 byte, un attaccante può leggere fino a 4095 byte di dati precedentemente scritti da ciascun blocco. Le aree indicate possono contenere dati di file cancellati, file deframmentati e file con blocchi deduplicati.
È possibile verificare se il sistema presenta il problema utilizzando un semplice prototipo di exploit. Se, dopo aver eseguito la sequenza di comandi proposta, riesci a leggere il testo di Shakespeare, il driver del file system è vulnerabile. Il montaggio iniziale della partizione XFS per la dimostrazione richiede privilegi di superutente.
Poiché ioctl(XFS_IOC_ALLOCSP) e ioctl(XFS_IOC_FREESP) non differiscono praticamente per funzionalità da fallocate() standard, e l'unica loro differenza è la fuga di dati, la loro presenza assomiglia a una backdoor. Nonostante la politica generale di non modificare le interfacce esistenti nel kernel, su proposta di Linus, è stata presa la decisione di rimuovere completamente questi ioctl nella prossima versione.
Fonte: opennet.ru
