Istio публікує результати аудиту безпеки ztunnel

Проходить на відмінно.

Apr 18, 2025 | Від Craig Box — Solo.io, для робочої групи з безпеки продуктів Istio

Ambient-режим Istio розділяє сервісну мережу на два окремі шари: Обробка 7-го рівня (проксі-сервер «waypoint proxy»), який, як і раніше, працює за допомогою традиційного проксі-сервера Envoy; і безпечний оверлей («тунель нульової довіри» або «ztunnel»), який являє собою нову кодову базу, написану з нуля на Rust.

Ми хочемо, щоб проєкт ztunnel можна було безпечно встановлювати стандартно у кожному кластері Kubernetes, а для цього він має бути безпечним та продуктивним.

Ми всебічно продемонстрували продуктивність ztunnel, показавши, що він є способом створення безпечної мережі нульової довіри в Kubernetes з найвищою пропускною здатністю — забезпечує вищу пропускну здатність TCP, ніж навіть такі внутрішньоядерні засоби передачі даних, як IPsec і WireGuard, і що його продуктивність збільшилася на 75% за останні 4 випуски.

Сьогодні ми раді підтвердити безпеку ztunnel, опублікувавши результати аудиту кодової бази, проведеного Trail of Bits.

Ми хотіли б подякувати Cloud Native Computing Foundation за фінансування цієї роботи, а також OSTIF за її координацію.

Обсяг та загальні висновки

Istio було оцінено у 2020 та 2023, а проксі Envoy отримав незалежну оцінку. Обʼєктом цього огляду був новий код в середовищі Istio, компонент ztunnel: зокрема, код, повʼязаний з авторизацією L4, проксіюванням вхідних запитів, безпекою на транспортному рівні (TLS) та управлінням сертифікатами.

Аудитори заявили, що «кодова база ztunnel добре написана і структурована», і не виявили жодних вразливостей у коді. Три їхні висновки, один середньої тяжкості і два інформаційних, стосуються рекомендацій щодо зовнішніх факторів, включаючи ланцюжок постачання програмного забезпечення і тестування.

Результат та запропоновані покращення

Покращення управління залежностями

На момент проведення аудиту у звіті cargo audit для залежностей ztunnel було показано три версії з актуальними рекомендаціями щодо безпеки. Не було жодних припущень про те, що у залежностях ztunnel можуть бути доступні будь-які вразливі шляхи коду, і супровідники регулярно оновлюють залежності до останніх відповідних версій. Щоб оптимізувати цей процес, ми застосували Dependabot від GitHub для автоматизованого оновлення.

Аудитори вказали на ризик наявності Rust crates у ланцюжку залежностей ztunnel, які або не підтримуються, або підтримуються одним власником. Це поширена ситуація в екосистемі Rust (і взагалі у всьому відкритому коді). Ми замінили два явно ідентифіковані crate.

Розширення тестового покриття

Команда Trail of Bits виявила, що більшість функціональних можливостей ztunnel добре протестовано, але було виявлено деякі шляхи коду обробки помилок, які не було покрито тестуванням мутацій.

Ми оцінили пропозиції і виявили, що прогалини у покритті, виявлені цими результатами, стосуються як тестового коду, так і коду, який не впливає на коректність.

Хоча мутаційне тестування корисне для виявлення потенційних областей для покращення, мета не полягає в тому, щоб досягти точки, коли звіт не повертає жодних результатів. Мутації можуть не спричинити збоїв тестування в ряді очікуваних випадків, таких як поведінка без «правильного» результату (наприклад, повідомлення журналу), поведінка, яка впливає лише на продуктивність, але не на коректність (вимірюється за межами області, про яку знає інструментарій), шляхи коду, які мають кілька способів досягти того самого результату, або код, який використовується лише для тестування. Тестування та безпека є основним пріоритетом для команди Istio, і ми постійно вдосконалюємо наше тестове покриття, використовуючи такі інструменти, як мутаційне тестування та розробляючи нові рішення для тестування проксі-серверів.

Посилення розбору заголовків HTTP

Для розбору значення заголовка HTTP Forwarded, який може бути присутнім у зʼєднаннях з ztunnel, використовувалася бібліотека сторонніх розробників. Аудитори зазначили, що розбір заголовків є поширеною сферою атак, і висловили занепокоєння тим, що бібліотека, яку ми використовували, не пройшла нечіткий тест. Враховуючи, що ми використовували цю бібліотеку лише для аналізу одного заголовка, ми написали власний парсер для заголовка Forwarded, доповнивши його фаззі-арканом для тестування.

Долучайтеся

Завдяки високій продуктивності та підтвердженій безпеці, режим ambient продовжує розвивати сучасний рівень дизайну сервісних мереж. Ми рекомендуємо вам спробувати його вже сьогодні.

Якщо ви бажаєте долучитися до роботи над безпекою продукту Istio або стати його супровідником, ми будемо раді бачити вас! Приєднуйтесь до нашого робочого простору Slack або наших публічних зустрічей, щоб ставити питання або дізнатися про те, що ми робимо для забезпечення безпеки Istio.

Share this post