Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
Cluster-Chaos-Exploiting-CVE-2025-59359-for-Kubernetes-Takeover — Практическое криминалистическое исследование уязвимости CVE-2025-59359 — критической ошибки внедрения команд ОС в Chaos-Mesh. Узнайте, как злоумышленники захватывают кластеры Kubernetes через GraphQL-мутации, а также как обнаруживать, анализировать и сообщать о взломе с помощью ELK. | Kitploit
Инструменты/GitHubGitHub/mrk336/cluster-chaos-exploiting-cve-2025-59359-for-kubernetes-takeover
Повышение привилегийБезопасность контейнеровАнализ уязвимостейЭксплуатацияЛатеральное перемещениеФорензикаБезопасность облачных средКомандование и УправлениеОбучение и Образование

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

Описание

Практическое криминалистическое исследование уязвимости CVE-2025-59359 — критической ошибки внедрения команд ОС в Chaos-Mesh. Узнайте, как злоумышленники захватывают кластеры Kubernetes через GraphQL-мутации, а также как обнаруживать, анализировать и сообщать о взломе с помощью ELK.

Реагирование на Инциденты
Анализ Журналов
GitHubmrk336/cluster-chaos-exploiting-cve-2025-59359-for-kubernetes-takeover

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

Репозиторий
131 год назадЕщё не проверено
Поделиться

Кластерный хаос: эксплуатация CVE-2025-59359 для захвата Kubernetes

Практическое криминалистическое руководство по CVE-2025-59359 — критической уязвимости внедрения команд ОС в Chaos-Mesh. Узнайте, как злоумышленники захватывают кластеры Kubernetes через мутации GraphQL, а также как обнаруживать, анализировать и отчитываться о нарушении с помощью ELK.

Автор: Марк Маллия


Резюме для руководства

CVE-2025-59359 раскрывает критическую уязвимость внедрения команд ОС в Controller Manager Chaos-Mesh. Эта уязвимость позволяет злоумышленникам выполнять произвольные команды оболочки на модулях Kubernetes, что потенциально может привести к полной компрометации кластера. В данной статье моделируется эксплуатация, картографируется криминалистический след и описываются стратегии обнаружения и смягчения последствий, актуальные как для технических команд, так и для руководителей.


Почему эта CVE выделяется

В постоянно развивающемся мире безопасности Kubernetes CVE-2025-59359 служит резким напоминанием о том, как один прогляденный ввод может разрушить целый кластер. Эта критическая уязвимость (CVSS 9.8) затрагивает Controller Manager Chaos-Mesh, где предоставленные пользователем параметры бездумно конкатенируются в команды оболочки без каких-либо проверок или очистки. Результат? Неаутентифицированный злоумышленник внутри кластера может выполнять произвольные команды на модулях, получая полный контроль с пугающей легкостью. Это классический пример повышения привилегий через внедрение команд и мощный пример того, почему заповеди безопасного программирования в облачно-родных средах имеют значение.


Технический разбор

Уязвимость существует в мутации cleanTcs. Эта мутация очищает настройки управления трафиком Linux (TC) после хаос-экспериментов и принимает параметры, указанные пользователем в спецификациях эксперимента.
Когда злоумышленник предоставляет сконструированное значение для этих параметров, результирующая команда оболочки строится конкатенацией строк. Никаких защитных проверок не выполняется перед выполнением этой команды с привилегиями Controller Manager — это означает, что неаутентифицированный пользователь может внедрить произвольные команды в любой модуль или пространство имен, контролируемое кластером.

Ниже приведен отрывок исходного кода мутации (в контексте его реализации на Go).

// 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.
  • Они конкатенируются в строку команды без какого-либо этапа очистки.
  • Полученный вызов оболочки выполняется с привилегиями Chaos Controller Manager, который обычно имеет доступ ко всем модулям во всех пространствах имен.

Как злоумышленник может это использовать

Представьте кластер Kubernetes, на котором работает Chaos-Mesh, где злоумышленник создает, казалось бы, безобидную спецификацию эксперимента. Но вместо настройки управления трафиком он вставляет полезную нагрузку, например ; rm -rf /tmp, в поля Device, Rate или Ceil. После отправки через UI или API мутация слепо строит и выполняет команду — никакой очистки, никаких защитных ограничений. А поскольку она выполняется с привилегиями Controller Manager, внедренный код распространяется по модулям, как лесной пожар. Хуже того, если злоумышленник также использует CVE-2025-59358 для неаутентифицированного доступа к конечной точке GraphQL, ему даже не понадобятся учетные данные.

При эксплуатации в production CVE-2025-59359 может позволить злоумышленникам нарушить работу сервисов, получить доступ к критически важным рабочим нагрузкам и перемещаться между пространствами имен, что создает существенный риск для бизнес-непрерывности и соблюдения нормативных требований. Организациям, использующим Chaos-Mesh, следует уделить первоочередное внимание установке исправлений, применению RBAC и аудиту конечных точек GraphQL.


Картирование MITRE ATT&CK

ТактикаТехника
ВыполнениеT1059 – Интерпретатор команд и сценариев
Повышение привилегийT1068 – Эксплуатация для повышения привилегий
Боковое перемещениеT1021 – Удаленные службы
ВоздействиеT1499 – Отказ в обслуживании конечных точек

Стратегии обнаружения

  • Немедленные действия: Пересмотрите свою политику обработки пользовательского ввода в мутации cleanTcs.
  • Рекомендации по смягчению: Добавьте этап очистки перед построением строки команды оболочки или переключитесь на параметризованный запрос, который полностью избегает конкатенации.
  • Долгосрочный план: Рассмотрите возможность внедрения контроля доступа на основе ролей для Chaos Controller Manager, чтобы только авторизованные пользователи могли отправлять спецификации экспериментов.

Конфигурация конвейера Logstash

Создайте файл logstash-tcs.conf в каталоге конфигурации Logstash.


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

#!/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:

{
  "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 – “Обзор внедрения команд”

Скачать инструмент