A08:2021- Нарушение целостности данных и программного обеспечения
Содержание:
Обзор
Новая категория для 2021 года, посвященная принятию предположений, связанных с обновлениями программного обеспечения, критическими данными и CI/CD конвейерами без проверки на целостность. Одно из самых высоких по весу воздействий из данных Common Vulnerability and Exposures/Common Vulnerability Scoring System (CVE/CVSS). Известные CWE: CWE-829: Включение функций из Ненадежной сферы управления, CWE-494: Загрузка кода без проверки целостности и CWE-502: Десериализация ненадежных данных.
Описание
Сбои в целостности программного обеспечения и данных связаны с кодом и инфраструктурой, которые не защищают от нарушений целостности. Примером этого является ситуация, когда приложение полагается на плагины, библиотеки или модули из ненадежных источников, хранилищ и сетей доставки контента (CDN). Небезопасный конвейер CI/CD может привести к несанкционированному доступу, вредоносному коду или компрометации системы. Наконец, многие приложения теперь включают функцию автоматического обновления, когда они загружаются без достаточной проверки целостности и применяются к ранее доверенному приложению. Злоумышленники потенциально могут загружать свои собственные обновления для распространения и запуска на всех установках. Другим примером является ситуация, когда объекты или данные кодируются или сериализуются в структуру, которую злоумышленник может увидеть и изменить, уязвимую для небезопасной десериализации.
Как предотвратить
- Используйте цифровые подписи или аналогичные механизмы для проверки того, что программное обеспечение или данные получены из ожидаемого источника и не были изменены.
- Убедитесь, что библиотеки и зависимости, такие как npm или Maven, используют надежные хранилища. Если у вас более высокий профиль риска, подумайте о размещении внутреннего проверенного репозитория с известными качествами.
- Убедитесь, что средство обеспечения безопасности цепочки поставок программного обеспечения, такое как проверка зависимостей OWASP или OWASP Cyclone DX, используется для проверки того, что компоненты не содержат известных уязвимостей.
- Убедитесь, что существует процесс проверки изменений кода и конфигурации, чтобы свести к минимуму вероятность того, что вредоносный код или конфигурация могут быть внедрены в ваш программный конвейер.
- Убедитесь, что ваш конвейер CI/CD имеет надлежащее разделение, конфигурацию и контроль доступа, чтобы обеспечить целостность кода, проходящего через процессы сборки и развертывания.
- Убедитесь, что неподписанные или незашифрованные сериализованные данные не отправляются ненадежным клиентам без какой-либо проверки целостности или цифровой подписи для обнаружения подделки или воспроизведения сериализованных данных.
Примеры сценариев атак
Сценарий №1 Обновление без подписи: Многие домашние маршрутизаторы, телевизионные приставки, прошивки устройств и другое не проверяют обновления с помощью подписанной прошивки. Неподписанная прошивка становится все большей мишенью для злоумышленников и, как ожидается, будет только ухудшаться. Это вызывает серьезную озабоченность, так как часто нет никакого механизма для исправления, кроме как исправить в будущей версии и подождать, пока предыдущие версии устареют.
Сценарий №2 Вредоносное обновление SolarWinds: Известно, что национальные государства атакуют механизмы обновления, причем недавней заметной атакой является атака SolarWinds Orion. У компании, разрабатывающей программное обеспечение, были безопасные процессы сборки и обновления целостности. Тем не менее, их удалось подорвать, и в течение нескольких месяцев фирма распространяла целенаправленное вредоносное обновление более чем 18 000 организаций, из которых пострадало около 100. Это одно из самых далеко идущих и серьезных нарушений такого рода в истории.
Сценарий №3 Небезопасная десериализация: Приложение React вызывает набор микросервисов Spring Boot. Будучи функциональными программистами, они старались обеспечить неизменность своего кода. Решение, которое они придумали, заключается в сериализации состояния пользователя и передаче его туда и обратно с каждым запросом. Злоумышленник замечает подпись "rO0" Java object (в base64) и использует средство Java Serial Killer для удаленного выполнения кода на сервере приложений.