포닝 쿠버네티스

Feb 02 2023
작성자: Yu Pengfei, Mah Chia Hui 소개 지난 10년 동안 Kubernetes의 폭발적인 사용량 증가는 엄청난 광경이었습니다. 그러나 Rome은 하루아침에 구축되지 않았으며 오늘날 사용되는 다른 모든 주요 기술 스택과 마찬가지로 Kubernetes가 현재 단계에서 최고의 표현으로 제시되기 전에 컨테이너화 기술이 성숙하는 데 수십 년이 걸렸습니다.

작사: Yu Pengfei , Mah Chia Hui

소개

지난 10년 동안 Kubernetes의 폭발적인 사용량 증가는 엄청난 광경이었습니다. 그러나 Rome은 하루아침에 구축되지 않았으며 오늘날 사용되는 다른 모든 주요 기술 스택과 마찬가지로 Kubernetes가 현재 단계에서 최고의 표현으로 제시되기 전에 컨테이너화 기술이 성숙하는 데 수십 년이 걸렸습니다.

더 많은 애플리케이션이 컨테이너화됨에 따라 Kubernetes와 같은 오케스트레이션 엔진이 매우 대중화되었습니다. 오케스트레이션 엔진인 Kubernetes는 컨테이너화된 애플리케이션을 관리, 확장 및 배포하는 데 도움이 됩니다. 즉, 수많은 오케스트레이션 엔진(예: Docker Swarm)이 있습니다. 그렇다면 Kubernetes가 여전히 인기 있는 이유는 무엇입니까? 쿠버네티스는 기능이 풍부하고 자가 치유 및 자동 크기 조정과 같은 기능으로 가득 차 있습니다. 또한 Kubernetes는 대부분의 CSP(클라우드 서비스 제공업체)에서 관리형 서비스로 구현됩니다. 이는 오케스트레이션 엔진의 "Gold standard"로서의 위치를 ​​확고히 합니다. Kubernetes 채택은 여전히 ​​증가하고 있으며 조직의 96%가 Kubernetes를 사용하거나 평가하고 있습니다. (https://thenewstack.io/is-kubernetes-adoption-slowing/)

모'허니모'문제

쿠버네티스가 널리 사용됨에 따라 공격자가 적극적으로 스니핑하고 악용하려는 중요한 공격 표면이기도 합니다. 새로운 경향으로 인해 개발자는 구현, 구성 또는 배포에서 실수를 범합니다.

이 기사는 Kubernetes 보안에 관한 시리즈의 첫 번째 기사입니다. 몇 가지 일반적인 공격에 대한 개요와 Kubernetes의 기본 보안 모범 사례를 제공합니다. 후속 기사에서는 HostPath 마운팅, 트램폴린 포드/노드 등과 같은 보다 복잡한 공격과 그 해결 방법에 대해 자세히 설명합니다.

공격을 이해하려면 먼저 Kubernetes 아키텍처를 이해해야 합니다. 아래의 상위 수준 다이어그램이 좋은 출발점입니다. 쿠버네티스 아키텍처와 기본 사항에 이미 익숙하다면 "공격 방법론"으로 건너뛰어도 됩니다.

Kubernetes 아키텍처 다이어그램

포드

Kubernetes는 많은 움직이는 부분으로 구성되며 가장 낮은 작업 단위는 POD 로 알려져 있습니다 . Pod는 여러 다른 컨테이너와 스토리지 볼륨을 호스팅할 수 있습니다. 각 포드에는 고유한 IP 주소도 있습니다. 또한 배포 청사진(yaml 파일)을 기반으로 하므로 확장성이 뛰어납니다.

노드

모두를 위해 간단하게 하기 위해 노드 유형을 다음과 같이 분류합니다.

● 작업자 노드

● 마스터노드

노드 집합이 클러스터를 형성합니다.

작업자 노드:

포드는 가상 또는 물리적 머신일 수 있는 이러한 작업자 노드에 상주합니다. 포드의 호스트 머신으로 생각할 수 있습니다.

마스터 노드:

마스터 노드는 전체 클러스터의 궁극적인 관리자입니다. Kube-API 서버, Kube-Controller-Manager, Kube 스케줄러 등의 구성 요소를 포함하는 모든 작업자 노드를 제어하고 관리합니다.

네임스페이스

Kubernetes 네임스페이스는 클러스터 내에서 리소스를 격리하는 격리 메커니즘으로, 일반적으로 여러 팀이 동일한 클러스터에서 작업할 때 사용됩니다. 사이버 보안 맥락에서 각 네임스페이스 개체/리소스는 네임스페이스에 고유합니다. 이러한 개체/리소스는 해당 네임스페이스 내에서 격리되므로 개체/리소스의 교차 네임스페이스 호출은 불가능합니다.

이제 이 모든 새로운 지식을 통해 Kubernetes 환경에 대한 근본적인 이해가 있어야 합니다. 쿠버네티스를 어떻게 공격할까요?

공격 방법론

정교한 공격자의 방법론은 세 단계로 나눌 수 있습니다.

1단계: 초기 발판

초기 기반을 확보하는 기본 방법은 클러스터에서 호스팅되는 웹 애플리케이션 또는 마이크로 서비스를 손상시키는 것입니다. 공격자의 목표는 응용 프로그램을 열거하고 악용 가능한 취약점(예: log4shell, apache struts)을 식별하여 응용 프로그램에서 원격 코드 실행을 확보하는 것입니다.

2단계: 권한 에스컬레이션

쿠버네티스 클러스터에 발판을 마련하면 공격자는 설명한 바와 같이 단순히 도커 컨테이너인 포드 내부에 있게 됩니다. 공격자는 컨테이너에서 중요한 데이터를 스니핑할 수 있지만 사용 가능한 데이터로 제한됩니다. . 따라서 공격자는 더 많은 권한이 있는 포드 또는 노드로 에스컬레이션하려고 합니다.

다음은 공격자가 사용하는 몇 가지 일반적인 기술입니다.

  • 민감한 파일

개선:

Pod에서 중요한 자격 증명을 암호화되지 않은 상태로 두지 않는 표준 관행 외에도 Kubernetes 관리자는 서비스 계정 토큰에 권한을 제공할 때 최소 권한 원칙을 준수해야 합니다.

  • 접근 가능한 애플리케이션

개선:

특정 Kubernetes 리소스에 도달할 수 있는 포드, 네임스페이스 또는 외부 서버를 관리하기 위해 Kubernetes 관리자는 Kubernetes 네트워크 정책 리소스 를 사용할 수 있습니다 .

  • 클라우드 메타데이터 서비스

개선:

쿠버네티스 관리자는 앞서 언급한 쿠버네티스 네트워크 정책 리소스를 활용 하여 공격자가 핵심 비즈니스 기능에 필요하지 않은 클러스터 내에서 호스팅되는 클라우드 메타데이터 API 및 기타 애플리케이션에 접근하지 못하도록 할 수 있습니다.

  • 포드 브레이크아웃

개선:

Kubernetes 관리자는 정의된 규칙 집합에 따라 Kubernetes 클러스터에서 생성되는 모든 리소스의 유효성을 검사하는 Kubernetes 리소스인 허용 컨트롤러 리소스를 활용할 수 있습니다. 정의된 규칙 집합을 준수하지 않는 리소스는 생성되지 않아 오류가 발생합니다.

3단계: 왕관 보석 얻기

Kubernetes 생태계에서 왕관 보석은 마스터 노드를 나타냅니다. 마스터 노드에 대한 전체 액세스 권한을 얻은 공격자는 기본적으로 Kubernetes 클러스터를 완전히 제어할 수 있습니다. 공격자는 1단계와 2단계에 자세히 설명된 기술을 반복하여 감염된 포드에서 기본 노드로 측면 이동한 다음 마지막으로 마스터 노드로 이동합니다. 이러한 최악의 시나리오가 발생하지 않도록 하려면 Kubernetes 관리자는 위에서 언급한 일부 수정 사항을 사용하여 클러스터가 안전하게 구성되었는지 확인해야 합니다.

그게 다야?

조직의 Kubernetes 보안 태세를 보다 포괄적으로 살펴보려면 Microsoft의 Kubernetes 공격 매트릭스를 활용하는 것이 좋습니다. 매트릭스는 Kubernetes 보안과 관련된 주요 전술로 구성됩니다. 각각에는 공격자가 다른 목표를 달성하기 위해 사용할 수 있는 몇 가지 기술이 포함되어 있습니다.

결론

더 많은 조직이 Kubernetes를 컨테이너 오케스트레이션 관리를 위한 사실상의 도구로 채택함에 따라 보다 민감한 데이터가 Kubernetes 클러스터에 저장될 것입니다. 클러스터를 안전하게 구성하기 위해 클러스터를 설정하려는 시스템 관리자가 훨씬 더 필요합니다. 쿠버네티스 클러스터의 마스터 노드에 대한 전체 액세스 권한을 가진 공격자는 CISO가 마지막으로 보고 싶어하는 것입니다.

오늘날 현장에서 흔히 볼 수 있는 보다 심층적이고 구체적인 공격을 공유할 예정인 기사를 주목하십시오.

FLIPPETY-FLIP에서 조심하고 잡으세요.