К обсуждениям

Kiota: проверка escaping литералов при генерации кода

Редакция VOne Технологии

Защитная проверка Microsoft.OpenApi.Kiota по GHSA-2hx3-vp6r-mg3f: версия, изолированный fixture, PASS/FAIL/Unknown, stop-rule и минимальный пакет доказательств.

Короткий ответ для Microsoft.OpenApi.Kiota

Проблема этой карточки конкретна: строка из OpenAPI может изменить структуру сгенерированного исходника. Рекомендуемый путь: Сначала докажите фактическую версию Microsoft.OpenApi.Kiota. Затем выполните только изолированную проверку: сгенерировать код из минимальной локальной схемы с кавычками, переносом и Unicode в description, затем разобрать AST без запуска результата. Итог фиксируйте как PASS, FAIL или Unknown; production и реальные данные не используйте. Advisory GHSA-2hx3-vp6r-mg3f описывает механизм «Kiota: Code Generation Literal Injection» и указывает границу «nuget/Microsoft.OpenApi.Kiota: >= 1.30.0, < 1.31.1; первая исправленная версия: 1.31.1». Это не означает, что конкретная установка уязвима или что инцидент уже произошёл. Сначала подтвердите resolved dependency, digest артефакта, ветку и реально включённую функцию. Если компонент виден только в исходном manifest, но отсутствует в runtime/SBOM, пометьте состояние как not_present, а не как PASS.

Inventory и применимость: codegen_literal

Для kiota-generated-literal-escaping-check сохраните package manager, lock-файл, runtime-версию и способ доставки компонента. Отдельно запишите advisory boundary: nuget/Microsoft.OpenApi.Kiota: >= 1.30.0, < 1.31.1; первая исправленная версия: 1.31.1. Возможные решения: not_present, outside_range, affected_candidate, patched_or_backported и Unknown. Backport считается доказанным только при ссылке на commit и повторяемом regression test. Название контейнера, один HTTP 200 и отсутствие жалоб не доказывают исправление. Если невозможно связать бинарник с source revision, остановитесь на Unknown и передайте вопрос владельцу сборки.

Безопасный стенд для проверки codegen_literal

Проверка строится вокруг одного наблюдаемого действия: сгенерировать код из минимальной локальной схемы с кавычками, переносом и Unicode в description, затем разобрать AST без запуска результата. Используйте disposable окружение, синтетические данные, отключённую внешнюю сеть и заранее заданные CPU/RSS/time limits. Сначала выполните benign control, который подтверждает достижимость нужного пути. Затем один boundary-case без опубликованного exploit payload. Не копируйте production-конфигурацию, токены, имена пользователей, адреса узлов или реальные документы. После каждого случая прочитайте состояние обратно и удалите временные объекты.

Как читать результат: матрица поле схемы–литерал в AST–ошибка компиляции–лишний узел

Главный артефакт этой статьи: матрица поле схемы–литерал в AST–ошибка компиляции–лишний узел. PASS допустим, когда positive control сработал, boundary-case был безопасно отклонён и состояние осталось неизменным. FAIL требует одновременно работающего control и наблюдаемого нарушения заявленной границы. Unknown обязателен, если версия не доказана, harness не дошёл до нужной ветки, монитор не видел side effects либо ограничитель завершил тест раньше результата. Такой формат отделяет реальное наблюдение по codegen_literal от предположения по названию CVE.

Обновление без потери причинности

Если найден affected_candidate, переходите на поддерживаемую исправленную ветку, указанную upstream: 1.31.1. Сохраните исходный fixture и повторите его до и после изменения. Не меняйте одновременно dependency, права, proxy, storage и формат данных: тогда нельзя понять, что исправило verdict. Stop-rule для этой карточки: появился неожиданный AST-узел, исполнение либо запись за пределами output. Немедленно завершайте проверку также при появлении персональных данных, внешнего трафика, записи вне temp или реальных секретов. Защитный фильтр на периметре может снизить риск, но не заменяет исправление компонента.

Минимальный пакет доказательств по GHSA-2hx3-vp6r-mg3f

Передайте владельцу: GHSA-2hx3-vp6r-mg3f, nuget/Microsoft.OpenApi.Kiota: >= 1.30.0, < 1.31.1; первая исправленная версия: 1.31.1, artifact digest, feature state, hash fixture, параметры лимитов, результат benign control, строку из «матрица поле схемы–литерал в AST–ошибка компиляции–лишний узел», итог PASS/FAIL/Unknown и точную причину Unknown. Приложите GitHub Advisory Database и прямой upstream source, но не копируйте большие фрагменты чужого текста. Отдельно укажите, что проверялась боль «строка из OpenAPI может изменить структуру сгенерированного исходника», а не весь продукт. Для повторяемости используйте ключи `kiota-generated-literal-escaping-check-inventory`, `kiota-generated-literal-escaping-check-control`, `kiota-generated-literal-escaping-check-boundary`, `kiota-generated-literal-escaping-check-readback`, `kiota-generated-literal-escaping-check-sideeffects`, `kiota-generated-literal-escaping-check-verdict`, `kiota-generated-literal-escaping-check-rollback` и `kiota-generated-literal-escaping-check-timestamp`. Тогда следующий специалист проверит тот же механизм без доступа к production.

Материал подготовлен редакцией VOne с помощью ИИ; версии, источники, безопасный fixture, stop-rule, privacy-ограничения и отсутствие рекламных обещаний перепроверены человеком.

Источники и проверка

Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.

Ответы

0 опубликовано
Ответов пока нет. Вы можете начать обсуждение.

Ваш ответ

Добавьте свой опыт или уточнение по теме.

Вы публикуете как Аноним Аватар отличает разговоры, но не раскрывает личные данные.

Ответ появится сразу. Не публикуйте личные данные, ключи и приватные ссылки.