
CVE-2024-3094 sshd 백도어 인스턴스를 실행하는 컨테이너 환경으로, https://github.com/amlweems/xzbot 프로젝트와 함께 작동합니다. Docker가 아니라 chroot로 구현되었습니다.
CVE-2024-3094 sshd 백도어 인스턴스를 실행하는 환경으로, 다음 익스플로잇과 함께 동작합니다: https://github.com/amlweems/xzbot.
이것은 Docker 컨테이너가 아닙니다. 이 취약점 환경을 docker로 구성하려고 시도했지만 실패했습니다:
systemd와 관련이 있을 것이라고 의심했습니다. docker 내부에서 시도한 모든 방법은 systemd가 아닌 cmdline에서 SSHD를 실행했기 때문입니다.
후속 조치로 다음 실험을 테스트했습니다: xzbot으로 sshd(systemd)가 성공적으로 익스플로잇된 VM 머신에서 liblzma.so를 교체한 상태로 /sbin/sshd -D -e -p 2024를 직접 실행했고, xzbot 익스플로잇이 실패했습니다. 이는 systemd와 높은 관련이 있음을 시사합니다.
docker 내부에서 systemd로 sshd를 실행하는 것이 약간 복잡해서 docker를 포기했습니다.
마지막으로 VM에서 최소화된 파일 시스템을 추출하여 chroot 기반의 미니 컨테이너로 만들었고, systemd로 호스트 네임스페이스에서 쉽게 실행할 수 있습니다.
제 VM 환경과 다른 환경 모두에서 동작하여 xzbot 익스플로잇을 성공시킵니다.
원리는 아직 파악하지 못했지만, 어쨌든 연구를 위해 이 프로젝트에 환경을 정리했습니다.
이 프로젝트의 루트 디렉터리에서 ./compose.sh 실행.
이 프로젝트의 루트 디렉터리에서 ./remove.sh 실행.
./xzbot -addr 127.0.0.1:2024 -cmd 'whoami > /hello' 실행. 익스플로잇이 성공하면 env_fs 아래에 hello라는 이름의 파일이 생성된 것을 확인할 수 있습니다.
https://github.com/amlweems/xzbot 는 훌륭한 도구를 제공하며, 자체 공개키로 liblzma.so를 패치하여 접근 가능하게 만듭니다. 자세한 내용은 xzbot 프로젝트를 참조하세요.
우리의 미니 파일 시스템에는 xzbot의 기본 패치된 lzma so 파일이 포함되어 있습니다. 그리고 xzbot 실행 바이너리가 여기서 정적으로 컴파일되었습니다. 테스트를 위해 ./xzbot -addr 127.0.0.1:2024 -cmd 'whoami > /hello'를 실행하면 됩니다.
systemd xzback.service 파일이 호스트의 /etc/systemd/system/에 동적으로 배포됩니다.
그리고 xzback.service는 우리의 미니 파일 시스템으로 chroot하여 시작되며, 호스트 파일 시스템에는 더 이상 영향을 주지 않습니다.