제퍼넷 로고

지금 패치: Kubernetes RCE 결함으로 인해 Windows 노드가 완전히 장악될 수 있습니다

시간

널리 사용되는 Kubernetes 컨테이너 관리 시스템의 보안 버그로 인해 공격자가 Windows 엔드포인트에서 시스템 권한으로 코드를 원격으로 실행할 수 있어 잠재적으로 Windows 엔드포인트 내의 모든 Windows 노드를 완전히 탈취할 수 있습니다. 쿠 버네 티스 클러스터.

Akamai 보안 연구원인 Tomer Peled는 이 결함을 발견했습니다. 이 결함은 CVE-2023-5528로 추적되며 CVSS 점수는 7.2입니다. 공격은 클러스터의 포드 간 데이터 공유를 지원하거나 포드 수명주기 외부에 지속적으로 저장하는 것을 목표로 하는 기능인 쿠버네티스 볼륨을 조작하는 데 있다고 그는 설명했습니다. 블로그 게시물에서 13월 XNUMX일 출판.

공격 벡터로서 공격자는 다음을 필요로 합니다. 포드 및 영구 볼륨 생성 결함에 대한 GitHub 목록에 따르면 Windows 노드에서 해당 노드에 대한 관리자 권한으로 에스컬레이션할 수 있습니다.

Peled는 Dark Reading에 “공격자가 Windows 엔드포인트에서 RCE를 얻으려면 매개변수를 수정하고 3개의 YAML 파일을 적용하기만 하면 되기 때문에 이 취약점을 악용하는 것은 매우 쉽습니다.”라고 말했습니다. 쿠버네티스 프레임워크 그는 게시물에 "기본적으로 모든 작업에 YAML 파일을 사용합니다"라고 썼습니다.

Kubernetes 클러스터 Windows용 트리 내 저장소 플러그인을 사용하는 경우에만 영향을 받습니다. 그러나 Peled는 게시물에서 "개발자가 사용할 수 있는 볼륨 유형이 다양하여" 다양한 공격 시나리오가 발생한다고 밝혔습니다.

온-프레미스 배포와 Azure Kubernetes Service를 모두 실행하는 버전 1.28.4 이전의 Kubernetes 기본 설치는 취약합니다. Kubernetes 팀은 결함에 대한 경고를 받았으며 교정에 사용할 수 있는 패치가 있으므로 이를 적극 권장합니다.

Peled는 "문제가 소스 코드 내에 있기 때문에 이 위협은 계속 활성화되고 악용이 증가할 가능성이 높습니다. 이것이 바로 클러스터에 Windows 노드가 없더라도 클러스터를 패치할 것을 강력히 권장하는 이유입니다"라고 말했습니다.

결점을 따라가다

Peled는 동일한 근본 원인을 공유하는 또 다른 취약점(Kubernetes의 안전하지 않은 함수 호출 및 사용자 입력 삭제 부족)을 조사한 후 이 결함을 발견했습니다. 그 결함은 CVE-2023-3676, 클러스터에 악성 YAML 파일을 적용하여 악용할 수 있는 명령 주입 취약점입니다. 이 취약점의 발견으로 인해 YAML 파일의 subPath 매개 변수가 삭제되지 않아 발생하는 다른 두 가지 취약점도 발견되었습니다. 이는 볼륨이 있는 포드를 생성하고 악성 코드 삽입 기회를 열어줍니다.

Peled는 “연구가 끝날 무렵 코드에서 또 다른 명령 주입 취약점으로 이어질 수 있는 잠재적인 위치를 발견했습니다.”라고 Peled는 설명했습니다.

“몇 번 시도한 끝에 우리는 비슷한 결과를 얻었습니다. 즉, kubelet 서비스(SYSTEM 권한)로 명령을 실행하는 것입니다.”라고 그는 썼습니다.

악용 및 패치

연구원들이 실행한 개념 증명은 Kubernetes 내의 볼륨 유형 중 하나인 로컬 볼륨에 중점을 두었습니다. 로컬 볼륨을 포함하는 포드를 생성하는 동안 kubelet 서비스는 결국 "exec.command"에 대한 cmd 라인 호출을 통해 함수에 도달하여 노드의 볼륨 위치와 포드 내부 위치 사이에 심볼릭 링크를 생성합니다.

많은 터미널과 마찬가지로 Windows의 명령 프롬프트(cmd)를 사용하면 두 개 이상의 명령을 차례로 실행할 수 있을 뿐만 아니라 동일한 명령줄에서 여러 명령을 실행할 수 있습니다. “cmd 실행에서 매개변수 중 하나를 제어할 수 있다는 사실은 명령 주입을 사용할 수 있다는 것을 의미합니다.”라고 Peled는 설명했습니다.

PermanentVolume을 지정하거나 생성해야 하는 필요성을 포함하여 로컬 볼륨에서 이를 달성하기 위한 전제 조건이 있습니다. 그러나 해당 볼륨이 생성되면 "사용자는 persistVolumeClaim을 사용하여 저장 공간을 요청할 수 있습니다"라고 그는 썼습니다. “여기가 주사를 놓을 수 있는 곳이에요.”

결함을 위해 생성된 패치는 cmd 호출을 삭제하고 이를 동일한 작업을 수행하여 심볼릭 링크를 생성하는 기본 GO 함수로 대체하여 주입 기회를 제거합니다. "이제 GO 'os' 라이브러리는 처음에 의도했던 대로 심볼릭 링크 작업만 수행합니다."라고 그는 설명했습니다.

귀하의 시스템이 취약합니까?

Kubernetes 컨테이너에 가장 널리 사용되는 오픈 소스 시스템 중 하나로 부상했습니다. 그러나 그것은 또한 되었다 주요 표적 위협 행위자에 대한 엄청난 잠재력 조직 데이터의 활용 및 접근을 위해. 또한 Kubernetes 구성 자체가 취약한 설치를 생성하여 위협 행위자에게 광범위한 공격 표면을 제공하는 경우가 많습니다.

“Kubernetes는 매우 복잡하고 강력한 도구입니다.”라고 Peled는 말합니다. “이 견고함 덕분에 사용자는 조직의 요구 사항에 맞게 경험을 맞춤화할 수 있지만, 다른 한편으로는 개발자나 사용자 관점에서 모든 측면을 보호하기가 매우 어렵습니다.”

실제로 CVE-2023-5528 및 관련 결함의 발견은 Kubernetes를 배포하는 기업에 대해 “Kubernetes 자체 및 사이드카 프로젝트의 여러 코드 영역에서 입력 삭제가 부족하기 때문에 Kubernetes 구성 YAML을 확인하는 것이 얼마나 중요한지 강조합니다.”라고 Peled는 썼습니다. .

역할 기반 액세스 제어(RBAC)와 같은 모범 사례를 따르고 클러스터를 최신 상태로 유지하는 것도 “알려진 위협의 상당 부분을 완화해야 한다”고 Dark Reading에 말했습니다.

Kubernetes를 실행하는 기업 환경은 시스템 버전이 1.28.4보다 이전이고 시스템이 Windows 노드를 실행하는 경우에만 결함 악용에 취약합니다. 이 경우 Akamai는 관리자가 시스템에 패치를 적용해야 하는지 결정하기 위해 실행할 명령을 제공했습니다. 그렇다면 패치가 우선적으로 이루어져야 합니다.  

“Kubernetes 클러스터에 Windows 노드가 없는 경우 이 특정 취약점을 패치하기 위해 서두를 필요가 없습니다.”라고 Peled는 말했습니다. "하지만 시간이 있을 때 패치하는 것이 중요합니다."

즉각적인 패치를 적용할 수 없는 경우 Akamai는 또한 제공하고있다 이러한 종류의 동작을 감지하고 차단하는 데 도움이 되는 OPA(Open Policy Agent) 규칙입니다. OPA는 사용자가 노드에 들어오고 나가는 트래픽에 대한 데이터를 수신하고 수신된 데이터에 대해 정책 기반 조치를 취할 수 있도록 하는 오픈 소스 에이전트입니다.

spot_img

최신 인텔리전스

spot_img