capabilities를 설정하는 것은 보안에 민감합니다.

 

capabilities를 설정하는 것은 권한 상승 및 컨테이너 탈출로 이어질 수 있습니다.

리눅스 capabilities는 루트 권한의 조각을 프로세스에 할당하는 것을 허용합니다. capabilities가 있는 쓰레드는 일반 커널 보안 검사를 바이패스하여 추가 루트 권한 없이 디렉터리에 장치를 마운트하는 것과 같은 높은 권한 작업을 실행합니다.

컨테이너에서 capabilities를 통해 호스트 시스템의 리소스에 액세스할 수 있으므로 컨테이너 탈출이 발생할 수 있습니다. 예를 들어 capabilities의 SYS_ADMIN이 설정되면 사용하면 공격자가 호스트 시스템에서 컨테이너 내부로 디바이스를 마운트할 수 있습니다.

다음 질문을 확인하세요

  • 모든 capabilities가 필요하지 않은 프로세스에게 capabilities가 부여되었습니다.
  • 신뢰할 수 없는 프로세스에 capabilities가 부여되었습니다.

만약 상위 질문에 해당된다면 위험이 있을 수 있습니다.

권장되는 보안 코딩 방법

capabilities는 전통적으로 슈퍼유저(루트)와 관련된 높은 권한이므로 가장 제한적이고 필요한 기능을 할당해야 합니다

민감한 코드 예시

apiVersion: v1
kind: Pod
metadata:
  name: example
spec:
  containers:
    - image: k8s.gcr.io/test-webserver
      name: test-container
      securityContext:
        capabilities:
          add: ["SYS_ADMIN"] # Sensitive

규칙을 준수한 해결책

apiVersion: v1
kind: Pod
metadata:
  name: example
spec:
  containers:
    - image: k8s.gcr.io/test-webserver
      name: test-container

같이보면 좋은 자료


If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project