
CVE-2021-25741 Kubernetes 취약점에 대한 익스플로잇으로, 경쟁 조건(race condition)을 통해 호스트 파일시스템을 파드에 마운트할 수 있게 하며, 배포 스크립트와 기술적 세부 정보를 포함합니다.
CVE-2021-25741 취약점을 위한 익스플로잇입니다. 이 취약점은 Node 파일시스템을 읽기-쓰기 권한으로 새 POD 내부에 마운트할 수 있게 합니다.
취약점에 대한 자세한 내용은 여기에서 확인할 수 있습니다:
https://security.googleblog.com/2021/12/exploring-container-security-storage.html
저는 이 취약점의 작성자가 아니며 단지 익스플로잇을 만들었을 뿐입니다.
익스플로잇 개발에 도움을 주신 @russtone 및 @maximusfox 님께 감사드립니다.
취약한 kubelet 버전:
run.sh를 실행하고 기다리면 됩니다 :) 익스플로잇은 경쟁 조건(race condition)에 기반하기 때문에 시간이 걸릴 수 있습니다 (제 경우 10-20분이 걸렸습니다).
chmod +x run.sh; ./run.sh

"Success" 메시지가 표시되면 POD에 연결하여 /mnt/data 디렉토리에서 Node 파일시스템을 찾을 수 있습니다.
연결하려면 다음 명령어를 사용하세요:
kubectl exec -i -t cve202125741 -c mount-container -- /bin/sh

익스플로잇은 2개의 부분으로 구성됩니다:
취약점을 악용하는 POD 구성이 포함된 YAML 파일입니다. 경쟁 조건 때문에 매번 작동하지 않으므로 루프로 실행해야 합니다.
pod.yaml을 배포하고 결과를 확인하며 필요한 경우 재배포하는 스크립트입니다.
RENAME_EXCHANGE 옵션을 사용하는 renameat2 바이너리로 다음 코드를 사용했습니다: https://gist.github.com/eatnumber1/f97ac7dad7b1f5a9721f
원한다면 직접 컴파일하여 pod.yaml에서 교체할 수 있습니다:
gcc renameat2.c -o renameat2
base64 renameat2
해결 방법:
해결 방법: