В Git обнаружена методика сокрытия истории изменений
20/05/25
Речь идёт не о новой уязвимости, а о функциональности, которая при неправильном использовании может стать настоящим инструментом манипуляции — технике, получившей название Commit Stomping. Она позволяет изменить временные метки коммитов в репозитории, чтобы скрыть или исказить реальную последовательность событий, вводя в заблуждение при аудите, расследовании инцидентов или анализе кода, пишет Securitylab.
Злоумышленник может, например, внести вредоносный код и задним числом «вписать» его в старый релиз, указав дату, которая органично вписывается в прошлую разработку. Таким образом, вредоносный фрагмент будет выглядеть как легитимная часть старой версии, затрудняя поиск причины уязвимости и мешая точно определить момент внедрения.
Признаки того, что в репозитории может быть использован Commit Stomping, включают одинаковые метки времени на разных коммитах, существенные расхождения между датами автора и коммиттера, появление новых коммитов с задним числом или несовпадение метаданных с логами CI/CD. При этом, если злоумышленник проявил осторожность и использовал умеренные временные смещения, обнаружить вмешательство становится крайне сложно без дополнительных источников информации.
Особую тревогу метод вызывает в контексте цепочек поставок программного обеспечения, когда репозитории открыты и используются множеством сторон. Малозаметная подмена коммита может пройти незамеченной и попасть в финальную сборку, а попытки расследовать подобное вмешательство будут затруднены ложной хронологией.
Чтобы защититься от таких манипуляций, рекомендуется:
- Внедрить проверку подписанных коммитов через GPG или SSH;
- Вести внешние логирования поступающих коммитов в CI/CD или на стороне Git-сервера;
- Использовать зеркала репозиториев на неизменяемом хранилище;
- Запретить force-push на защищённые ветки;
- Следить за аномалиями в хронологии коммитов, особенно при аудите кода или выпуске релизов.
Commit Stomping — это не ошибка, и не уязвимость. Это логичное следствие архитектуры Git, построенной на гибкости и доверии к разработчику. Однако в эпоху, когда контроль за исходным кодом стал частью периметра безопасности, этого доверия уже недостаточно. Без дополнительных слоёв защиты история изменений перестаёт быть источником правды и превращается в потенциальный вектор обмана.