Зависимости, логирование и процессы
Безопасность - не разовая проверка. Эти пункты касаются кода, который ты не писал (зависимости), и привычек, которые держат приложение в безопасности после запуска.
Чек-лист
- Фиксируй и сканируй зависимости. Коммить lockfile и запускай сканер уязвимостей (и аудит своей платформы) в CI. Обновляй пакеты с известными уязвимостями.
- Следи за галлюцинированными пакетами. ИИ-инструменты иногда импортируют пакет, которого не существует; атакующие регистрируют такие имена с вредоносным кодом ("slopsquatting"). Перед установкой убедись, что каждая зависимость - настоящая и нужная.
- Не запускай недоверенный код и build-шаги вслепую. Скачанный репозиторий или сгенерированный postinstall-скрипт могут выполнить произвольный код. Проверяй перед запуском.
- Логируй события безопасности, а не секреты. Записывай входы, неудачи, срабатывания rate limit и действия админов для аудита. Никогда не логируй пароли, токены, ключи или полные номера карт.
- Обрабатывай ошибки без утечек. Перехватывай исключения, возвращай общее сообщение, а стектрейсы и запросы держи только в серверных логах.
- Держи статический анализ в CI. Инструменты вроде Semgrep ловят ошибки инъекций и авторизации до слияния.
- Тестируй как атакующий. Набор тестов должен включать некорректные данные и случаи неавторизованного доступа, а не только happy path. После прохождения набора запусти black-box сканер (например, OWASP ZAP) против развёрнутого URL.
- Получи независимую проверку. Самоаудит пропускает вещи, особенно слепые пятна самого автора. Перед широким запуском закажи внешний пентест и подумай о сопоставлении со стандартом вроде OWASP ASVS.
- Для ИИ-функций тестируй слой модели. Если твоё приложение помещает недоверенный контент в промпт, проверь его red-team'ом на prompt injection и на утечку данных между пользователями или тенантами. Настоящая безопасность живёт в коде (ограничивай каждый инструмент и запрос текущим пользователем), а никогда в инструкциях промпта.
- Имей путь назад. Храни бэкапы, из которых ты реально восстанавливался, и план ротации секретов и отзыва сессий на случай утечки.
Как тестировать
- Запускай аудит зависимостей и сканирование секретов в CI и читай вывод.
- Направь black-box сканер на staging.
- Попроси того, кто не писал код, попробовать его сломать.