Уязвимость в Travis CI, приводящая к утечке ключей публичных репозиториев

В сервисе непрерывной интеграции Travis CI, предназначенном для тестирования и сборки проектов, разрабатываемых на GitHub и Bitbucket, выявлена проблема с безопасностью (CVE-2021-41077), позволяющая узнать содержимое конфиденциальных переменных окружения для любого публичного репозитория, использующего Travis CI. В том числе уязвимость позволяет узнать используемые в Travis CI ключи для формирования цифровых подписей, ключи доступа и токены для обращения к API.

Проблема присутствовала в Travis CI с 3 по 10 сентября. Примечательно, что информация об уязвимости была передана разработчикам 7 сентября, но в ответ была лишь получена отписка с рекомендацией использовать ротацию ключей. Не получив должной обратной связи исследователи связались с GitHub и предложили занести Travis в чёрный список. Проблема была устранена лишь 10 сентября после большого числа поступивших жалоб от разных проектов. После инцидента на сайте компании был опубликован более чем странный отчёт о проблеме, в котором вместо информирования о проблеме, содержалась лишь указанная вне контекста рекомендация циклично менять ключи доступа.

После возмущения сокрытием сведений, высказанным несколькими крупными проектами, в форуме поддержки Travis CI был опубликован более подробный отчёт, в котором предупреждалось, что владелец форка любого публичного репозитория через отправку pull-запроса мог инициировать процесс сборки и получить неавторизированный доступ к конфиденциальным переменным окружения исходного репозитория, выставляемым во время сборки на основе полей из файла “.travis.yml” или определяемым через web-интерфейс Travis CI. Подобные переменные хранятся в зашифрованном виде и расшифровываются только во время сборки. Проблема касалась только публично доступных репозиториев у которых есть форки (приватные репозитории не подвержены атаке).

Release. Ссылка here.