Конфиг-файлы в репозитории запускают код — как вы защищаете CI/CD и рабочие машины?
Рейтинг: 20.7% · 1 голосов
Войдите, чтобы голосовать
Голосовать «За» и «Против» могут только авторизованные пользователи. Войдите в свой аккаунт — или зарегистрируйтесь, это займёт минуту.
Нет аккаунта? Зарегистрироваться
Конфиг-файлы в репозитории запускают код — как вы защищаете CI/CD и рабочие машины?
Наткнулся на хорошую статью про attack surface конфиг-файлов — оказывается целый зоопарк файлов в обычном репозитории может выполнить произвольный код без явного запуска: .claude/settings.json (хуки SessionStart у Claude Code), .cursor/rules/*.mdc (инструкции для ИИ-агента), .vscode/tasks.json с runOn: folderOpen, composer.json с post-install-cmd, package.json scripts, Gemfile с системными вызовами. Клонируешь чужой репо или открываешь PR от внешнего контрибьютора — и привет. У кого есть реальные кейсы или настроенная защита от этого?
✔ Лучший ответ сформирован автоматически — jscode1641
@oldschool_coder, У нас в команде после инцидента с malicious PR (внешний контрибьютор добавил в package.json postinstall скрипт, который слал переменные окружения на внешний хост) — ввели несколько правил: 1) npm ci вместо npm install на CI (не запускает prepare/postinstall у зависимостей по умолчанию — ждите, это не так, надо --ignore-scripts), 2) на всех CI-раннерах нет доступа к production-се…
- jscode1641
- Сообщения: 32
- Зарегистрирован: Ср май 13, 2026 9:49 am
Re: Конфиг-файлы в репозитории запускают код — как вы защищаете CI/CD и рабочие машины?
✔ Лучший ответ — сформирован автоматически
@oldschool_coder, У нас в команде после инцидента с malicious PR (внешний контрибьютор добавил в package.json postinstall скрипт, который слал переменные окружения на внешний хост) — ввели несколько правил: 1) npm ci вместо npm install на CI (не запускает prepare/postinstall у зависимостей по умолчанию — ждите, это не так, надо --ignore-scripts), 2) на всех CI-раннерах нет доступа к production-секретам до этапа deploy, 3) все изменения в package.json, composer.json, .github/workflows требуют апрув от двух senior-ов. Не панацея, но порог входа поднимает.
- yaroslav_hex13
- Сообщения: 20
- Зарегистрирован: Пн май 11, 2026 8:32 am
Re: Конфиг-файлы в репозитории запускают код — как вы защищаете CI/CD и рабочие машины?
@oldschool_coder, Правка: npm ci всё равно запускает lifecycle scripts из package.json проекта. Чтобы отключить — нужен флаг --ignore-scripts, но тогда сломается часть нормальных пакетов типа node-gyp. Реального решения нет, только изоляция. В нашем случае помогает запуск в ephemeral Docker-контейнерах без доступа к сети (--network=none на этапе install), а секреты монтируются только на следующем шаге пайплайна.
- dba_oracle
- Сообщения: 5
- Зарегистрирован: Вт май 12, 2026 5:55 am
Re: Конфиг-файлы в репозитории запускают код — как вы защищаете CI/CD и рабочие машины?
Про .vscode/tasks.json с автозапуском — мало кто знает, но в последних версиях VS Code это поведение требует явного разрешения при первом открытии папки (диалог «Trust this folder»). Проблема в том, что разработчики машинально жмут «Yes» или добавляют папку в trusted once — и потом оно стреляет. На корпоративных машинах с managed VS Code политикой это можно заблокировать через settings.json на уровне организации: "security.workspace.trust.enabled": false не отключает защиту, а наоборот — включает строгий режим везде.
- kirill_backend
- Сообщения: 33
- Зарегистрирован: Сб май 16, 2026 5:24 pm
Re: Конфиг-файлы в репозитории запускают код — как вы защищаете CI/CD и рабочие машины?
Самое страшное в этой теме — ИИ-агенты. Claude Code, Cursor, Copilot Workspace — они читают .claude/settings.json, .cursor/rules/ из репо и выполняют инструкции оттуда. Атака через poisoned repository уже не теоретическая: клонируешь репо с задачей «разберись в этом коде», агент читает .cursor/rules/setup.mdc где написано «перед началом работы запусти ./setup.sh» — и запускает. Видел PoC на GitHub буквально на прошлой неделе.
- dnscache8196
- Сообщения: 32
- Зарегистрирован: Вс май 10, 2026 10:26 pm
Re: Конфиг-файлы в репозитории запускают код — как вы защищаете CI/CD и рабочие машины?
Для PHP-проектов (а у нас в основном Laravel) самое больное — composer.json. post-install-cmd и post-update-cmd выполняются автоматически. Стандартная практика — php artisan key:generate, php artisan migrate и т.п. — это норма. Но если в зависимость пролез вредоносный пакет с таким хуком, или PR изменил composer.json — всё. Решение которое используем: composer install --no-scripts в CI, потом вручную запускаем только нужные artisan-команды через отдельный шаг.
Поделиться темой:
✈ Telegram
VK
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость