A08: Software and Data Integrity Failures
Если вы доверяете коду и данным без проверки их источника и целостности — вас можно обмануть.
Software and Data Integrity Failures — нарушения целостности: приложение полагается на обновления, плагины или данные без проверки их подлинности и неизменности.
Категория появилась в OWASP 2021 и охватывает доверие к коду и данным, которые могли быть подменены по пути к вам.
Непроверенные обновления и зависимости
Если приложение автоматически скачивает обновление или зависимость без проверки цифровой подписи, злоумышленник, перехвативший канал или взломавший зеркало, может подсунуть вредоносную версию. Отсюда важность подписи и проверки контрольных сумм.
Небезопасная десериализация
Десериализация — восстановление объекта из сохранённого представления (строки, байтов). Если приложение десериализует данные, пришедшие от пользователя, без проверки, специально сформированный объект может привести к выполнению нежелательного кода или подмене состояния. Концептуально это та же беда, что инъекция: недоверенные данные превращаются в исполняемую структуру.
Целостность CI/CD-конвейера
Конвейер сборки и деплоя — лакомая цель: подмена шага сборки или зависимости отравляет итоговый артефакт, который попадёт ко всем пользователям. Поэтому к CI/CD применяют те же принципы: least privilege, проверка артефактов, контроль доступа.
Как защищаться
- Проверяйте цифровые подписи и контрольные суммы обновлений и зависимостей.
- Не десериализуйте недоверенные данные; используйте простые форматы (JSON) и строгую валидацию схемы.
- Берите зависимости из доверенных репозиториев, фиксируйте версии и их хеши (lock-файлы).
- Защищайте CI/CD: ограниченные права, ревью изменений конвейера, проверяемые артефакты.
Получили обновление -> проверили подпись/хеш -> только потом применили
Нет совпадения подписи -> отклонить, не устанавливатьЧастые ошибки разработчиков
- Скачивают и запускают скрипты установки без проверки источника и целостности.
- Десериализуют пользовательский ввод «родным» небезопасным механизмом языка.
- Дают CI/CD-конвейеру избыточные права и не ревьюят его изменения.
Итог
- Целостность кода и данных нужно проверять, а не предполагать.
- Подписи и контрольные суммы защищают обновления и зависимости.
- Не десериализуйте недоверенные данные; берегите CI/CD-конвейер.