보안 연구 기관 PWN 리서치의 폴로스 이벨로가 이끄는 팀이 파이어크래커 마이크로VM의 보안 경계를 돌파한 상세한 기술적 분석을 공개했습니다. 이번 발견은 파이어크래커 버전 1.16.1을 사용하는 환경에서 악성 게스트가 호스트 머신의 루트 권한으로 임의 코드를 실행할 수 있음을 실증한 사례입니다.
공격의 핵심은 가상 CPU 스레드가 KVM_RUN 시스템 호출에 막혀 있는 순간을 노리는 것이었습니다. 이 시점에 호스트 커널은 사용자 공간 레지스터 상태를 pt_regs 구조체에 저장합니다. 연구팀은 게스트 내부에서 호스트 물리 메모리에 접근할 수 있는 원시적 기능을 확보한 뒤, 확장 페이지 테이블을 탐색해 게스트 페이지와 호스트 페이지 간의 매핑 관계를 역추적했습니다.
이 과정을 통해 연구팀은 ASLR이 적용된 상태에서도 파이어크래커 바이너리의 위치를 특정할 수 있었습니다. 이후 해당 프로세스 내에서 실행 가능한 코드 영역을 찾아내고, 차단된 vCPU 스레드의 저장된 RIP와 RSP 레지스터 값을 공격자가 원하는 주소로 덮어썼습니다.
트리거 메커니즘으로는 직렬 포트 쓰기 작업이 활용되었습니다. 게스트가 직렬 포트로 데이터를 전송하면 vCPU 스레드가 KVM_RUN에서 복귀하게 됩니다. 이때 커널은 변조된 레지스터 값을 복원하며, 파이어크래커 프로세스는 공격자가 선택한 함수를 자신의 권한으로 실행하게 됩니다.
주목할 점은 공격 성공 후에도 VM 자체가 정상적으로 유지되었다는 사실입니다. SSH 연결도 살아있었으며, 파이어크래커 프로세스는 계속 동작했습니다. 이는 단순한 서비스 거부 공격이 아닌, 완전한 제어권 탈취가 가능함을 의미합니다.
다만 이번 데모에는 중요한 제약 조건이 따릅니다. 사용된 설정에는 ‘jailer’가 포함되어 있지 않았습니다. jailer는 네임스페이스 격리와 seccomp 필터링을 통해 프로세스의 권한과 자원 접근을 제한하는 파이어크래커의 기본 보안 구성 요소입니다.
연구팀은 jailer가 활성화된 프로덕션 환경에서는 공격의 영향 범위가 크게 줄어들 수 있다고 명시했습니다. 하지만 이러한 격리 장치가 실제로 어떤 수준의 보호 효과를 제공하는지에 대한 별도의 평가는 이번 보고서에서 다루지 않았습니다.
기술 커뮤니티에서는 이 취약점이 파이어크래커 자체의 결함인지, 아니면 이를 유발한 리눅스 커널 네트워크 스택의 버그인지에 대한 논의가 이어지고 있습니다. 일부 전문가들은 근본 원인이 커널 네트워크 코드에 있으며, 파이어크래커는 단순히 그 영향을 받은 대상이라고 지적하기도 했습니다.
현재까지 확인된 정보로는 CVE-2026-99999로 추적되는 이 공격 체인이 jailer 없이 구성된 파이어크래커 인스턴스에서 호스트 루트 권한 획득을 가능하게 한다는 점입니다. 격리 환경에서의 방어력 검증은 향후 추가적인 분석이 필요한 부분으로 남아 있습니다.
