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

Coder AI Bridge: токен приостанавливаемого пользователя должен гаснуть

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

Защитная проверка Coder AI Bridge по ghsa-wqxv-w64v-5wh6: применимость, обратимый fixture для границы «единая проверка active-status для уже выданного API key на каждом AI Bridge endpoint», измеримый результат и stop-rule без production-данных.

Докажите применимость к Coder AI Bridge

Начните не с severity, а с доказательства применимости. Для Coder AI Bridge и границы «единая проверка active-status для уже выданного API key на каждом AI Bridge endpoint» зафиксируйте версию runtime, package source, digest сборки, активный feature/config path и роль, которая достигает функции. Reviewed Advisory фиксирует «github.com/coder/coder/v2 >= 2.34.0, < 2.34.2; first patched 2.34.2 | github.com/coder/coder/v2 >= 2.33.0, < 2.33.8; first patched 2.33.8 | github.com/coder/coder/v2 >= 2.30.0, < 2.32.7; first patched 2.32.7», публикацию 2026-07-06 и обновление 2026-07-07, но само по себе не устанавливает наличие у вас уязвимого бинарника, реальную эксплуатацию или спрос. Такой порядок не превращает advisory в утверждение о конкретной установке. Если версия собрана из fork или vendor patch, сохраните commit/patch provenance отдельно: одна строка semver не отвечает, присутствует ли исправление.

Зафиксируйте отдельный защитный контракт

Выразите проверяемый инвариант своими словами: active получает allow, suspended/deleted/expired получают одинаковый deny, provider invocation counter остаётся нулевым при отказе. Исходная пользовательская боль здесь конкретна — приостановка аккаунта не закрывает ранее выданный ключ, поэтому платный proxy остаётся достижимым до expiry. Не смешивайте её с общими страницами про обновления, XSS, SSRF или отказ в обслуживании: механизм и ожидаемый ответ должны быть самостоятельными. Заранее укажите субъект, объект, доверенную границу, разрешённый побочный эффект и сигнал нарушения. Для этого материала артефакт решения — матрица account-status / token-state / standard-api / bridge-api / provider-call-count. Он не содержит токены, IP, содержимое файлов или персональные данные; достаточно классов результата, счётчиков и digest тестового состояния.

Поставьте обратимый минимальный опыт

Подготовьте обратимый стенд: изолированное auth-хранилище с active, suspended, deleted и expired fixtures и фиктивным provider без внешних вызовов. Следующим шагом один и тот же безвредный authorization probe провести до и после смены статуса, затем сравнить standard middleware и AI Bridge. Используйте минимальные синтетические значения, запрет внешней сети, отдельный temp root и эталон штатного пути, который проходит тот же код без пограничного условия. Перед опытом зафиксируйте digest fixture, версию и timeout, после — digest состояния и cleanup result. Не переносите пример на production и не увеличивайте нагрузку ради наглядности. Если проверяемый модуль нельзя подменить или изолировать, ограничьтесь статической проверкой patch/release и отложите runtime-подтверждение.

Сведите наблюдения в матрицу решения

Итог определяйте по заранее заданному правилу, а не по впечатлению от лога. Защитный исход: active получает allow, suspended/deleted/expired получают одинаковый deny, provider invocation counter остаётся нулевым при отказе. Для каждого ряда в «матрица account-status / token-state / standard-api / bridge-api / provider-call-count» сохраните expected и observed, а также точную стадию отказа: parse, validate, authorize, allocate, open, mutate или cleanup. Ошибка до опасного действия и ошибка после него — разные результаты. Normal-control обязан доказать, что тест не сломан целиком. Повторите fixture не менее двух раз только в пределах локального бюджета: одинаковый тип наблюдения важнее длинного stdout.

Остановитесь при первом выходе за границу

Примените stop-rule без торга: прекратить работу до настоящего ключа провайдера, реального аккаунта или внешнего MCP; несогласованность middleware считать блокером. Ещё одни красные флаги — изменение объекта вне temp, неожиданный сетевой вызов, рост памяти, privilege prompt, необратимая запись, расхождение digest или отсутствие эталон штатного пути. При любом флаге завершите процесс, сохраните лишь обезличенную матрицу и верните стенд к исходному состоянию. Не публикуйте payload, реальные конфиги и подробности чужой системы. Severity не разрешает расширять тест: цель — подтвердить защитный контракт с минимальным воздействием.

Передайте поддержке минимальный пакет

Для владельца компонента подготовьте короткий пакет: ghsa-wqxv-w64v-5wh6, Coder AI Bridge, installed/build version, upstream commit, применимый диапазон «github.com/coder/coder/v2 >= 2.34.0, < 2.34.2; first patched 2.34.2 | github.com/coder/coder/v2 >= 2.33.0, < 2.33.8; first patched 2.33.8 | github.com/coder/coder/v2 >= 2.30.0, < 2.32.7; first patched 2.32.7», описание fixture без чувствительных значений, матрица account-status / token-state / standard-api / bridge-api / provider-call-count, эталон штатного пути, stop-rule, cleanup proof и ссылки на advisory/upstream. В отдельном поле отметьте unknown: reachability, vendor backport, runtime configuration и наличие compensating control. Решение может быть только одним из трёх: not-applicable с доказательством, update/test по утверждённому окну или blocked до безопасного стенда. Так поддержка получает минимальные данные для воспроизведения, а публичный материал не обещает индексацию, позиции, универсальную защищённость или результат на чужой инфраструктуре.

Свяжите исправление с механизмом Coder AI Bridge

Для Coder AI Bridge свяжите исправление именно с механизмом «единая проверка active-status для уже выданного API key на каждом AI Bridge endpoint», а не только с номером релиза. В changelog или diff найдите изменение, которое делает истинным результат «active получает allow, suspended/deleted/expired получают одинаковый deny, provider invocation counter остаётся нулевым при отказе», и сопоставьте его с диапазоном «github.com/coder/coder/v2 >= 2.34.0, < 2.34.2; first patched 2.34.2 | github.com/coder/coder/v2 >= 2.33.0, < 2.33.8; first patched 2.33.8 | github.com/coder/coder/v2 >= 2.30.0, < 2.32.7; first patched 2.32.7». Следующим шагом повторите fixture «изолированное auth-хранилище с active, suspended, deleted и expired fixtures и фиктивным provider без внешних вызовов» на текущем и кандидатном артефакте в одинаковой изоляции; сравнивайте «матрица account-status / token-state / standard-api / bridge-api / provider-call-count», а не произвольные строки лога. Если vendor backport меняет номер версии, сохраните commit/diff provenance и сборочный digest. План возврата должен восстанавливать предыдущий тестовый артефакт, но не возвращать production к заведомо сомнительной версии. Критерий приёмки для этой отдельной боли — active получает allow, suspended/deleted/expired получают одинаковый deny, provider invocation counter остаётся нулевым при отказе; критерий прекращения — прекратить работу до настоящего ключа провайдера, реального аккаунта или внешнего MCP; несогласованность middleware считать блокером. Пока оба критерия не доказаны, статус обозначьте blocked или unknown, не подменяя результат предположением.

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

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

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

Ответы

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

Ваш ответ

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

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

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