{"id":28708,"date":"2026-09-25T04:31:37","date_gmt":"2026-09-24T20:31:37","guid":{"rendered":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97476"},"modified":"2026-09-25T04:31:37","modified_gmt":"2026-09-24T20:31:37","slug":"cve-2026-97476","status":"publish","type":"vuln","link":"https:\/\/www.54iter.cn\/?vuln=cve-2026-97476","title":{"rendered":"CVE-2026-97476 &#8211; In the Linux kernel, the following vulnerability has been resolved:\n\nrds: filter RDS_INFO_"},"content":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>rds: filter RDS_INFO_* getsockopt by caller&#8217;s netns<\/p>\n<p>The RDS_INFO_* family of getsockopt(2) options reads several<br \/>\nfile-scope global lists that are not per-netns:<\/p>\n<p>  rds_sock_info \/ rds6_sock_info,<br \/>\n  rds_sock_inc_info \/ rds6_sock_inc_info        -&gt; rds_sock_list<br \/>\n  rds_tcp_tc_info \/ rds6_tcp_tc_info            -&gt; rds_tcp_tc_list<br \/>\n  rds_conn_info \/ rds6_conn_info,<br \/>\n  rds_conn_message_info_cmn (for the *_SEND_MESSAGES and<br \/>\n  *_RETRANS_MESSAGES variants),<br \/>\n  rds_for_each_conn_info (for RDS_INFO_IB_CONNECTIONS)<br \/>\n                                                -&gt; rds_conn_hash[]<\/p>\n<p>The handlers do not filter by the caller&#8217;s network namespace.<br \/>\nrds_info_getsockopt() has no netns or capable() check, and<br \/>\nrds_create() has no capable() check, so AF_RDS is reachable from<br \/>\nan unprivileged user namespace. As a result, an unprivileged<br \/>\ncaller in a fresh user_ns plus netns can read the bound address<br \/>\nand sock inode of every RDS socket on the host, the peer address<br \/>\nof incoming messages on every RDS socket on the host, the peer<br \/>\naddress and TCP sequence numbers of every rds-tcp connection on<br \/>\nthe host, and the peer address and RDS sequence numbers of every<br \/>\nRDS connection on the host.<\/p>\n<p>The rds-tcp transport is reachable from a non-initial netns (see<br \/>\nrds_set_transport()), so a one-shot init_net gate at<br \/>\nrds_info_getsockopt() would deny legitimate per-netns visibility<br \/>\nto rds-tcp callers. Instead, filter at each handler by comparing<br \/>\nthe netns of the caller&#8217;s socket to the netns of the list entry,<br \/>\nor to rds_conn_net(conn) for connection paths. Only copy entries<br \/>\nwhose netns matches the caller. Counters (RDS_INFO_COUNTERS) are<br \/>\naggregate statistics and remain global.<\/p>\n<p>Reproducer (KASAN VM, rds and rds_tcp loaded): an AF_RDS socket<br \/>\nbinds 127.0.0.1:4242 in init_net as root. A child process enters<br \/>\na fresh user_ns plus netns and opens AF_RDS there, then calls<br \/>\ngetsockopt(SOL_RDS, RDS_INFO_SOCKETS). Before this change, the<br \/>\nchild sees the init_net socket. After this change, the child<br \/>\nsees zero entries.<\/p>\n<p>Drop the rds_sock_count, rds_tcp_tc_count, and rds6_tcp_tc_count<br \/>\nglobals. v2 used them for the size precheck and lens-&gt;nr; v3<br \/>\nreplaced the precheck with a per-ns count from a first pass over<br \/>\nthe list, so the globals have no remaining readers. The matching<br \/>\nincrements and decrements in rds_create()\/rds_destroy_sock() and<br \/>\nrds_tcp_set_callbacks()\/rds_tcp_restore_callbacks() go away with<br \/>\nthem. Reported by the kernel test robot under clang W=1.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the Linux kernel, the following vulnerability has been resolved:<\/p>\n<p>rds: filter RDS_INFO_* getsockopt by caller&#8217;s netns<\/p>\n<p>The RDS_INFO_* family of getsockopt(2) options reads several<br \/>\nfile-scope global<\/p>\n","protected":false},"template":"","meta":[],"categories":[],"tags":[],"class_list":["post-28708","vuln","type-vuln","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln\/28708","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/vuln"}],"about":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=\/wp\/v2\/types\/vuln"}],"wp:attachment":[{"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=28708"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=28708"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.54iter.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=28708"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}