In Netfilter, il sottosistema del kernel Linux utilizzato per filtrare e modificare i pacchetti di rete, è stata identificata una vulnerabilità (CVE-2022-25636) che consente di eseguire codice a livello di kernel. È stata segnalata la preparazione di un esempio di exploit che permette a un utente locale di elevare i propri privilegi su Ubuntu 21.10 con il meccanismo di protezione KASLR disabilitato. Il problema si manifesta a partire dal kernel 5.4. Una correzione è attualmente disponibile sotto forma di patch (le versioni corrette del kernel non sono state ancora rilasciate). È possibile seguire la pubblicazione degli aggiornamenti dei pacchetti nelle distribuzioni a queste pagine: Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux.
La vulnerabilità è causata da un errore nel calcolo della dimensione dell'array flow->rule->action.entries nella funzione nft_fwd_dup_netdev_offload (definita nel file net/netfilter/nf_dup_netdev.c), che può portare alla scrittura di dati controllati dall'attaccante nell'area di memoria al di fuori del buffer allocato. L'errore si verifica quando si configurano le regole "dup" e "fwd" nelle catene, per le quali viene applicato l'accelerazione hardware dell'elaborazione dei pacchetti (offload). Poiché il buffer overflow si verifica in una fase precedente alla creazione della regola del filtro dei pacchetti e alla verifica del supporto per l'offload, la vulnerabilità è applicabile anche a dispositivi di rete che non supportano l'accelerazione hardware, come l'interfaccia loopback.
Si segnala che il problema è piuttosto semplice da sfruttare, poiché i valori che escono dal buffer possono sovrascrivere il puntatore alla struttura net_device, e i dati sul valore sovrascritto vengono restituiti allo spazio utente, il che consente di conoscere gli indirizzi in memoria necessari per eseguire l'attacco. Per sfruttare la vulnerabilità è necessaria la creazione di determinate regole in nftables, il che è possibile solo in presenza dei privilegi CAP_NET_ADMIN, che possono essere ottenuti da un utente non privilegiato in uno spazio di nomi di rete (network namespaces) separato. La vulnerabilità può essere utilizzata anche per attacchi sui sistemi di isolamento dei container.
Fonte: opennet.ru
