Qubes OS의 copy-to-VM 오류 보고 백채널을 통한 임의 코드 실행

2 weeks ago 23

이미 손상된 qube를 대상으로 dom0에서 qvm-copy-to-vm 파일 복사를 시작하면, 공격자가 파일명에 명령을 삽입해 dom0을 장악할 수 있는 QSB-118 취약점이 공개됨 대상 qube가 반환한 오류 파일명에서 비ASCII 문자와 큰따옴표만 제거하고 셸 메타문자는 남긴 채 system()으로 대화상자 명령을 실행하는 것이 원인임 모든 Qubes OS 릴리스가 영향받지만, VM 내부에서 실행하는 qvm-copy-to-vm은 system() 대신 execlp()를 사용하므로 영향받지 않음 Qubes 4.3용 수정 패키지는 dom0의 qubes-core-dom0-linux 4.3.22이며, 보안 테스트를 거쳐 안정 저장소에 들어오면 일반 업데이트로 설치할 수 있음 별도 대응은 필요 없지만 정상 업데이트를 계속해야 하며, 공지의 진위는 Qubes Master Signing Key를 독립적인 경로로 인증한 뒤 PGP 서명을 검증해야 확신할 수 있음 공격 조건과 영향 QSB-118은 qvm-copy-to-vm의 오류 보고 과정에서 발생하는 dom0 임의 코드 실행 취약점을 다룸 공격이 성립하려면 다음 조건이 모두 충족돼야 함 공격자가 qube 하나를 이미 손상시킨 상태여야 함 사용자가 dom0에서 해당 qube를 대상으로 qvm-copy-to-vm을 직접 실행해야 함 두 조건이 충족되면 손상된 qube가 dom0에 임의 명령을 삽입해 Qubes OS 전체를 장악할 수 있음 취약한 오류 보고 경로 qvm-copy-to-vm은 dom0의 파일을 지정된 qube로 복사하며, tar나 cpio보다 단순한 아카이브 형식인 qfile 프로토콜을 사용함 전송이 끝나면 대상 qube가 소스로 다음 확인 응답을 보냄 전송된 모든 파일의 체크섬 오류 코드 마지막으로 받은 파일의 이름 오류 코드가 있으면 dom0는 대상 qube가 반환한 파일명과 오류 정보를 포함한 GUI 메시지를 표시함 불충분한 파일명 정제와 명령 실행 wait_for_result()는 원격 파일명을 오류 처리기로 넘기기 전에 sanitize_remote_filename()을 호출함 이 함수는 비ASCII 문자와 큰따옴표만 밑줄로 바꾸고 셸 메타문자는 그대로 둠 이어서 call_error_handler()가 dom0용 gui_fatal()과 display_error()를 호출함 display_error()는 파일명이 들어간 kdialog 또는 zenity 명령...

Read Entire Article