Защитная проверка Coder Devcontainer по ghsa-jqj2-x4c5-jfxm: применимость, обратимый fixture для границы «явная ActionUpdate-проверка до destructive recreate и до соединения с agent», измеримый результат и stop-rule без production-данных.
Докажите применимость к Coder Devcontainer
Разделите наличие пакета и достижимость ошибочной ветви. Для Coder Devcontainer и границы «явная ActionUpdate-проверка до destructive recreate и до соединения с agent» внесите в карточку runtime version, 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 | github.com/coder/coder/v2 < 2.29.17; first patched 2.29.17», публикацию 2026-07-06 и обновление 2026-07-06, но не подтверждает наличие у вас уязвимого бинарника, реальную эксплуатацию или спрос. Это сохраняет различие между публичным фактом и локальной гипотезой. Если версия собрана из fork или vendor patch, сохраните commit/patch provenance отдельно: одна строка semver не отвечает, присутствует ли исправление.
Зафиксируйте отдельный защитный контракт
Выразите проверяемый инвариант своими словами: viewer получает deny до dial; editor проходит и ровно один раз вызывает recreate; соседний delete-handler даёт тот же policy result. Исходная пользовательская боль здесь конкретна — read-only роль может запустить пересоздание и потерю несохранённого состояния, хотя обладает только правом просмотра. Не смешивайте её с общими страницами про обновления, XSS, SSRF или отказ в обслуживании: механизм и ожидаемый ответ должны быть самостоятельными. Заранее укажите субъект, объект, доверенную границу, разрешённый побочный эффект и сигнал нарушения. Для этого материала артефакт решения — матрица role / read / update / auth-stage / agent-dial / recreate-count / HTTP-class. Он не содержит токены, IP, содержимое файлов или персональные данные; достаточно классов результата, счётчиков и digest тестового состояния.
Поставьте обратимый минимальный опыт
Соберите обратимый стенд: in-memory RBAC fixtures viewer/editor и fake agent с counters dial/recreate; контейнеры не запускаются. Затем для каждой роли вызвать handler с одним workspace, сравнить решение, порядок authorization и оба счётчика побочных эффектов. Используйте минимальные синтетические значения, запрет внешней сети, отдельный temp root и эталон штатного пути, который проходит тот же код без пограничного условия. Перед опытом внесите в карточку digest fixture, версию и timeout, после — digest состояния и cleanup result. Не переносите пример на production и не увеличивайте нагрузку ради наглядности. Когда компонент нельзя подменить или изолировать, ограничьтесь статической проверкой patch/release и отложите runtime-подтверждение.
Сведите наблюдения в матрицу решения
Наблюдение классифицируйте по заранее заданному правилу, а не по впечатлению от лога. Защитный исход: viewer получает deny до dial; editor проходит и ровно один раз вызывает recreate; соседний delete-handler даёт тот же policy result. Для всякого ряда в «матрица role / read / update / auth-stage / agent-dial / recreate-count / HTTP-class» сохраните expected и observed, а также точную стадию отказа: parse, validate, authorize, allocate, open, mutate или cleanup. Ошибка до опасного действия и ошибка после него — разные результаты. Normal-control обязан доказать, что тест не сломан целиком. Повторите fixture не менее двух раз только в пределах локального бюджета: одинаковый result class важнее длинного stdout.
Остановитесь при первом выходе за границу
Примените stop-rule без торга: остановиться при реальном container runtime, отсутствии rollback fixture или если отказ происходит уже после побочного эффекта. Вторичные красные флаги — изменение объекта вне temp, неожиданный сетевой вызов, рост памяти, privilege prompt, необратимая запись, расхождение digest или отсутствие эталон штатного пути. При первом таком флаге завершите процесс, сохраните лишь обезличенную матрицу и верните стенд к исходному состоянию. Не публикуйте payload, реальные конфиги и подробности чужой системы. Severity не разрешает расширять тест: цель — подтвердить защитный контракт с минимальным воздействием.
Передайте поддержке минимальный пакет
Для владельца компонента подготовьте короткий пакет: ghsa-jqj2-x4c5-jfxm, Coder Devcontainer, 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 | github.com/coder/coder/v2 < 2.29.17; first patched 2.29.17», описание fixture без чувствительных значений, матрица role / read / update / auth-stage / agent-dial / recreate-count / HTTP-class, эталон штатного пути, stop-rule, cleanup proof и ссылки на advisory/upstream. Отдельно отметьте unknown: reachability, vendor backport, runtime configuration и наличие compensating control. Решение может быть только одним из трёх: not-applicable с доказательством, update/test по утверждённому окну или blocked до безопасного стенда. Так поддержка получает минимальные данные для воспроизведения, а публичный материал не гарантирует индексацию, позиции, универсальную защищённость или результат на чужой инфраструктуре.
Свяжите исправление с механизмом Coder Devcontainer
Для Coder Devcontainer свяжите исправление именно с механизмом «явная ActionUpdate-проверка до destructive recreate и до соединения с agent», а не только с номером релиза. В changelog или diff найдите изменение, которое делает истинным результат «viewer получает deny до dial; editor проходит и ровно один раз вызывает recreate; соседний delete-handler даёт тот же policy result», и сопоставьте его с диапазоном «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 | github.com/coder/coder/v2 < 2.29.17; first patched 2.29.17». Затем повторите fixture «in-memory RBAC fixtures viewer/editor и fake agent с counters dial/recreate; контейнеры не запускаются» на текущем и кандидатном артефакте в одинаковой изоляции; сравнивайте «матрица role / read / update / auth-stage / agent-dial / recreate-count / HTTP-class», а не произвольные строки лога. Если vendor backport меняет номер версии, сохраните commit/diff provenance и сборочный digest. План возврата должен восстанавливать предыдущий тестовый артефакт, но не возвращать production к заведомо сомнительной версии. Критерий приёмки для этой отдельной боли — viewer получает deny до dial; editor проходит и ровно один раз вызывает recreate; соседний delete-handler даёт тот же policy result; критерий прекращения — остановиться при реальном container runtime, отсутствии rollback fixture или если отказ происходит уже после побочного эффекта. Пока оба критерия не доказаны, статус обозначьте blocked или unknown, не подменяя результат предположением.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт, privacy-ограничения и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-jqj2-x4c5-jfxm проверено 2026-08-31
- Upstream-репозиторий Coder Devcontainer проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.