TGViewer
Технологический Болт Генона Технологический Болт Генона @tech_b0lt_genona · 9.74K subscribers
Post #6101 4.82K
Kubernetes Remote Code Execution Via Nodes/Proxy GET Permission
https://grahamhelton.com/blog/nodes-proxy-rce

Пост огромный с кучей технических подробносте, поэтому я тут постараюсь относительно кратко описать чо там и как. Если где-то ошибся, то поправьте в комментах.

Как следует из названия, не смотря на то что у атакующего аккаунта есть права Nodes/Proxy GET (первый прикреплённый скрин), автор получил RCE (второй скрин)

Ключевым моментом в реализации атаки является логика обработки подключений к kubelet.

Когда мы делаем kubectl exec, то подрубаемся к kubelet-у на ноде через API Kubernetes. Что бы обеспечить интерактивность используется WebSocket и тут возникает проблема.

Авторизация осуществляется во время хэндшейка HTTP GET, а вот последующие действия, которые требуют CREATE не проверяются. Проверить это можно через websocat

websocat \
--insecure \
--header "Authorization: Bearer $TOKEN" \
--protocol "v4.channel.k8s.io" \
"wss://$NODE_IP:10250/exec/default/nginx/nginx?output=1&error=1&command=hostname"

nginx
{"metadata":{},"status":"Success"}


До кучи AuditPolicy ещё и не регистрирует команды.

PoC можно посмотреть тут (Иван, привет 🌝)
https://labs.iximiuz.com/tutorials/nodes-proxy-rce-c9e436a9
+ скрипт тоже положу в комменты

Весь "тулинг" и более подробное описание автор обещает выложить позже.

Сводная информация

Vulnerable Permission - nodes/proxy GET
Kubernetes Version Tested - v1.34, v1.35
Required Network Access - Kubelet API (Port 10250)
Impact - Code execution in any Pod on
reachable Nodes
Disclosure Status - Won’t fix (Intended behavior)
Helm charts Affected - 69

Среди 69 чартов

- prometheus-community/prometheus
- grafana/promtail
- datadog/datadog
- elastic/elastic-agent
- cilium/cilium

Как видно из таблицы, стоит "Won’t fix" для этой проблемы. Почему? Потому что "всё работает как надо" сказала автору команда Kubernetes и сослалась на KEP-2862 (https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/2862-fine-grained-kubelet-authz/README.md)

Добрая четверть поста описывает почему KEP-2862 не решает проблему.

Что с этим делать? Минимизировать привилегии (кто бы мог подумать)

Не давать излишние права вида
rules:
- apiGroups: [""]
resources: ["nodes/proxy"]
verbs: ["get"]


Спасибо подписчику за наводку
  • 🔥 27
  • 🤣 10
  • ❤ 4
  • 👍 2
More from @tech_b0lt_genona
  1. Sep 24, 2026Четверг, а значит время проектов от подписчиков! 🌝 Тем, кто пропустил, что такое четверго…
  2. Sep 24, 2026Месяц назад я писал о ZeroNights, но на тот момент ещё не было программы https://t.me/tech…
  3. Sep 23, 2026HackerOne взялся за топов "автоматизаторов" и угрожает им временным отключением аккуанта.…
  4. Sep 22, 2026YouTube обеспечил весь рост видеопотребления в России в первой половине 2026 года https://…
  5. Sep 22, 2026Подписчик поделился со мной фото с Tokyo Game Show 2026 на которой обнаружил RuStore Какие…
  6. Sep 22, 2026Послушал давеча два подкаста. Сделал прослушивание специально совмещённым, чтобы если что…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →