보안 연구팀이 파이어크래커(Firecracker) 가상 머신(VM)에서 호스트(host) 시스템의 루트(root) 권한을 탈취하는 정교한 공격 기법인 'PwnEscape 2부'를 시연했습니다. 이 공격은 게스트(guest) VM 내부에서 이미 확보된 호스트 메모리 접근 수단을 이용해, 호스트의 파이어크래커 스레드를 장악하고 궁극적으로 호스트 시스템의 루트 권한으로 임의 코드를 실행하는 데 성공했습니다. 이는 클라우드 컴퓨팅 환경에서 경량 가상화 기술의 보안 취약점을 보여주는 중요한 사례입니다.
공격의 핵심은 KVM_RUN 복귀 시점을 노리는 것입니다. 파이어크래커는 각 vCPU에 호스트 프로세스의 스레드를 할당하고, 이 스레드는 KVM_RUN 시스템 호출을 통해 게스트를 실행합니다. 게스트에서 사용자 공간으로 복귀할 때, 호스트 커널의 pt_regs에 사용자 공간 레지스터가 저장되는데, 공격자는 이 저장 프레임을 찾아 명령어 포인터와 스택 포인터를 변경합니다. 이를 통해 Firecracker가 지정된 함수와 인자로 실행을 이어가도록 조작할 수 있습니다. 연구팀은 게스트 페이지의 식별 패턴을 시작점으로 EPT(Extended Page Tables)와 호스트 페이지 테이블을 추적하여 Firecracker의 주소 공간, ASLR(Address Space Layout Randomization) 적용 위치, 그리고 활성 vCPU의 저장 레지스터를 찾아냈습니다. 실험은 jailer 없이 루트 권한으로 실행된 Firecracker v1.16.1 환경에서 진행되었으며, Firecracker의 표준 오류에 식별 문자열을 출력하는 방식으로 공격 성공을 입증했습니다.
이번 연구는 파이어크래커와 같은 경량 가상화 기술이 완벽하게 격리되지 않으면 심각한 보안 위협에 노출될 수 있음을 보여줍니다. 특히 클라우드 서비스 제공업체들이 서버리스(serverless) 함수나 컨테이너(container) 격리를 위해 파이어크래커를 널리 사용하는 만큼, 이번 공격은 다중 테넌트(multi-tenant) 환경에서 한 사용자의 VM이 다른 사용자의 데이터나 호스트 시스템 전체에 접근할 수 있는 잠재적 위험을 의미합니다. 비록 이번 시연이 jailer와 같은 추가적인 보안 격리 기능이 없는 환경에서 이루어졌지만, 프로덕션 환경에서도 권한 축소, 네임스페이스, seccomp 등의 격리 설정이 이러한 유형의 공격에 얼마나 효과적인지 추가적인 평가가 필요하다는 점을 시사합니다. 클라우드 보안 강화와 가상화 기술의 취약점 개선을 위한 지속적인 연구와 대응책 마련이 필수적입니다.