CVE-2026-93105 in Linux
요약
\~에 의해 VulDB • 2026. 09. 18.
Linux 커널에서 다음 취약점이 해결되었습니다:
esp: esp_ssg_unref()에서 관리되는 frag 페이지의 ref를 해제하지 않음
esp_ssg_unref()은 AEAD 연산이 완료된 후 소스 scatterlist에 대해 보유 중인 페이지 참조(page references)를 해제합니다. 이는 out-of-place transform(req->src != req->dst)의 경우 모든 frag 페이지에 대해 skb_page_unref()을 호출하며, 요청 자체의 scatterlist에 대한 esp_output_tail()의 오류 경로(already_unref == true)에서도 동일하게 수행됩니다.
하지만 skb가 관리되는 frags(SKBFL_MANAGED_FRAG_REFS)를 포함하는 경우에는 이러한 동작이 잘못되었습니다. 관리되는 frags는 zerocopy ubuf에 의해 소유되며, skb는 frag별 페이지 참조(per-frag page reference)를 보유하지 않습니다. io_uring SEND_ZC는 등록된 버퍼와 함께 io_sg_from_iter()를 통해 bvec 페이지를 이와 같은 방식으로 연결합니다. 스택의 나머지 부분은 이 불변 조건(invariant)을 준수합니다: SKBFL_MANAGED_FRAG_REFS가 설정된 경우 skb_release_data()는 per-frag unref를 건너뛰며, 다른 unref 사이트에서는 skb_zcopy_managed()가 가드(guard)로 사용됩니다.
esp_ssg_unref()에는 해당 가드가 누락되어 있어, 관리되는 frag을 가진 skb의 경우에 대해 skb가 결코 획득하지 않은 페이지 참조(page reference)를 해제하게 됩니다. 이로 인해 페이지 참조 카운트가 언더플로우(underflow)하여 여전히 사용 중인 페이지가 해제(free)될 수 있습니다.
skb_release_data()와 일치하도록 함수에 skb_zcopy_managed() 가드를 추가하여, 관리되는 frag을 가진 skbs의 경우 두 가지 unref 경로 모두를 건너뛰도록 합니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.