🇰🇷 한글 설명
Linux 커널의 idpf 드라이버에서 할당된 배열의 크기를 확인하지 않고 인터럽트 벡터 레지스터 값을 채우는 취약점이 발견되었습니다. 공격자가 조작된 응답을 보내면 할당된 메모리 범위를 벗어나 데이터를 쓰는 힙 기반 버퍼 오버플로우가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터 메모리에 데이터를 담을 그릇을 준비했는데, 그릇보다 더 많은 양의 데이터를 억지로 밀어넣어 옆에 있는 다른 데이터를 망가뜨릴 수 있는 문제입니다. 이를 통해 시스템을 중단시키거나 해커가 시스템 권한을 탈취할 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
idpf: bound interrupt-vector register fill to the allocated array
idpf_get_reg_intr_vecs() fills the caller-allocated reg_vals[] array from
the VIRTCHNL2_OP_ALLOC_VECTORS reply in adapter->req_vec_chunks, bounding
its inner loop only by the per-chunk num_vectors. The array is sized
separately: idpf_intr_reg_init() allocates
kzalloc_objs(struct idpf_vec_regs, total_vecs) from
caps.num_allocated_vectors and only checks the returned count after the
fill. The sum of per-chunk num_vectors is never reconciled against
total_vecs, so a reply with a small num_allocated_vectors but chunks
summing higher writes past the end of reg_vals[].
Impact: a control plane (a PF or hypervisor device model) that returns a
VIRTCHNL2_OP_ALLOC_VECTORS reply whose per-chunk num_vectors sum exceeds
num_allocated_vectors writes struct idpf_vec_regs entries past the end of
the reg_vals kmalloc allocation (KASAN slab-out-of-bounds write).
Bound the fill loop to the array capacity passed in by the callers,
mirroring the sibling idpf_vport_get_q_reg(). The existing
num_regs < num_vecs check then rejects an undersized reply without the
out-of-bounds write happening first.
📍 영향받는 시스템
Linux kernel (idpf driver component)
⚔️ 공격 벡터
제어 평면(PF 또는 하이퍼바이저 장치 모델)이 조작된 VIRTCHNL2_OP_ALLOC_VECTORS 응답을 전송하여 발생
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 idpf 드라이버의 경계 검사 로직을 적용해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.