CVE-2026-97476 in Linuxinformazioni

Riassunto

di VulDB • 24/09/2026

Nel kernel Linux, è stata risolta la seguente vulnerabilità:

rds: filtrare le opzioni getsockopt RDS_INFO_* in base alla netns del chiamante

La famiglia di opzioni getsockopt(2) RDS_INFO_* legge diverse liste globali a livello di file che non sono specifiche per netns (network namespace):

rds_sock_info / rds6_sock_info, rds_sock_inc_info / rds6_sock_inc_info -> rds_sock_list rds_tcp_tc_info / rds6_tcp_tc_info -> rds_tcp_tc_list rds_conn_info / rds6_conn_info, rds_conn_message_info_cmn (per le varianti *_SEND_MESSAGES e *_RETRANS_MESSAGES), rds_for_each_conn_info (per RDS_INFO_IB_CONNECTIONS) -> rds_conn_hash[]

I gestori non filtrano in base alla network namespace del chiamante. rds_info_getsockopt() non effettua controlli su netns o capable(), e rds_create() non effettua alcun controllo capability, quindi AF_RDS è raggiungibile da uno user namespace non privilegiato. Di conseguenza, un chiamante non privilegiato in una fresh user_ns più netns può leggere l'indirizzo binded e lo inode del sock di ogni socket RDS sull'host, l'indirizzo peer dei messaggi in arrivo su ogni socket RDS sull'host, gli indirizzi peer e i numeri di sequenza TCP di ogni connessione rds-tcp sull'host, nonché gli indirizzi peer e i numeri di sequenza RDS di ogni connessione RDS sull'host.

Il trasporto rds-tcp è raggiungibile da una netns non iniziale (vedere rds_set_transport()), quindi un gate init_net one-shot in rds_info_getsockopt() negherebbe la visibilità per-netns legittima ai chiamanti rds-tcp. Invece, filtrare ogni gestore confrontando la netns del socket del chiamante con la netns della voce dell'elenco, o con rds_conn_net(conn) per i percorsi di connessione. Copiare solo le voci la cui netns corrisponde a quella del chiamante. I contatori (RDS_INFO_COUNTERS) sono statistiche aggregate e rimangono globali.

Reproducer (VM KASAN, moduli rds e rds_tcp caricati): un socket AF_RDS effettua il bind su 127.0.0.1:4242 in init_net come root. Un processo figlio entra in una fresh user_ns più netns ed apre AF_RDS lì, quindi chiama getsockopt(SOL_RDS, RDS_INFO_SOCKETS). Prima di questa modifica, il figlio vede il socket di init_net. Dopo la modifica, il figlio non visualizza alcuna voce (zero entries).

Rimuovere le variabili globali rds_sock_count, rds_tcp_tc_count e rds6_tcp_tc_count. La v2 le utilizzava per il precontrollo della dimensione e per lens->nr; la v3 ha sostituito il precontrollo con un conteggio per-ns ottenuto da una prima passata sull'elenco, quindi le variabili globali non hanno più lettori rimanenti. I corrispondenti incrementi e decrementi in rds_create()/rds_destroy_sock() e rds_tcp_set_callbacks()/rds_tcp_restore_callbacks() vengono rimossi insieme a esse. Segnalato dal kernel test robot sotto clang W=1.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsabile

Linux

Prenotare

24/09/2026

Divulgazione

24/09/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00000

KEV

no

Attività

molto basso

Fonti

Do you want to use VulDB in your project?

Use the official API to access entries easily!