Vulnerabilità remota nel kernel Linux che si verifica quando si utilizza il protocollo TIPC

È stata individuata una vulnerabilità (CVE-2022-0435) nel modulo del kernel Linux che garantisce il funzionamento del protocollo di rete TIPC (Transparent Inter-process Communication), consentendo potenzialmente l'esecuzione di codice a livello del kernel inviando una rete appositamente progettata pacchetto. Il problema riguarda solo i sistemi con il modulo kernel tipc.ko caricato e lo stack TIPC configurato, che viene generalmente utilizzato nei cluster e non è abilitato per impostazione predefinita su distribuzioni Linux non specializzate.

Si noti che quando si compila il kernel nella modalità "CONFIG_FORTIFY_SRC=y" (utilizzata in RHEL), che aggiunge ulteriori controlli dei limiti alla funzione memcpy(), l'operazione è limitata a un arresto di emergenza (il kernel va in panico). Se eseguito senza controlli aggiuntivi e se le informazioni sui tag canary utilizzati per proteggere lo stack vengono divulgate, il problema può essere sfruttato per l'esecuzione di codice remoto con diritti del kernel. I ricercatori che hanno individuato il problema sostengono che la tecnica di sfruttamento è banale e verrà resa pubblica dopo l'eliminazione diffusa della vulnerabilità nelle distribuzioni.

La vulnerabilità è causata da un overflow dello stack che si verifica durante l'elaborazione dei pacchetti, il valore del campo con il numero di nodi membri del dominio in cui supera 64. Per memorizzare i parametri del nodo nel modulo tipc.ko, un array fisso “u32 members[64 ]", ma nel processo di elaborazione di quanto specificato nel pacchetto Il numero di nodo non controlla il valore di "member_cnt", che consente di utilizzare valori maggiori di 64 per la sovrascrittura controllata dei dati nell'area di memoria successiva alla struttura "dom_bef" sullo stack.

Il bug che ha causato la vulnerabilità è stato introdotto il 15 giugno 2016 ed è stato incluso nel kernel Linux 4.8. La vulnerabilità è stata risolta nelle versioni del kernel Linux 5.16.9, 5.15.23, 5.10.100, 5.4.179, 4.19.229, 4.14.266 e 4.9.301. Nei kernel della maggior parte delle distribuzioni il problema rimane irrisolto: RHEL, Debian, Ubuntu, SUSE, Fedora, Gentoo, Arch Linux.

Il protocollo TIPC è stato originariamente sviluppato da Ericsson, progettato per organizzare la comunicazione tra processi in un cluster e viene attivato principalmente sui nodi del cluster. TIPC può funzionare sia su Ethernet che su UDP (porta di rete 6118). Quando si lavora su Ethernet l'attacco può essere effettuato dalla rete locale e quando si usa UDP dalla rete globale se la porta non è coperta da un firewall. L'attacco può essere effettuato anche da un utente locale non privilegiato dell'host. Per attivare TIPC, è necessario scaricare il modulo del kernel tipc.ko e configurare il collegamento all'interfaccia di rete utilizzando netlink o l'utilità tipc.

Fonte: opennet.ru

Aggiungi un commento