보안에 중점을 둔 운영체제(OS)인 Qubes OS에서 파일 복사 기능의 오류 보고 과정에 심각한 보안 취약점(QSB-118)이 발견되었습니다. 이 취약점은 공격자가 이미 손상시킨 가상 머신(qube)을 이용해 최상위 관리 시스템(dom0)에 임의 코드를 실행하여 Qubes OS 전체를 장악할 수 있게 합니다. 이는 dom0에서 VM으로 파일을 복사하는 'qvm-copy-to-vm' 명령 사용 시, 대상 qube가 반환하는 오류 파일명에 포함된 셸 메타문자를 제대로 정제하지 않고 'system()' 함수로 실행하는 과정에서 발생합니다.
취약점 공격이 성공하려면 두 가지 조건이 모두 충족되어야 합니다. 첫째, 공격자가 특정 qube 하나를 이미 손상시킨 상태여야 합니다. 둘째, 사용자가 dom0에서 해당 손상된 qube를 대상으로 'qvm-copy-to-vm' 명령을 직접 실행해야 합니다. 이 두 조건이 만족되면, 손상된 qube는 조작된 파일명을 통해 dom0에 임의 명령을 삽입하여 시스템을 완전히 통제할 수 있게 됩니다. Qubes OS의 모든 릴리스가 이 취약점의 영향을 받으며, Qubes 4.3용 수정 패키지인 'qubes-core-dom0-linux 4.3.22'가 배포될 예정입니다. 사용자들은 별도의 추가 조치 없이 정기적인 업데이트를 통해 패치를 적용할 수 있습니다.
이번 취약점은 Qubes OS의 핵심 보안 철학인 '강력한 격리'에 대한 의문을 제기합니다. Qubes OS는 각 애플리케이션과 데이터를 독립적인 가상 머신(qube)에 격리하여 하나의 qube가 손상되더라도 다른 qube나 dom0에 영향을 미치지 않도록 설계되었습니다. 그러나 이번 취약점은 이미 손상된 qube가 dom0를 공격할 수 있다는 점에서 이러한 격리 모델의 한계를 보여줍니다. 특히, 신뢰할 수 없는 사용자 입력을 'system()' 함수로 직접 실행하는 것은 C 언어 보안의 기본적인 원칙을 위반한 것으로, 코드 검토 단계에서 걸러졌어야 할 문제라는 지적이 나오고 있습니다.
이 사건은 아무리 보안에 특화된 시스템이라 할지라도 소프트웨어 개발 과정에서 기본적인 보안 원칙을 소홀히 할 경우 치명적인 취약점이 발생할 수 있음을 다시 한번 상기시킵니다. Qubes OS 사용자들은 보안 공지(QSB)의 PGP 서명을 검증하여 공지의 진위를 확인하고, 항상 최신 업데이트를 유지하는 것이 중요합니다. 또한, 이번 사례는 개발자들이 'system()'과 같이 셸 명령을 직접 실행하는 함수 사용에 있어 더욱 신중해야 하며, 사용자 입력에 대한 철저한 검증과 정제가 필수적임을 보여줍니다.