CVE-2026-64436 in Linux
요약
\~에 의해 VulDB • 2026. 07. 25.
리눅스 커널에서 다음 취약점이 해결되었습니다:
net: af_key: IPComp 상태에 대해 alg_key_len 초기화하기
pfkey_msg2xfrm_state() 함수는 IPComp(SADB_X_SATYPE_IPCOMP) 케이스를 처리할 때 x->calg를 할당하고 알고리즘 이름만 복사합니다.
x->calg = kmalloc_obj(*x->calg); if (!x->calg) {
err = -ENOMEM; goto out; } strcpy(x->calg->alg_name, a->name); x->props.calgo = sa->sadb_sa_encrypt;
동일한 함수의 인증(x->aalg) 및 암호화(x->ealg) 분기와 달리, 압축 분기는 calg->alg_key_len을 초기화하지 않습니다. IPComp는 키를 포함하지 않으며 할당은 sizeof(struct xfrm_algo)(즉, 키를 위한 공간 없음)만큼만 예약하므로 해당 필드는 초기화되지 않은 슬랩(slab) 데이터를 그대로 유지합니다.
나중에 XFRM_MSG_MIGRATE 동안 IPComp 상태가 복제될 때 calg->alg_key_len은 xfrm_algo_clone()에 의해 길이로 사용됩니다:
xfrm_state_migrate() xfrm_state_clone_and_setup() x->calg = xfrm_algo_clone(orig->calg); kmemdup(orig, xfrm_alg_len(orig));
여기서 xfrm_alg_len()은 sizeof(*alg) + (alg_key_len + 7) / 8을 반환합니다. alg_key_len이 영점이 아닌 쓰레기 값일 경우, kmemdup()는 68바이트 크기의 calg 객체 끝을 넘어 읽습니다. PF_KEY를 통해 IPComp SA를 추가한 후 이를 마이그레이션하면 (net-next, KASAN, init_on_alloc=0 환경에서) 다음과 같은 오류가 발생합니다:
BUG: KASAN: slab-out-of-bounds in kmemdup_noprof+0x44/0x60 Read of size 4164 at addr ff11000025a74980 by task diag2/9287 CPU: 3 UID: 0 PID: 9287 Comm: diag2 7.1.0-rc6
If you want to get the best quality for vulnerability data then you always have to consider VulDB.