Разбор реальной атаки на разработчика через ZIP-архив с репозиторием: злоумышленники использовали Git hooks и filters для скрытого запуска кода при обычных командах вроде git status.
Недавно мне в LinkedIn написал рекрутер компании Cryptic Heaven с предложением работы Smart Contract Developer. Компания якобы разрабатывала финансовую систему для криптовалютных кредитных карт. После согласия узнать детали прислали ссылку на ZIP-архив Contract-2026.zip с «договором», «вакансией» и «исходным кодом» в виде полноценного Git-репозитория с директорией .git.
Внутри архива README.md предлагал переключаться между ветками doc, job и codebase для изучения материалов. Документы оказались пустыми шаблонами, но главное скрывалось в настройках Git. В файле .git/config был изменен параметр core.hooksPath, перенаправляющий хуки в нестандартную директорию .git/objects/interrupt/, где лежал хук post-checkout с командой git status.
Вторая часть ловушки — настроенный в том же конфиге Git filter «ltr», примененный ко всем файлам через .git/info/attributes (* filter=ltr). Параметр clean ссылался на исполняемый файл .git/ltr. При переключении ветки срабатывал хук post-checkout, запускавший git status, что в свою очередь триггерило фильтр для обработки файлов и выполнение вредоносного кода без явного запуска скриптов жертвой.
Атака демонстрирует опасность работы с недоверенными локальными репозиториями: достаточно открыть проект в IDE или выполнить безобидную команду, чтобы сработали встроенные механизмы Git. Защита — избегать ZIP-архивов с .git, использовать git clone из проверенных источников, проверять .git/config на подозрительные настройки hooksPath и filter.




