È stata identificata una vulnerabilità (CVE-2021-27365) nel codice del sottosistema iSCSI all'interno del kernel Linux, che consente a un utente locale non privilegiato di eseguire codice a livello di kernel e ottenere privilegi di root nel sistema. È disponibile un prototipo funzionante dell'exploit per i test. La vulnerabilità è stata corretta negli aggiornamenti del kernel Linux 5.11.4, 5.10.21, 5.4.103, 4.19.179, 4.14.224, 4.9.260 e 4.4.260. Gli aggiornamenti dei pacchetti con il kernel sono disponibili per le distribuzioni Debian, Ubuntu, SUSE/openSUSE, Arch Linux e Fedora. Per RHEL, le correzioni non sono ancora state rilasciate.
Il problema è causato da un errore nella funzione iscsi_host_get_param() del modulo libiscsi, introdotto nel 2006 durante lo sviluppo del sottosistema iSCSI. A causa dell'assenza di adeguate verifiche delle dimensioni, alcuni attributi di stringa iSCSI, come hostname o username, possono superare il valore di PAGE_SIZE (4 KB). La vulnerabilità può essere sfruttata inviando messaggi Netlink da un utente non privilegiato, impostando attributi iSCSI su valori che superano PAGE_SIZE. Durante la lettura di questi attributi tramite sysfs o seqfs, viene eseguito del codice che passa gli attributi alla funzione sprintf per copiarli in un buffer le cui dimensioni sono pari a PAGE_SIZE.
L'exploit di vulnerabilità nelle distribuzioni dipende dal supporto per il caricamento automatico del modulo del kernel scsi_transport_iscsi durante il tentativo di creazione di un socket NETLINK_ISCSI. Nelle distribuzioni in cui questo modulo viene caricato automaticamente, l'attacco può essere effettuato indipendentemente dall'uso della funzionalità iSCSI. Tuttavia, per un'applicazione di exploit di successo è richiesta la registrazione di almeno un trasporto iSCSI. A sua volta, per registrare il trasporto si può utilizzare il modulo del kernel ib_iser, caricato automaticamente durante il tentativo di creazione di un socket NETLINK_RDMA da parte di un utente non privilegiato.
Il caricamento automatico dei moduli necessari per l'applicazione dell'exploit è supportato in CentOS 8, RHEL 8 e Fedora con l'installazione del pacchetto rdma-core, che è una dipendenza per alcuni pacchetti popolari e viene installato di default nelle configurazioni per workstation, sistemi server con GUI e ambienti di virtualizzazione. Tuttavia, rdma-core non viene installato utilizzando la build server che funziona solo in modalità console e durante l'installazione di un'immagine di installazione minima. Ad esempio, il pacchetto è incluso nel pacchetto base di Fedora 31 Workstation, ma non è presente in Fedora 31 Server. Debian e Ubuntu sono meno soggetti al problema poiché il pacchetto rdma-core carica i moduli del kernel necessari per l'attacco solo in presenza di hardware RDMA.

Come soluzione alternativa alla protezione, è possibile vietare il caricamento automatico del modulo libiscsi: echo "install libiscsi /bin/true" >> /etc/modprobe.d/disable-libiscsi.conf
Inoltre, nel sottosistema iSCSI sono state risolte altre due vulnerabilità meno pericolose che possono portare a perdite di dati dal kernel: CVE-2021-27363 (perdita di informazioni sul descrittore di trasporto iSCSI tramite sysfs) e CVE-2021-27364 (lettura da un'area al di fuori dei limiti del buffer). Queste vulnerabilità possono essere utilizzate per interagire tramite socket netlink con il sottosistema iSCSI senza le necessarie autorizzazioni. Ad esempio, un utente non privilegiato può connettersi a iSCSI e inviare il comando "end a session" per interrompere una sessione.
Fonte: opennet.ru
