🇰🇷 한글 설명
CRIU는 Linux용 체크포인트/복원 도구로, 4.2.1 이전 버전에서는 대상 프로세스의 첫 번째 실행 가능한 가상 메모리 영역에 syscall;int3 시퀀스를 주입한 뒤 parasite 코드를 실행합니다. 악의적인 코드가 이 주입 지점 위에 rseq 임계 구역을 유지하면, CRIU가 프로세스를 재개할 때 커널의 restartable-sequence 중단 처리가 실행 흐름을 공격자가 제어하는 콜백으로 전환할 수 있습니다. 컨테이너 스냅샷 환경에서는 탈취된 parasite가 seccomp가 비활성화되고 AppArmor 프로파일이 완화된 상태로 실행되어 특권 CRIU 프로세스에 신뢰할 수 없는 데이터를 전달하며, 이를 통해 더 높은 권한의 코드 실행이 가능해질 수 있습니다. 이 문제는 4.2.1 버전에서 수정되었습니다.
💡 쉬운 설명
CRIU는 실행 중인 프로그램을 저장했다가 다시 살리는 도구입니다. 이 도구의 결함을 이용하면 악성 프로그램이 저장·복원 과정에서 도구의 작업을 가로채 더 높은 권한을 얻을 수 있습니다.
🇺🇸 원문 (English)
CRIU is a checkpoint and restore tool for Linux. Prior to 4.2.1, CRIU injects a syscall;int3 sequence at the start of the first executable virtual memory area and resumes the target process to execute parasite code. Malicious code in the target process can keep an rseq critical section armed over that injection point so the kernel's restartable-sequence abort redirects execution to an attacker-controlled callback when CRIU resumes the process. In container snapshot environments, the hijacked parasite runs with seccomp disabled and a relaxed AppArmor profile and supplies trusted data to the privileged CRIU process, which can enable higher-privilege code execution. This issue is fixed in version 4.2.1.
📍 영향받는 시스템
CRIU 4.2.1 이전 버전을 사용하는 Linux 시스템 및 컨테이너 스냅샷 환경
⚔️ 공격 벡터
대상 프로세스 내 악성 코드가 rseq 임계 구역을 설정해 CRIU 복원 시 실행 흐름을 공격자 콜백으로 전환하고, 특권 CRIU 프로세스에 조작된 데이터를 전달하여 권한 상승
🛡️ 대응 방법
CRIU를 4.2.1 이상 버전으로 업데이트하고 배포판의 보안 패치를 적용
🔧 검증 코드
출력된 버전이 4.2.1 미만이면 취약하며, 4.2.1 이상이면 수정된 버전입니다 (CRIU가 설치되지 않았다면 출력이 없습니다).
criu --version 2>/dev/null | head -n 1