Vulnerabilità nel sottosistema iSCSI del kernel Linux che consente di elevare i propri privilegi

È stata scoperta una vulnerabilità nel codice del sottosistema iSCSI incluso nel kernel di Linux (CVE-2021-27365), 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 il testing. La vulnerabilità è stata corretta negli aggiornamenti del kernel di 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 del kernel sono disponibili nelle 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 della mancanza di adeguati controlli sulle dimensioni, alcuni attributi stringa di iSCSI, come hostname o username, possono superare il valore di PAGE_SIZE (4 KB). La vulnerabilità può essere sfruttata tramite l'invio di messaggi Netlink da parte di un utente non privilegiato, che impostano gli attributi iSCSI a valori superiori a PAGE_SIZE. Durante la lettura di questi attributi attraverso sysfs o seqfs, viene eseguito il codice che passa gli attributi alla funzione sprintf per copiare in un buffer di dimensione PAGE_SIZE.

Lo sfruttamento della vulnerabilità nelle distribuzioni dipende dal supporto per il caricamento automatico del modulo kernel scsi_transport_iscsi quando si tenta di creare un socket NETLINK_ISCSI. Nelle distribuzioni in cui questo modulo viene caricato automaticamente, l'attacco può essere eseguito indipendentemente dall'uso della funzionalità iSCSI. Affinché l'exploit abbia successo, è inoltre necessaria la registrazione di almeno un trasporto iSCSI. A sua volta, per registrare un trasporto si può utilizzare il modulo kernel ib_iser, caricato automaticamente quando un utente non privilegiato tenta di creare un socket NETLINK_RDMA.

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 per impostazione predefinita nelle configurazioni per workstation, sistemi server con GUI e ambienti di virtualizzazione. Tuttavia, rdma-core non viene installato quando si utilizza una build server che funziona solo in modalità console e quando viene installata un'immagine di installazione minimale. Ad esempio, il pacchetto è incluso nella fornitura di 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.

Vulnerabilità nel sottosistema iSCSI del kernel Linux che consente di elevare i propri privilegi

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 eliminate altre due vulnerabilità meno critiche, che potrebbero portare a una fuga di dati dal kernel: CVE-2021-27363 (fuga di informazioni sul descrittore di trasporto iSCSI attraverso sysfs) e CVE-2021-27364 (lettura da area oltre i confini del buffer). Le vulnerabilità indicate possono essere sfruttate per interagire tramite socket netlink con il sottosistema iSCSI senza le necessarie privilegi. Ad esempio, un utente non privilegiato può collegarsi a iSCSI e inviare il comando "end a session" per interrompere la sessione.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster