Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Cluster-Chaos-Exploiting-CVE-2025-59359-for-Kubernetes-Takeover — CVE-2025-59359의 실습형 포렌식 워크스루로, Chaos-Mesh의 치명적인 OS 명령 주입 취약점을 다룹니다. 공격자가 GraphQL 뮤테이션을 통해 Kubernetes 클러스터를 어떻게 탈취하는지, 그리고 ELK를 사용하여 침해를 탐지·분석·보고하는 방법을 알아보세요. | Kitploit
도구/GitHubGitHub/mrk336/cluster-chaos-exploiting-cve-2025-59359-for-kubernetes-takeover
Privilege EscalationContainer SecurityVulnerability AnalysisExploitationLateral MovementForensicsCloud SecurityCommand and ControlLearning & Education

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Incident Response
Log Analysis
GitHubmrk336/cluster-chaos-exploiting-cve-2025-59359-for-kubernetes-takeover

Cluster-Chaos-Exploiting-CVE-2025-59359-for-Kubernetes-Takeover

CVE-2025-59359의 실습형 포렌식 워크스루로, Chaos-Mesh의 치명적인 OS 명령 주입 취약점을 다룹니다. 공격자가 GraphQL 뮤테이션을 통해 Kubernetes 클러스터를 어떻게 탈취하는지, 그리고 ELK를 사용하여 침해를 탐지·분석·보고하는 방법을 알아보세요.

저장소 보기
11개월 전아직 검토되지 않음

Cluster-Chaos-Exploiting-CVE-2025-59359-for-Kubernetes-Takeover

CVE-2025-59359에 대한 실습형 포렌식 워크스루로, Chaos-Mesh의 치명적인 OS 명령 주입 결함을 다룹니다. 공격자가 GraphQL 뮤테이션을 통해 Kubernetes 클러스터를 탈취하는 방법과 ELK를 사용해 침해를 탐지·분석·보고하는 방법을 알아봅니다.

Mark Mallia 작성


핵심 요약

CVE-2025-59359는 Chaos-Mesh의 Controller Manager에서 발견된 치명적인 OS 명령 주입 결함을 노출합니다. 이 취약점을 통해 공격자는 Kubernetes 포드 전반에 걸쳐 임의의 셸 명령을 실행할 수 있으며, 잠재적으로 전체 클러스터를 장악할 수 있습니다. 이 글에서는 익스플로잇을 시뮬레이션하고 포렌식 흔적을 매핑하며, 기술 팀과 경영진 모두에게 관련된 탐지 및 완화 전략을 설명합니다.


이 CVE가 주목받는 이유

끊임없이 진화하는 Kubernetes 보안 환경에서 CVE-2025-59359는 단 하나의 간과된 입력이 전체 클러스터를 무너뜨릴 수 있다는 냉혹한 경고로 자리 잡습니다. 이 치명적인 취약점(CVSS 9.8)은 Chaos-Mesh의 Controller Manager에 영향을 미치며, 사용자 제공 파라미터가 아무런 검사나 삭제 없이 무모하게 셸 명령에 문자열로 연결됩니다. 결과는 무엇일까요? 클러스터 내부의 인증되지 않은 공격자가 포드 전반에 걸쳐 임의의 명령을 실행하여 놀라울 정도로 쉽게 전체 제어권을 획득할 수 있습니다. 이는 명령 주입을 통한 권한 상승의 전형적인 사례이며, 클라우드 네이티브 환경에서 보안 코딩 원칙이 왜 중요한지를 보여주는 강력한 예입니다.


기술적 분석

이 결함은 cleanTcs 뮤테이션 내부에 존재합니다. 이 뮤테이션은 카오스 실험 후 Linux 트래픽 제어(TC) 설정을 정리하며, 실험 사양에서 사용자 제공 파라미터를 입력받습니다. 공격자가 해당 파라미터에 조작된 값을 제공하면, 결과 셸 명령은 문자열 연결로 구성됩니다. 이 명령이 Controller Manager 권한으로 실행되기 전에는 어떠한 방어적 검사도 수행되지 않습니다. 즉, 인증되지 않은 사용자가 클러스터가 제어하는 모든 포드 또는 네임스페이스에 임의의 명령을 주입할 수 있다는 뜻입니다.

다음은 이 뮤테이션의 소스 코드(Go 구현 맥락)에서 발췌한 내용입니다.

root@kitploit:~
// cleanTcsMutation.go
func executeCleanTcs(ctx context.Context, payload Payload) error {
    // Build command string using user input directly
    cmd := fmt.Sprintf(
        "tc qdisc add dev %s root handle 1: htb rate %s ceil %s",
        payload.Device,
        payload.Rate,
        payload.Ceil,
    )
    log.Debugf("Running command: %s", cmd)
    if err := ctx.RunCommand(cmd); err != nil {
        return fmt.Errorf("tc clean mutation failed: %w", err)
    }
    return nil
}
  • 이 뮤테이션은 Device, Rate, Ceil 세 가지 파라미터를 입력받습니다.
  • 이 값들은 삭제(sanitization) 단계 없이 명령 문자열에 연결됩니다.
  • 결과 셸 호출은 일반적으로 모든 네임스페이스의 모든 포드에 접근할 수 있는 Chaos Controller Manager의 권한으로 실행됩니다.

공격자가 이를 악용하는 방법

Chaos-Mesh가 실행 중인 Kubernetes 클러스터를 상상해 보세요. 공격자는 겉보기에는 무해해 보이는 실험 스펙을 조작합니다. 하지만 트래픽 제어를 조정하는 대신 Device, Rate, Ceil 같은 필드에 ; rm -rf /tmp 같은 페이로드를 몰래 삽입합니다. UI나 API를 통해 제출되면 뮤테이션은 삭제도 안전장치도 없이 명령을 맹목적으로 구성하고 실행합니다. 게다가 컨트롤러 매니저 권한으로 실행되기 때문에 주입된 코드는 포드 사이로 순식간에 퍼집니다. 더 심각한 것은, 공격자가 CVE-2025-59358도 함께 악용해 GraphQL 엔드포인트에 인증 없이 접근할 수 있다면 자격 증명조차 필요하지 않다는 점입니다.

운영 환경에서 악용될 경우 CVE-2025-59359는 공격자가 서비스를 방해하고, 민감한 워크로드에 접근하며, 네임스페이스 간에 이동(pivot)할 수 있게 하여 비즈니스 연속성과 규제 준수에 중대한 위험을 초래할 수 있습니다. Chaos-Mesh를 사용하는 조직은 패치 적용, RBAC 시행, GraphQL 엔드포인트 감사를 최우선으로 해야 합니다.


MITRE ATT&CK 매핑

전술기법
실행T1059 – 명령 및 스크립팅 인터프리터
권한 상승T1068 – 권한 상승을 위한 악용
측면 이동T1021 – 원격 서비스
영향T1499 – 엔드포인트 서비스 거부

탐지 전략

  • 즉시 조치: cleanTcs 뮤테이션의 사용자 입력 처리에 관한 정책을 검토합니다.
  • 완화 권고: 셸 명령 문자열을 구성하기 전에 삭제(sanitization) 단계를 추가하거나, 연결(concatenation)을 완전히 피하는 매개변수화된 쿼리로 전환합니다.
  • 장기 계획: Chaos Controller Manager에 대해 역할 기반 접근 제어(RBAC)를 구현하여 인증된 사용자만 실험 스펙을 제출할 수 있도록 고려합니다.

Logstash 파이프라인 구성

Logstash 구성 디렉터리에 logstash-tcs.conf 파일을 생성합니다.

root@kitploit:~

input {
  beats {
    port => 5044
    codec => "json"
  }
}

filter {
  # The Python script will be referenced here.
  python {
    code => "/opt/elk/python/process_tcs.py"
    add_field => { "[tcs]" => "%{[message][device]}-%{[message][rate]}-%{[message][ceil]}" }
  }
}

output {
  elasticsearch {
    hosts => ["http://localhost:9200"]
    index => "chaos-tcs"
    document_type => "experiment"
    codec => "json"
  }
}

Python 필터 스크립트 – process_tcs.py

root@kitploit:~
#!/usr/bin/python3

def process(event):
    """
    Transforms the raw event from Logstash into a JSON document suitable for Elasticsearch.
    Expected input format (example):

      {
        "message": {
          "device": "eth0",
          "rate":   "100mbit/s",
          "ceil":   "200mbit/s",
          "timestamp": "2025-09-18T14:33:00Z"
        }
      }

    The script extracts the three key values, normalises them and returns a dictionary.
    """
    # 1. Grab nested fields
    device = event.get("message", {}).get("device", "")
    rate   = event.get("message", {}).get("rate", "")
    ceil   = event.get("message", {}).get("ceil", "")

    # 2. Normalise numeric values – remove unit suffixes and cast to float.
    def strip_unit(val, unit):
        return float(val.replace(unit, "").strip())

    rate_val = strip_unit(rate, "mbit/s")
    ceil_val = strip_unit(ceil, "mbit/s")

    # 3. Build output dict
    result = {
        "device": device,
        "rate_mbit_s": rate_val,
        "ceil_mbit_s": ceil_val,
        "ts": event.get("message", {}).get("timestamp", ""),
        "tcs_id": f"{device}-{rate_val}-{ceil_val}"
    }

    # 4. Return the dict
    return result

Elasticsearch 인덱스 매핑

매핑 파일 chaos-tcs-mapping.json을 생성합니다:

root@kitploit:~
{
  "mappings": {
    "_doc": {
      "properties": {
        "device":      { "type": "keyword" },
        "rate_mbit_s":{ "type":"float"   },
        "ceil_mbit_s":{ "type":"float"   },
        "ts":          { "type":"date",  "format":"yyyy-MM-dd'T'HH:mm:ssZ"},
        "tcs_id":      { "type":"keyword" }
      }
    }
  }
}

Kibana 대시보드 – “Command Injection Overview”

CVE-2025-59359의 영향을 실시간으로 시각화하기 위해, 이 대시보드는 원시 카오스 실험 데이터를 실행 가능한 인사이트로 전환하는 세 가지 핵심 패널을 제공합니다. 시계열 라인(Time-Series Line)은 네임스페이스별로 집계된 포드별 rate_mbit_s를 추적하여 팀이 클러스터 전반의 트래픽 셰이핑 이상 징후를 발견할 수 있게 해줍니다. 히스토그램(Histogram)은 시간당 실험 건수를 표시하고, 비율이 평균의 1.5×를 초과하면 알림을 트리거하여 잠재적 남용이나 자동화된 공격 패턴을 표면화합니다. 마지막으로 필터 테이블(Filter Table)은 각 tcs_id를 실행 상태 및 성공 플래그와 함께 나열하여 조사자가 실패했거나 의심스러운 실행을 신속하게 격리할 수 있게 합니다. 이 패널들은 함께 Kubernetes 환경에서 명령 주입이 어떻게 전개되는지 보여주는 포렌식 렌즈 역할을 합니다.

간단한 알림 규칙을 추가합니다:

root@kitploit:~
PUT /chaos-tcs/_settings
{
  "number_of_shards": 2,
  "number_of_replicas": 1
}

위의 Python 스크립트를 사용하는 수집(ingest) 파이프라인을 생성한 다음, rate_mbit_s가 24시간 이동 평균에서 15 % 이상 벗어날 때 트리거되는 Kibana 알림을 구성합니다.


배포 체크리스트


결론

CVE-2025-59359는 단순히 취약점 데이터베이스의 또 다른 항목이 아닙니다. 간과된 입력 삭제(sanitization)가 전체 Kubernetes 클러스터의 보안을 어떻게 무너뜨릴 수 있는지를 보여주는 생생한 사례입니다. 이 익스플로잇을 살펴보면서 Chaos-Mesh의 단일 뮤테이션이 원격 코드 실행, 권한 상승, 포드 전체 장악으로 이어지는 관문이 될 수 있음을 확인했습니다. 그러나 더 중요한 것은, 관측 가능성(observability), 포렌식 도구, 그리고 신중한 탐지 로직이 혼돈을 명확성으로 바꿀 수 있다는 점을 보여주었다는 것입니다.

이 프로젝트는 교육 및 윤리적 목적으로만 제공됩니다. 모든 데모, 시뮬레이션, 포렌식 워크스루는 실제 취약점에 대한 인식을 높이고 안전한 코딩, 책임 있는 공개(responsible disclosure), 사전 예방적 방어 전략을 장려하기 위해 설계되었습니다. 여기에 제시된 기술이나 통찰은 명시적 승인 없이 운영 중인 시스템을 손상, 방해, 악용하는 데 어떤 상황에서도 사용되어서는 안 됩니다.

도구 다운로드
항목조치
Logstash 서비스beats 입력이 포트 5044에서 수신 대기 중인지 확인합니다.
Python 스크립트 권한/opt/elk/python/process_tcs.py는 실행 가능해야 합니다(chmod +x).
Elasticsearch 인덱스매핑 파일로 PUT /chaos‑tcs/_mapping을 실행합니다.
Kibana 대시보드JSON 정의를 가져와 Command‑Injection Overview로 저장합니다.
보안 그룹Kubernetes 노드에서 포트 5044 트래픽을 허용합니다.
모니터링5분마다 curl -s http://localhost:9200/_cat/indices?v를 실행하는 cron 작업을 추가하여 인덱스 상태를 확인합니다.