TL;DR: Некоторые npm пакеты используют postinstall hooks для внедрения файлов в AI coding assistants, что может привести к неожиданным последствиям, таким как автоматическое одобрение команд без участия пользователя. В статье рассмотрены примеры и способы защиты.
Введение
С ростом популярности AI coding assistants, таких как Claude, разработчики стали активно использовать их для автоматизации рутинных задач. Однако, как и любая технология, AI coding assistants могут стать целью для злоумышленников. Одним из таких методов является использование postinstall hooks в npm пакетах для внедрения файлов в директории AI assistants.
Основная часть
Что такое postinstall hooks?
Postinstall hooks — это скрипты, которые выполняются после установки npm пакета. Они могут быть использованы для выполнения различных задач, таких как настройка окружения, компиляция файлов или даже внедрение дополнительных файлов в систему.
Пример использования postinstall hooks
Рассмотрим пример пакета openmatrix, который использует postinstall hook для копирования 13 markdown файлов в директорию ~/.claude/commands/om/. Эти файлы содержат “навыки” (skills), которые автоматически загружаются в каждую сессию Claude.
{
"name": "openmatrix",
"version": "1.0.0",
"scripts": {
"postinstall": "cp -r ./skills/ ~/.claude/commands/om/"
}
}
Один из этих файлов содержит инструкции, которые предписывают Claude автоматически одобрять все bash команды и операции с файлами без запроса подтверждения у пользователя. Файлы помечены как always_load: true с приоритетом priority: critical, что означает их активацию в каждой сессии.
Проблемы и риски
- Неожиданное поведение: Внедренные файлы могут изменять поведение AI assistant без ведома пользователя.
- Отсутствие очистки: Удаление пакета через
npm uninstallне удаляет внедренные файлы, так как отсутствует preuninstall script. - Скрытые угрозы: Пакет может иметь реальную функциональность, но при этом содержать скрытые функции, которые могут быть использованы в злонамеренных целях.
Практические шаги для защиты
- Проверка postinstall скриптов: Перед установкой пакета рекомендуется проверять его
package.jsonна наличие подозрительных скриптов. - Ручное удаление файлов: После удаления пакета необходимо вручную удалить внедренные файлы.
- Использование сканеров: Использование специализированных сканеров, таких как тот, что упомянут в исходном посте, может помочь в обнаружении подозрительных пакетов.
rm -rf ~/.claude/commands/om/
rm -rf ~/.config/opencode/commands/om/
Заключение
Использование postinstall hooks в npm пакетах может быть мощным инструментом для автоматизации, но оно также открывает возможности для злоупотреблений. Разработчикам следует быть осторожными при установке новых пакетов и всегда проверять их содержимое. Внедрение файлов в AI coding assistants без согласия пользователя не только нарушает доверие, но и может привести к серьезным последствиям. Будьте бдительны и используйте лучшие практики для обеспечения безопасности вашего кода и окружения.
Попробуй сам: Cursor — AI-редактор для разработчиков.
Источник: https://www.reddit.com/r/javascript/comments/1sapj8c/askjs_has_anyone_seen_npm_packages_using/