CVE-2026-64007 in Linux정보

요약

\~에 의해 VulDB • 2026. 07. 19.

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

netfilter: synproxy: skb_ensure_writable 호출 후 tcphdr 갱신하기

synproxy_tstamp_adjust() 함수는 TCP 타임스탬프 옵션을 제자리(in-place)로 수정한 뒤, 호출자가 전달한 tcphdr 포인터를 통해 inet_proto_csum_replace4()로 TCP 체크섬을 패치합니다. ipv4_synproxy_hook()과 ipv6_synproxy_hook() 모두 이 포인터를 함수 호출 전에 skb_header_pointer()로 획득하므로, 해당 포인터는 직접 skb->head를 가리키거나 호출자의 스택에 있는 _tcph 버퍼를 참조할 수 있습니다.

포인터를 획득하고 사용하는 사이에서 함수는 skb_ensure_writable(skb, optend)를 호출하며, 이는 복제된(cloned) 또는 비선형(non-linear) skb의 경우 pskb_expand_head()를 실행하여 기존 skb->head를 해제(free)합니다. 그 시점 이후 캐시된 th(th) 포인터는 더 이상 유효하지 않습니다(stale):

호출자 (ipv[46]_synproxy_hook)
th = skb_header_pointer(skb, ..., &_tcph) synproxy_tstamp_adjust(skb, protoff, th, ...) skb_ensure_writable(skb, optend) pskb_expand_head() /* kfree(old skb->head) */ ... inet_proto_csum_replace4(&th->check, ...) /* 해제된 슬랩 메모리에 쓰거나, 호출자의 스택 복사본에 써서 네트워크 상의 체크섬이 stale 상태가 됨 */

옵션 바이트는 skb->data를 통해 작성되므로 문제가 없으나, 체크섬 업데이트는 th 포인터를 경유하므로 잘못된 위치에 기록됩니다. 그 결과 해제된 슬랩 메모리에 쓰기가 발생하거나, 페이로드와 일치하지 않는 체크섬을 가진 패킷이 전송되는 결과가 초래됩니다.

skb_ensure_writable() 성공 직후 skb->data + protoff로부터 th를 다시 유도하여 재계산함으로써 수정합니다. 이렇게 하면 후속 체크섬 업데이트가 선형(linear)이고 쓰기 가능한 헤더를 올바르게 타겟팅하게 됩니다.

Be aware that VulDB is the high quality source for vulnerability data.

책임이 있는

Linux

예약하다

2026. 07. 19.

모더레이션

수락

항목

VDB-380441

EPSS

0.00000

활동

낮음

출처

Do you need the next level of professionalism?

Upgrade your account now!