## OWASP - Что такое OWASP - Основные проекты OWASP: Top 10, WSTG и ASVS - Обзор OWASP Top 10 - A01 Ошибки разграничения доступа - A02 Ошибки при использовании криптографии - А03 Инйекции - А04 Небезопасный дизайн - А05 Ошибки настроек подсистем защиты - А06 Уязвимые и устаревшие компоненты - A07 Ошибки аутентификации и авторизации - A08 Проблемы с контролем целостности данных и приложений - A09 Логирование и мониторинг - A10 Атаки на доверие (SSRF) ## Что такое OWASP Проект, который собирает топ 10 рисков для веб-приложений и способов их минимизации. На базе проекта существуют рекомендации и наборы справочных материалов, которые рассказывают о методах тестирования и предотвращения атак на веб-приложения. ![](https://hackmd.io/_uploads/SkWcVQs5n.png) ## Основные проекты OWASP: Top 10, WSTG и ASVS Проекты являются флагманскими с точки зрения создания процессов безопасной разработки. OWASP Top 10 - набор рисков ## Обзор OWASP Top 10 ### A01 Ошибки разграничения доступа Здесь перечислены основные проблемы с разграничением доступа. Проблемы позволяют раскрывать конфиденциальную информацию, которую обрабатывает приложение. ![](https://hackmd.io/_uploads/H1rEDXic2.png) Примеры уязвимостей: - Нарушение принципа наименьшего количества привилегий - Обход механизмов проверки авторизации, может быть осуществлено тривиальным изменением адреса или заголовка при запросе - Доступ к данным чужого аккаунта - Получения доступа к API без предоставления токена - Манипуляция механизмов авторизации через модификацию идентификаторов сессии - Неверная конфигурация CORS ### A02 Ошибки при использовании криптографии ![](https://hackmd.io/_uploads/S1_x_Qjc2.png) Собрание основных проблем, которые возникают при использовании криптографии. Нужно помнить несколько простых принципов: - не создавать новых алгоритмов - не использовать смысловые пароли - не использовать устаревшие алгоритмы - не шифровать всё подряд - сделать разбиение информации по критичности - безопасно хранить ключевую информацию - следить за параметрами приложений, которые отвечают за защиту соединений ### А03 Инйекции ![](https://hackmd.io/_uploads/SkTU2r2qn.png) Большой раздел, который включает в себя львиную долю критических уязвимостей. Уязвимости позволяют измениять информацию, с которой работает приложение и так же позволяют полностью скомпромитировать приложение и всю его инфраструктуру. Происходят из-за особенностей работы технологий веба. ### А04 Небезопасный дизайн ![](https://hackmd.io/_uploads/Bkn93rn5h.png) Создание программного обеспечения, которое не просто создается под функционал, но еще учитывает модель угроз. На этапе проектирования функционала закладывают механизмы для предотвращения атак на приложение. ### А05 Ошибки настроек подсистем защиты ![](https://hackmd.io/_uploads/BJmanrncn.png) Уязвимости, которые появляются в силу того, что приложения сегодня очень сложный набор конфигов и файлов, которые обеспечивают работу алгоритма. Поэтому как в самом приложении так и в его конфигурации могут возникнуть проблемы, которые могут быть использованы для комрометации. Примеры: - не выставленные заголовки безопасности на сервере - не проставленные фильтры для загрузки файлов ### А06 Уязвимые и устаревшие компоненты ![](https://hackmd.io/_uploads/Sk59TB3qn.png) Проблемы, которые появились из-за пакетных менеджеров и сложных приложений, которые переиспользуют функциональность операционной системы или других приложений. Могут быть большой проблемой, так как эксплойты для таких компонентов, обычно находятся в общем доступе и представляют собой удобные инструменты для проведения атак с наименьшим приложением сил. ### A07 Ошибки аутентификации и авторизации Проблемы с основным механизмом, который нужен для разграничения доступа пользователей. Проблемы могут быть: - уязвимы для проведения атак грубой силы - уязвимы для автоматического перебора - используются уязвимые методы для восстановления паролей - использование дефолтных логинов и паролей - отсутствующая мультифакторная аутентификация - переиспользование идентификаторов от старых сессий - отсутствие механизмов инвалидации пользовательских идентификаторов ### A08 Проблемы с контролем целостности данных и приложений ![](https://hackmd.io/_uploads/S1xgRH35n.png) Набор уязвимостей, которые приводлят к изменению исходного алгоритма приложения за счет изменения объектов языка программирования во время работы приложения. Наиболее популярный вариант уязвимости - небезопасная десериализация. ### A09 Логирование и мониторинг ![](https://hackmd.io/_uploads/BkJJy8nch.png) Проблемы с механизмом логирования и мониторинга системы, где работает приложение. Логирование в большинстве случаев нужно для того чтобы можно было отслеживать аномалии в работе приложения, а так же вести расследование инцидентов. Поэтому проблемы в этой категории, - отсутствие событий, которые отражают ключевые действия пользователей в системе - нет генерации проблем и предупреждений - нет мониторинга аномалий - логи хранятся рядом с приложением на одном серевере - нет триггеров для отправки уведомлений об инциденте для администратора и отдела безопасности ### A10 Атаки на доверие (SSRF) ![](https://hackmd.io/_uploads/HykZkLhq3.png) Тип проблем, который использует доверительные отношения между приложением и инфраструктурой, где это приложение работает. Может быть использовано как основной вектор атаки из внешних систем во внутренние. Появляется во всех механизмах, где есть обработка URL. ## WSTG OWASP Web Security Testing Guide - набор практик для проведения тестрования. Включает в себя основной проект с инструкциями - https://github.com/OWASP/wstg И CheckList - https://github.com/OWASP/wstg/tree/master/checklists ## ASVS ![](https://hackmd.io/_uploads/SJatrmi5h.png) Стандарт описывает подходы к созданию, тестированию, созданию механизмов безопасности, включая особенности архитектуры. Позволяет провести построение и оценку SSDLC. ### Дополнительные материалы - https://ginandjuice.shop - https://owasp.org/Top10/