CVE-2026-98432 in Linux정보

요약

\~에 의해 VulDB • 2026. 10. 15.

Linux 커널에서 다음 취약점이 해결되었습니다:

ipv4: RCU grace period 이후 inet_opt 및 ireq_opt 해제

tcp_v4_syn_recv_sock()는 복사하지 않고 ireq->ireq_opt의 소유권을 자식 소켓(newinet->inet_opt)으로 이전합니다.

다른 CPU가 동일한 요청 소켓에 대한 재전송된 SYN을 동시에 처리하고 tcp_check_req()에서 SYNACK를 전송할 수 있습니다. tcp_v4_send_synack() 및 inet_csk_route_req()는 rcu_read_lock() 하에서만 ireq->ireq_opt을 읽으며, ip_build_and_send_pkt() 및 ip_options_build()에서는 opt->optlen을 두 번 읽습니다.

SYNACK 타이머 자체에는 문제가 없습니다: 이 타이머는 요청 소켓에 대한 참조를 유지하며, inet_csk_reqsk_queue_drop()은 자식이 해제되기 전에 timer_delete_sync()를 호출합니다.

commit 079096f103fa("tcp/dccp: install syn_recv requests into ehash table") 이후로 요청 소켓이 리스너 잠금을 보유하지 않고 처리되므로, SYNACK가 여전히 구축되는 동안 자식 소켓이 해제될 것을 방지하는 것이 없습니다. TCP 자식 소켓에는 SOCK_RCU_FREE가 없으며, inet_sock_destruct()는 plain kfree()를 사용하여 inet_opt를 해제하므로 ip_options_build()에서 use-after-free가 발생합니다.

요청 소켓 마이그레이션(net.ipv4.tcp_migrate_req=1 또는 BPF_SK_REUSEPORT_SELECT_OR_MIGRATE 프로그램)과 유사한 문제가 존재합니다. reqsk_timer_handler()는 inet_reqsk_clone()을 사용하여 요청 소켓을 복제하므로, 기존 요청 소켓과 그 클론은 동일한 ireq_opt를 공유하며, 이후 reqsk_migrate_reset()이 기존 쪽의 포인터를 지웁니다. 기존 요청 소켓에 대한 참조를 보유한 다른 CPU가 여전히 이러한 옵션(예: SYNACK 전송 또는 tcp_v4_syn_recv_sock()에서 자식 생성)을 사용하고 있는 동안 클론이 해제되면, tcp_v4_reqsk_destructor() 또한 plain kfree()를 사용합니다.

리더들은 이미 RCU를 사용하며, inet_opt를 대체하는 다른 경로(do_ip_setsockopt(), cipso_v4_sock_setattr() 등...)는 이미 kfree_rcu()를 사용하고 있습니다. inet_sock_destruct() 및 tcp_v4_reqsk_destructor()에서도 kfree_rcu()를 사용합니다.

IPv6은 첫 번째 문제의 영향을 받지 않습니다. 이는 tcp_v6_syn_recv_sock()가 옵션을 복제하기 때문입니다. tcp_v6_reqsk_destructor()에는 ipv6_opt와 관련된 동일한 마이그레이션 문제가 존재하는데, 이 값은 CALIPSO에 의해서만 설정됩니다. 이에 대한 해결책은 별도의 패치에서 다룰 예정입니다.

Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.

책임이 있는

Linux

예약하다

2026. 09. 25.

모더레이션

수락

항목

VDB-420618

EPSS

0.00000

활동

중간

출처

Want to stay up to date on a daily basis?

Enable the mail alert feature now!