From virtio-snd 0-Day to Hypervisor Escape: Exploiting QEMU with an Uncontrolled Heap Overflow
QEMU의 virtio-snd 장치에서 발견된 힙 오버플로우 취약점을 이용하여, 제어할 수 없는 바이트로 발생하는 오버플로우를 glibc 2.43의 새로운 할당자 동작과 QEMU 특유의 힙 스프레이 기법으로 신뢰성 높은 게스트-호스트 탈출 공격으로 전환하였습니다.
취약점은 guest가 조작 가능한 버퍼 크기 계산에서 발생하는 정수 언더플로우, 버퍼 크기와 읽기 제한 간 불일치, 그리고 경계 검사 누락으로 인한 임의 길이 OOB 쓰기입니다.
공격자는 virtio-9p 장치의 확장 속성(xattr) 할당을 활용해 힙 레이아웃을 정밀하게 조작하고, tcache freelist를 조작하여 오버플로우가 유용한 크기 필드 변조로 이어지도록 하였습니다.
이를 통해 임의 읽기/쓰기 원시 프리미티브를 확보하고, QEMU 내부 함수 포인터를 system 함수 주소로 덮어쓰는 방식으로 원격 코드 실행에 성공하였습니다.
이번 연구는 제한적이고 제어 불가능한 힙 오버플로우도 적절한 힙 조작과 최신 glibc 할당자 특성을 활용하면 강력한 원격 탈출 공격으로 발전할 수 있음을 보여줍니다.
