🇰🇷 한글 설명
Linux 커널의 KVM arm64 vgic 구성 요소에서 인터럽트 선호도 변경과 LPI 비활성화 작업 간의 레이스 컨디션(Race Condition) 취약점이 발견되었습니다. 이로 인해 인터럽트가 해제된 후에도 참조를 시도하는 Use-After-Free(UAF) 오류가 발생할 수 있습니다.
💡 쉬운 설명
여러 작업이 동시에 처리되는 과정에서 시스템이 이미 삭제된 데이터를 다시 사용하려고 시도하여 오류가 발생하는 문제입니다. 이로 인해 시스템이 충돌하거나 보안 공격에 노출될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
KVM: arm64: vgic: Handle race between interrupt affinity change and LPI disabling
Hyunwoo Kim reports some really bad races should the following
situation occur:
- LPI-I is pending in vcpu-B's AP list
- vcpu-A writes to vcpu-B's RD to disable its LPIs
- vcpu-C moves I from B to C
If the last two race nicely enough, vgic_prune_ap_list() can drop
the irq and AP list locks, reacquire them, and in the interval
the irq has been freed. UAF follows.
The fix is two-fold:
- Before dropping the irq and ap_list locks, take a reference on
the irq
- Do not try to handle migration of the pending bit: there is no
expectation that this state is retained, as per the architecture
With that, we're sure that the interrupt is still around, and we
safely remove it from the AP list as it has no target at this
stage (unless another interrupt fires, but that's another story).
📍 영향받는 시스템
Linux Kernel (KVM arm64 vgic 관련 구성 요소)
⚔️ 공격 벡터
가상화 환경에서 특정 인터럽트 설정 변경 및 이동 작업을 동시에 수행하여 메모리 오류 유도
🛡️ 대응 방법
인터럽트 참조 카운팅 로직이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 취약점이 해결된 패치 버전인지 확인합니다.