Third-party app으로 인해 위협받는 Kubernetes

안서현·2024년 6월 18일

본 내용은 논문 Take Over the Whole Cluster: Attacking Kubernetes via Excessive Permissions of Third-party Applications을 공부하고, 정리한 내용입니다.

Background

  • Third-party app이란?
    • Kubernetes 클러스터에서 실행되는, Kubernetes 자체의 구성 요소가 아닌 외부에서 개발된 애플리케이션
    • Third-party app 사용시, 1) Kubernetes 클러스터의 기본 기능 확장 + 2) Kubernetes 클러스터의 운영 효율성 향상의 이점을 얻을 수 있음

- Main issue

- third-paty app가 가지는 과도한 권한으로 인해 쿠버네티스에 보안적으로 취약한 부분 존재하게 됨

- 이러한 취약한 부분을 확인하기 위해 세가지 공격 모델을 제시

- 또한 이러한 부분을 해결하기 위한 방안들도 제시

취약한 부분을 확인하기 위한 세가지 공격 모델

공격 전략 1: Third-party App의 DaemonSet을 이용한 직접적 권한 탈취

  • 개요: 공격자는 Third-party App의 DaemonSet에 부여된 과도한 권한을 이용하여 클러스터 관리자 권한을 직접 획득할 수 있습니다.
  • 사례 : 공격자는 DaemonSet이 secrets 리소스에 대한 get 또는 list 권한을 가짐을 악용하여 클러스터의 민감한 정보를 직접 획득할 수 있습니다.

공격 전략 2: 동일 Third-party App의 다른 구성 요소를 이용한 간접적 권한 탈취

  • 개요: 공격자는 Third-party App의 DaemonSet의 과도한 권한을 이용해 동일 App 내의 다른 중요 구성 요소를 공격자가 제어하는 워커 노드로 이동시킨 후 권한을 간접적으로 탈취합니다.
  • 사례 : 공격자는 DaemonSet의 과도한 patch 권한을 이용하여 워커 노드에 배치된 다른 중요 구성 요소를 강제로 이동시키고, 해당 구성 요소가 갖는 secrets 접근 권한을 통해 클러스터 관리자 권한을 간접적으로 탈취합니다.

공격 전략 3: 다른 Third-party App의 구성 요소를 이용한 권한 연계 탈취

  • 개요: 공격자는 하나의 Third-party App의 DaemonSet에서 발생하는 과도한 권한을 다른 App의 중요 구성 요소에 영향을 미치게 하여 권한을 연계하여 탈취합니다.
  • 사례 : 공격자는 한 App의 DaemonSet이 nodes 자원에 대한 patch 권한을 이용하여 다른 App의 중요 구성 요소를 공격자의 제어 하에 있는 워커 노드로 강제 이동시키고, 이를 통해 클러스터 전체의 secrets을 접근하여 권한을 탈취합니다.

취약점을 해결하기 위한 방안들

권한 최소화

  • 개요: Third-party App에 꼭 필요한 최소한의 권한만을 부여하여 과도한 권한 사용을 줄입니다.

복잡한 서비스 계정 구조 사용

  • 개요: 필요에 따라 다른 권한을 가진 여러 서비스 계정을 사용하여 보안을 강화합니다.

네임스페이스별 RoleBinding 사용

  • 개요: RoleBinding을 사용하여 권한을 특정 네임스페이스 내에서만 유효하도록 제한함으로써, 클러스터 전체에 대한 권한 부여를 방지합니다.

정확한 리소스 이름 사용

  • 개요: 필요한 리소스의 정확한 이름을 명시하여 권한을 부여함으로써 과도한 접근을 방지합니다.
profile
안녕하세요!

0개의 댓글