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-конвейер.
Проверьте себя
1. Почему опасно применять обновление без проверки цифровой подписи?
AОбновление будет медленным
BЗлоумышленник может подсунуть подменённую вредоносную версию
CУвеличится размер приложения
DНичего страшного
2. В чём риск десериализации недоверенных данных?
AДанные займут много памяти
BСпециально сформированный объект может привести к выполнению нежелательного кода или подмене состояния
CДесериализация всегда безопасна
DЗамедлится сеть