Istio в Kubernetes внедряет сопроводительный файл Envoy для работы вместе с модулями и реализует сервисную сетку, однако сам Istio не могут гарантировать, что трафик не будет обходить этот прокси; в этом случае политика безопасности Istio больше не применяется.
Поэтому я пытаюсь понять все способы, которыми может произойти этот обход (при условии, что сам Envoy не был скомпрометирован), и найти способы предотвратить их, чтобы трафик TCP, исходящий из сетевого пространства имен Pod, гарантированно проходил через Envoy (или по крайней мере, гораздо более вероятно):
- Поскольку (на момент написания) Envoy не поддерживает UDP (это почти здесь) , Трафик UDP не будет проксироваться, поэтому используйте NetworkPolicy, чтобы убедитесь, что только TCP-трафик разрешен к / из Pod (например, чтобы избежать туннелирования TCP-трафика через VPN через UDP)
- Откажитесь от возможности NET_ADMIN, чтобы блок не переконфигурировал правила IPTables в своем сетевом пространстве имен, которые захватывают трафик.
- Отбросьте возможность NET_RAW для предотвращения открытия модулем сырых сокетов и обхода точек подключения netfilter, которые использует IPTables.
Единственный другой вектор атаки, о котором я знаю, - это уязвимость ядра - есть ли другие? Может быть, есть другие протоколы L3 / 4, которые IPTables не распознает или игнорирует?
Я понимаю, что eBPF и Cilium могут использоваться для принудительного перехвата в сокете уровень, но меня интересует случай использования ванильного Istio на Kubernetes.
РЕДАКТИРОВАТЬ: я также предполагаю, что рабочая нагрузка не имеет доступа к серверу Kubernetes API