Как безопасно проверить Better Auth: device code привязывается к пользователю: точная версия, reachability, обратимый fixture, измеримые PASS/FAIL/Unknown и stop-rule без production-данных.
Граница проблемы: Better Auth: device code привязывается к пользователю
Самостоятельная пользовательская боль: любой authenticated session может approve/deny наблюдённый pending user code до legitimate user. Защитное правило для проверки сформулировано заранее: «как безопасно проверить что approve deny требует session user binding одноразовый transition и audience device consistency в better auth device authorization без production данных». GitHub Reviewed Advisory ghsa-cq3f-vc6p-68fh описывает: «Better Auth: Device authorization approve and deny accept any authenticated session while the user code is pending»; запись опубликована 2026-06-04 и обновлена 2026-06-09. Эти сведения подтверждают технический сигнал и upstream-контекст, но не доказывают наличие затронутой версии, достижимость пути, эксплуатацию конкретной системы или популярность запроса. Поэтому итог по локальной среде начинается как Unknown и меняется только после inventory, reachability и изолированного теста.
Сверьте версии и достижимость для better-auth-device-code-session-binding
Сначала отделите наличие пакета от достижимости затронутого пути. Boundary из reviewed record и прямого upstream-источника: «npm/better-auth >= 1.6.0, < 1.6.11; first patched 1.6.11». Разнесите состояния в таблице: компонента нет; версия вне диапазона; исправление backported; функция выключена; путь недостижим; provenance неясен; нужен fixture. Рабочий набор полей именно для этой темы: code state, session user, device, action, transition, resulting grant, audit. Banner, lockfile без resolved tree или совпадение имени пакета не являются доказательством. Если схема версий форка не сопоставима с upstream, оставьте Unknown и запросите build provenance вместо категоричного PASS.
Обратимый тест без production-данных: code state
Безопасный fixture: auth service test создаёт dummy pending code, owner session и second session; браузер/реальные device codes отсутствуют. До запуска запишите expected invariant, лимиты времени и памяти, допустимые side effects и способ полной очистки. Добавьте положительный control для штатного пути и отрицательный case, который меняет только одну проверяемую границу. Используйте фиктивные identifiers и временное состояние; токены, реальные адреса, пользовательские данные, рабочие конфиги и внешние цели исключены. После каждого case удалите temp-state и повторите малый control: он подтверждает, что отказ относится к механизму, а не к сломанному harness.
Зафиксируйте доказательство по полям audit
Артефакт проверки хранит только минимизированные поля: code state, session user, device, action, transition, resulting grant, audit. Для каждого поля отметьте источник: configuration, измерение, parser output или решение policy. Критерий PASS определён до запуска: second session не меняет code, owner control проходит ровно один раз. FAIL допустим только если запрещённый эффект наблюдается в изоляции, boundary и runtime-mode совпали, а оба controls дают ожидаемый результат. Во всех остальных случаях ставьте Unknown или Inconclusive. Не прикладывайте сырые логи: достаточно hash fixture, версии, обезличенной матрицы, результата controls и времени проверки.
Проверьте причинность вывода о как безопасно проверить что approve deny требует session user binding одноразовый transiti
Рецензент должен связать наблюдение «любой authenticated session может approve/deny наблюдённый pending user code до legitimate user» с конкретной границей «как безопасно проверить что approve deny требует session user binding одноразовый transition и audience device consistency в better auth device authorization без production данных», а не с похожим внешним симптомом. Попросите показать, где в resolved build применяется boundary «npm/better-auth >= 1.6.0, < 1.6.11; first patched 1.6.11», почему операция «auth service test создаёт dummy pending code, owner session и second session; браузер/реальные device codes отсутствуют» обратима и какие значения code state, session user, device, action, transition, resulting grant, audit получены измерением. Затем отдельно объясните, почему результат «second session не меняет code, owner control проходит ровно один раз» проверяет и отказ, и штатный control. Если хотя бы одно звено отсутствует, вывод возвращается в Unknown; severity advisory нельзя переносить на локальную установку автоматически.
Особенность механизма better-auth-device-code-session-binding
Pending device code принадлежит конкретному пользователю, а наличие любой authenticated session не должно давать право approve или deny. Создайте owner и second session, затем сравните state transition и resulting grant. Вторая сессия не меняет запись и не оставляет audit события успеха; owner control срабатывает один раз. Реальные user codes и публичный verification UI не участвуют.
Обновление, повторная проверка и граница остановки
Предпочтительное действие — перейти на исправленную upstream-ветку из boundary «npm/better-auth >= 1.6.0, < 1.6.11; first patched 1.6.11», затем повторить тот же fixture и штатный control. Временная мера допустима только если разрывает описанный механизм, имеет владельца, срок действия, наблюдаемый сигнал и проверяемый rollback. Обязательный stop-rule: не показывать реальные user codes и не проверять через публичный verification UI.. При его срабатывании эксперимент прекращают, не расширяя доступ и не повышая нагрузку. В обращение к maintainer включите provenance, feature state, матрицу полей и ссылки на reviewed advisory и прямой upstream-источник; эксплуатационные инструкции и данные реальной среды исключите.
Минимальный пакет для поддержки по better-auth-device-code-session-binding
Соберите короткую причинную карточку: боль — «любой authenticated session может approve/deny наблюдённый pending user code до legitimate user»; invariant — «как безопасно проверить что approve deny требует session user binding одноразовый transition и audience device consistency в better auth device authorization без production данных»; версия — «npm/better-auth >= 1.6.0, < 1.6.11; first patched 1.6.11»; операция — «auth service test создаёт dummy pending code, owner session и second session; браузер/реальные device codes отсутствуют»; поля — code state, session user, device, action, transition, resulting grant, audit; PASS — «second session не меняет code, owner control проходит ровно один раз». Добавьте hash теста, результат positive/negative controls, cleanup result и причину, по которой тест не касается внешней системы. Не включайте IP, токены, реальные имена, ключи, содержимое документов или полные логи. Если direct source подтверждает только release context, так и укажите: он не является доказательством локальной уязвимости. Граница остановки остаётся неизменной: не показывать реальные user codes и не проверять через публичный verification UI..
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые источники, безопасный fixture, privacy-границы и отсутствие рекламных обещаний затем перепроверены.
Источники и проверка
- GitHub Reviewed Advisory ghsa-cq3f-vc6p-68fh проверено 2026-08-31
- Прямой upstream-источник для Better Auth: device code привязывается к пользователю проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.