Безопасная проверка mise credential config по ghsa-29hf-rm4x-xxph: применимость, обратимый опыт для границы «project-local credential command is inert until config trust is established», матрица результата и stop-rule без production-данных.
Отделите advisory от установки mise credential config
Сначала отделите факт advisory от гипотезы о своей установке mise credential config. Зафиксируйте package source, исполняемая среда version, build digest, feature/config reachability и роль, которая достигает ветви. GitHub Reviewed Advisory сообщает «Mise's local credential_command executes untrusted config», даты 2026-06-23/2026-06-23 и границы «mise >= 2026.3.15, < 2026.6.4; first patched 2026.6.4». Это само по себе не устанавливает affected code в конкретной сборке: fork и vendor backport требуют commit provenance. Пока provenance или reachability неизвестны, статус только unknown, без вывода об эксплуатации, популярности или ущербе.
Назовите отдельный защитный invariant
Опишите один узкий invariant: project-local credential command is inert until config trust is established. Отдельная боль пользователя: untrusted repository config reaches shell execution while resolving provider credentials. Укажите субъект, объект, trust boundary, решение policy и самый ранний чувствительный side effect. Pass-критерий задайте заранее: untrusted yields blocked and executor-calls=0; trusted follows explicit operator policy. Он отличается от общего «ошибки нет»: защита обязана сработать до read, send, execute, write, cache commit, credential issue или process exit. Решающий артефакт — config-scope / trusted / command-present / executor-calls / decision; в нём нет имён, IP, содержимого файлов и персональных данных.
Проведите дифференциальный обратимый опыт
Создайте обратимый лаборатория: trusted/untrusted config objects and executor stub recording argv without starting a shell. Затем load settings and request credential resolution under both trust states. Все значения синтетические, сеть отключена либо loopback-only, filesystem ограничен mkdtemp, persistence — in-memory или rollback transaction. Добавьте positive control и boundary case, одинаковый timeout и deterministic ordering. До запуска зафиксируйте input digest и expected row; после — result class, counters, final-state digest и cleanup proof. Нагрузочный или эксплуатационный вариант не нужен и запрещён.
Прочитайте матрицу до side effect
Заполните матрицу «config-scope / trusted / command-present / executor-calls / decision» строка за строкой. Сопоставьте observed с правилом «untrusted yields blocked and executor-calls=0; trusted follows explicit operator policy», особой строкой отмечая stage решения и факт любого побочного эффекта. Positive control обязан пройти тот же код: иначе deny может означать сломанный лаборатория. Для гонки или cache/state темы изменяйте только детерминированный interleaving и повторяйте малое число раз. Green возможен, когда безопасный сценарий работает, пограничный отклонён раньше действия, а state digest соответствует ожидаемому.
Подтвердите механизм исправления
Проверьте patch provenance по смыслу: diff обязан реализовать «project-local credential command is inert until config trust is established», а не просто изменить номер релиза. На одном лабораторный сценарий сравните текущую и candidate build и зафиксируйте «config-scope / trusted / command-present / executor-calls / decision». Диапазон «mise >= 2026.3.15, < 2026.6.4; first patched 2026.6.4» используйте как фильтр, не как доказательство. Если update требует rollout, эта статья не разрешает production change: нужен отдельный контракт с backup, canary, readiness и rollback. Не обещайте, что один фикс закрывает весь класс риска или даёт поисковый итог.
Примените stop-rule и privacy boundary
Stop-rule: остановить опыт до shell, GitHub credential, cloned untrusted repository or home config. Также завершите опыт при внешнем адресе, real credential, privilege prompt, данных вне лабораторный сценарий, необратимой записи, росте ресурсов, отсутствии normal control или cleanup. Статус будет blocked, а не «почти прошёл». Для владельца компонента передайте ghsa-29hf-rm4x-xxph, mise credential config, version/build provenance, «mise >= 2026.3.15, < 2026.6.4; first patched 2026.6.4», sanitized «config-scope / trusted / command-present / executor-calls / decision», expected/observed, stop reason и прямые source URLs. Не публикуйте payload, чужие логи, конфиги и приватные ссылки.
Завершите деревом решения
Дерево решения для mise credential config: proven patched/non-affected build — not-applicable; недостижимая по документированной конфигурации ветвь — not-reachable; candidate build выполняет «untrusted yields blocked and executor-calls=0; trusted follows explicit operator policy» — ready-for-reviewed-update; наблюдается «untrusted repository config reaches shell execution while resolving provider credentials» — fail и эскалация владельцу. Иначе unknown. К каждому листу приложите один факт из «config-scope / trusted / command-present / executor-calls / decision» и criterion «остановить опыт до shell, GitHub credential, cloned untrusted repository or home config». Такой ответ самостоятельный: он решает конкретный intent через reversible test, matrix, red flags и минимальный support packet, а не размножает страницу заменой бренда.
Материал подготовлен редакцией VOne с помощью ИИ; даты, диапазоны, прямые ссылки, безопасный опыт, privacy-ограничения и отсутствие рекламных обещаний затем перепроверены по первичным источникам.
Источники и проверка
- GitHub Reviewed Advisory ghsa-29hf-rm4x-xxph проверено 2026-08-31
- Upstream-репозиторий mise credential config проверено 2026-08-31
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.