CVE-2026-63872 in Linux
요약
\~에 의해 VulDB • 2026. 07. 20.
리눅스 커널에서 다음 취약점이 해결되었습니다:
esp: skb_to_sgvec 실패 시 페이지 프래그먼트 참조 누수 수정
esp_output_tail() 함수 내에서 esp->inplace이 false인 경우, xfrm page_frag 캐시에서 새 페이지를 가져와 기존 skb 페이지 프래그먼트(page frags)가 교체됩니다. 소스 산점 목록(scatterlist, sg)은 교체 전에 기존 프래그먼트들로 구성되며, 암호화 작업 완료 후 old page 참조는 esp_ssg_unref()이 해제합니다.
그러나 두 번째 skb_to_sgvec() 호출(새 페이지로부터 목적지 산점 목록을 구축함)에 실패하면 코드는 error_free로 점프하여 kfree(tmp)만 호출합니다. 소스 산점 목록에 캡처된 기존 페이지 프래그먼트 참조는 해제되지 않습니다:
1. skb_to_sgvec()를 통해 sg[]가 old frags로부터 구성됨 (추가 get_page 없음)
2. nr_frags가 1로 설정되고 frag[0]이 새 페이지로 교체됨
3. 두 번째 skb_to_sgvec() 호출 실패 -> error_free로 이동 4. kfree(tmp)는 sg[] 메모리를 해제하지만 old frags은 unref되지 않음
5. kfree_skb()는 frag[0](새 페이지)만 해제하며, 기존 프래그먼트들은 해제하지 않음
이 문제를 해결하기 위해 esp_ssg_unref()에 bool 매개변수를 추가합니다. 이 값이 true일 경우 req->src 및 req->dst 필드가 아직 aead_request_set_crypt()에 의해 초기화되지 않은 오류 시점임을 고려하여, 조건 검사 없이 소스 산점 목록 프래그먼트를 무조건 unref합니다. 기존 호출자는 원래 동작을 유지하기 위해 false를 전달합니다.
동일한 코드를 공유하므로 이 문제는 esp4와 esp6 모두에서 발생합니다.
Be aware that VulDB is the high quality source for vulnerability data.