Miri сохраняет переменные окружения в кеш — секреты утекают в pull request'ы
21.09.2026Команда реагирования на проблемы безопасности Rust получила сообщение: Miri сохраняет все переменные окружения в каталог target/, из-за чего секреты оседают в кеше сборки.
Почему это утечка
Само по себе сохранение окружения в файлы — не уязвимость. Проблема возникает из-за устройства кеша GitHub Actions: ветка может писать в кеш, а pull request — читать из него.
Тот, кто раньше прислал изменение, может запустить сборку, извлечь из кеша секреты и скрыть следы, отправив второй коммит в тот же pull request. GitHub прячет перезаписанные коммиты, а журналы сборки и сами коммиты удаляются через несколько месяцев.
Что исправлено
Теперь Miri сохраняет только переменные, начинающиеся с CARGO_, кроме тех, что оканчиваются на _TOKEN, и переменную расположения выходных файлов сборки. Исправление попадёт в ближайшую ночную сборку от 22 сентября.
Что найдено проверкой
Команда просканировала экосистему и нашла один заведомо уязвимый репозиторий, а ещё семь — про которые нет данных, но которые стоит проверить. С их авторами связались.
Кто уязвим
Условия складываются так: сборка запускает cargo miri, у шага есть доступ к секретам, кешируется каталог target/, и кеш доступен pull request'ам.
Все четыре условия нужны одновременно.
Что делать
- отключить кеширование для этого шага;
- сузить секреты до шагов без Miri, либо временно отключить Miri;
- после этого очистить кеш и сменить утекавшие секреты.
Последний пункт обязателен: очистка кеша убирает источник, но не отменяет того, что секрет уже был показан.
Вывод шире конкретного случая
Утечка происходит не из кода, а из того, как устроена сборка. Любая утилита, которая записывает окружение в артефакты, делает кеш target/ местом утечки.
Общее правило формулируется прямо: если шаг пишет в общий кеш, у него не должно быть секретов в окружении.
Оригинал
GitHub Actions leaking secrets when Miri output is cached от 21 сентября 2026 года
Упоминаний: 1 · Просмотров: 8