OpenShift - SCC bypass
이 페이지의 원 저자는 Guillaume
특권 네임스페이스
기본적으로 SCC는 다음 프로젝트에 적용되지 않습니다:
default
kube-system
kube-public
openshift-node
openshift-infra
openshift
이러한 네임스페이스 중 하나에 파드를 배포하면 SCC가 적용되지 않아 특권이 있는 파드를 배포하거나 호스트 파일 시스템을 마운트할 수 있습니다.
네임스페이스 레이블
RedHat 문서에 따르면 파드에서 SCC 적용을 비활성화하는 방법이 있습니다. 다음 권한 중 하나 이상이 있어야 합니다:
네임스페이스 생성 및 해당 네임스페이스에 파드 생성
네임스페이스 편집 및 해당 네임스페이스에 파드 생성
특정 레이블 openshift.io/run-level
은 사용자가 응용 프로그램의 SCC를 우회할 수 있도록 합니다. RedHat 문서에 따르면, 이 레이블을 사용하면 해당 네임스페이스 내의 모든 팟에 대해 SCC가 적용되지 않으므로 제한 사항이 제거됩니다.
레이블 추가
네임스페이스에 레이블을 추가하려면:
다음은 YAML 파일을 통해 레이블이 지정된 네임스페이스를 생성하는 방법입니다:
지금, 네임스페이스에 생성된 모든 새로운 파드는 어떤 SCC도 가지지 않아야 합니다
SCC가 없으면 파드 정의에 제한이 없습니다. 이는 악의적인 파드가 호스트 시스템으로 쉽게 이탈될 수 있다는 것을 의미합니다.
이제 호스트 시스템에 액세스 권한을 승격하여 전체 클러스터를 인수하고 'cluster-admin' 권한을 얻는 것이 더 쉬워졌습니다. 다음 페이지에서 Node-Post Exploitation 부분을 찾아보세요 :
Attacking Kubernetes from inside a Pod사용자 정의 레이블
또한 대상 설정에 따라 이전 공격 시나리오와 동일한 방식으로 일부 사용자 정의 레이블 / 주석이 사용될 수 있습니다. 레이블이 특정 리소스에 대한 권한을 부여하거나 제한하거나 제한하지 않도록 사용될 수 있습니다.
일부 리소스를 읽을 수 있다면 사용자 정의 레이블을 찾아보세요. 여기에 흥미로운 리소스 목록이 있습니다 :
Pod
Deployment
Namespace
Service
Route
모든 특권 있는 네임스페이스 나열
고급 exploit
OpenShift에서는 이전에 시연한 대로 openshift.io/run-level
레이블이 있는 네임스페이스에 pod를 배포할 수 있는 권한이 있다면 클러스터를 쉽게 탈취할 수 있습니다. 클러스터 설정 관점에서 이 기능은 OpenShift의 설계에 내재되어 있기 때문에 비활성화할 수 없습니다.
그러나 Open Policy Agent GateKeeper와 같은 완화 조치를 통해 사용자가 이 레이블을 설정하는 것을 방지할 수 있습니다.
GateKeeper의 규칙을 우회하고 이 레이블을 설정하여 클러스터 탈취를 실행하려면 공격자는 대안적인 방법을 식별해야 합니다.
참고 자료
Last updated