
CVE-2017-1002101 분석 및 샘플 "exploit"/escape
이 문제에 대해 듣고 이 가이드를 따라가면서, 좀 더 탐구해보고 싶었습니다. 이 리포지토리는 몇 가지 파드 배포와 헬퍼 셸 스크립트를 포함하여, 쿠버네티스 관리자와 운영자가 심각성과 잠재적 위험을 완전히 이해할 수 있도록 공격 메커니즘을 가장 간단한 방식으로 보여줍니다. 인증된 사용자이거나 파드의 스펙/템플릿을 생성 시 제어할 수 있어야 하므로, 이 탈출은 다른 공격(예: 이것)과 결합하지 않으면 익명으로 이루어지지 않을 가능성이 높습니다.
Kubelet이 볼륨/시크릿/컨피그맵 등을 마운트할 때, 볼륨 내부의 심볼릭 링크를 잘못 따라가서 원래 범위를 벗어난 위치에 접근합니다. Kubelet이 루트로 실행되기 때문에, 비특권 파드의 컨테이너 내부에 호스트 파일 시스템의 특권 부분을 마운트하도록 속일 수 있습니다.
제 접근 방식은 두 개의 "일반" 컨테이너가 있는 단일 파드를 사용하는 것이었습니다. 하나의 컨테이너는 / 또는 /home/ubuntu로의 심볼릭 링크를 생성하고, 다른 컨테이너는 성공할 때까지 크래시루프를 반복하여(볼륨을 다시 마운트하고 해당 심볼릭 링크 경로를 따르도록 강제) 사용자가 두 번째 컨테이너에 exec로 들어가 마운트 지점에 접근할 수 있게 합니다.
참고: 이 예제들은 Ubuntu 16.04 호스트에서 수정 없이 작동하지만, 다른 설정에 맞게 쉽게 조정할 수 있습니다.
./run-as-root.sh를 실행하세요../run-as-root-no-chroot.sh 또는 ./run-as-user-1000.sh를 실행하세요.정말로 "반드시 패치해야 하는" 상황입니다. 불행히도 여기에 나열된 해결 방법은 대부분의 사람들에게 실용적이지 않습니다. 거의 모든 이전 버전이 취약합니다.