Практическая защитная проверка open-feature-operator по ghsa-398h-7f66-3h4p: применимость, обратимый тест границы «tenant-bound разрешение FeatureFlagSource и InProcessConfiguration внутри исходного namespace», измеримый результат и stop-rule без production-данных.
Применимость к open-feature-operator
До теста зафиксируйте provenance компонента: digest, способ установки, runtime-версию и активную ветвь конфигурации. Для границы «tenant-bound разрешение FeatureFlagSource и InProcessConfiguration внутри исходного namespace» запишите версию живого процесса, build digest, источник пакета, включённую функцию и субъект, который вызывает этот путь. Reviewed Advisory перечисляет границы «github.com/open-feature/open-feature-operator <= 0.9.2; patched version not listed», однако запись в manifest ещё не доказывает установленную версию и reachability. Если provenance неполон, оставьте статус unknown. Not-applicable допустим только при доказанной версии вне affected range или документированно выключенной функции. Не переносите severity из advisory на свою среду без этих двух доказательств.
Что подтверждает GHSA-398h-7f66-3h4p
GitHub Reviewed Advisory опубликована 2026-07-15, обновлена 2026-07-15 и описывает для open-feature-operator механизм: open-feature-operator: Cross-namespace FeatureFlagSource and InProcessConfiguration resolution exposes spec contents on multi-tenant clusters. Подтверждённая package boundary: «github.com/open-feature/open-feature-operator <= 0.9.2; patched version not listed». Upstream-репозиторий https://github.com/open-feature/open-feature-operator связывает запись с исходным проектом, но сам по себе не сообщает состояние конкретного развёртывания. Даты, summary и диапазоны взяты с прямой advisory-страницы https://github.com/advisories/GHSA-398h-7f66-3h4p, а не из поискового сниппета. Эти источники не доказывают эксплуатацию, ущерб, популярность запроса, индексацию или позицию страницы.
Отдельная пользовательская боль и доказательство
Здесь проверяется ровно одна боль: workload одного арендатора может получить spec, sidecar arguments или supporting ConfigMap другого namespace. До любого запуска создайте артефакт «матрица requester-namespace / source-namespace / reference / materialized-fields / decision» и заранее определите допустимые значения каждой колонки. Normal-control должен пройти на той же сборке, с теми же лимитами и через тот же кодовый путь. Один status code, исключение или отсутствие записи не является доказательством: нужны expected result, observed result, конфигурационная ветвь и cleanup. Маркеры не должны содержать токены, IP, реальные имена, документы, логи или внутренние адреса.
Безопасный обратимый тест
Подготовьте два одноразовых namespace, два несекретных marker в тестовых resource и workload без внешнего доступа. Затем нужно создать допустимую ссылку внутри namespace и отрицательную cross-namespace ссылку, затем проверить только сгенерированную pod specification. Заранее заданный защитный исход: внутренняя ссылка разрешается, cross-namespace ссылка отклоняется и чужой marker не попадает в env, args или ConfigMap. Выполняйте опыт только локально или в одноразовой среде с пределами wall-time, CPU, памяти, файлов, сокетов и количества запросов. Не используйте production secrets, пользовательские данные, внешние цели или инструкции, пригодные для вторжения. Все markers остаются синтетическими, поэтому результат можно передать поддержке без пользовательского содержимого. После проверки удалите fixtures, повторите normal-control и сравните итоговый digest с baseline.
Решение по наблюдаемым результатам
Passed фиксируется, когда одновременно выполнено: внутренняя ссылка разрешается, cross-namespace ссылка отклоняется и чужой marker не попадает в env, args или ConfigMap; normal-control сохранил ожидаемое поведение; cleanup вернул исходное состояние. Failed требует повторяемого расхождения на том же fixture и той же версии. Unknown остаётся при нестабильном trace, неполном provenance или неясной конфигурации. Результат оформляют как «матрица requester-namespace / source-namespace / reference / materialized-fields / decision», чтобы другой инженер мог проверить вывод без догадок. Не расширяйте вывод с одной границы на всю систему и не обещайте абсолютную защищённость после одного опыта.
Стоп-правило, обновление и пакет поддержки
Критерий остановки задаётся до запуска: прекратить до запуска pod, если чужой marker появился в materialized specification. Если runtime входит в affected range, получите обновление только из доверенного канала upstream https://github.com/open-feature/open-feature-operator, зафиксируйте новый digest и повторите тот же fixture с прежними лимитами. Новый сценарий не подтверждает исправление старого. В обезличенный пакет поддержки включите runtime version, package boundary, конфигурационную ветвь, expected/observed, resource limits, timestamps, error class и хэши fixtures. Исключите credentials, cookies, абсолютные пути, внутренние hostname и содержимое данных.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт, privacy-ограничения и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-398h-7f66-3h4p проверено 2026-08-31
- Upstream-репозиторий open-feature-operator проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.