# Module #8
# Что такое OWASP
Непрофитабельный проект, предоставляет большое количество гайдов для "безопасного" написания кода.
Есть гайды для тестирования, проектирования и проведения оценки реализации SDL.
# OWASP MSTG и ASVS
[MSTG](https://github.com/OWASP/owasp-mstg) - Mobile Testing Guide. Набор инструкций для тестирования популярных мобильных платформ. База знаний, которая поддерживается community. Показаны примеры использования инструментов и описаны некоторые особенности мобильных платформ.
[ASVS](https://github.com/OWASP/ASVS/tree/v4.0.3#latest-stable-version---403) - Application Security Verification Standart. Стандарт, который не только отвечает на вопросы "Что тестировать?" и "Как тестировать?", но и дает возможность оценить и исправить недостатки, которые могли бы быть обнаружены в рамках проверки.
Стандарт определяет 3 уровня проверки безопасности:
1. Низкий уровень доверия, проводится при тестировании на проникновение.
2. Уровень, который используют для приложений, которые содержат конфидентиальные данные.
3. Уровень, который используется для тестирования приложений, которые содержат данные с высокой стоимостью.
Стандарт ориентируют для создания чек листов безопасного программирования.

# OWASP Mobile Top-10
[Список](https://owasp.org/www-project-mobile-top-10/) рисков, которые могут возникать в мобильных приложениях.
Список аналогичен списку рисков, которые существуют для веб-приложений. Содержит список типов уязвимостей, которые могут привести к нарушению безопасности данных, которые обрабатываются приложением.
## M1 - Обход архитектурных ограничений
Категория, которая включает неверное использование платформенных функций и API. Включает в себя работу с привелегиями, работой с биометрией, Keychain и других механизмов.
## M2 - Небезопасное хранение данных
Категория включает в себя уязвимости, которые могут появится вследствии того, что при разработке приложение не учитывает окружение, которое используется для запуска. Чаще всего это уязвимости и недостатки в использовании примитивов шифрования для хранения данных.
## M3 - Небезопасная передача данных
Недостатки, которые возникают при передачи данных приложением. При этом могут использоваться различные среды передачи данных - мобильная сеть,Wi-Fi, Bluetooth.
## M4, M6 - Небезопасная аутентификация и авторизация
Уязвимости в механизмах авторизации, которые могут быть использованы для атаки на приложения.
## M5 - Слабая криптография
Уязвимости, которые могут быть использованы для доступа к данным приложения.
## M7 - Недостаточное качество кода приложений
Включает в себя недостатки, которые могут быть в коде. Недостатки заключаются в недостаточной санитизации данных. И использовании антипаттернов программирования.
## M8 - Модификация кода
Атака, которая позволяет провести модификацию оригинального приложения.
## M9 - Обратная разработка
Недостатки, которые позволяют восстановить полностью или частично исходный код приложения или его алгоритм.
## M10 - Скрытый функционал
Функционал, который может быть использован для компрометации пользовательских данных. Обычно остаются функции, которые использовались для отладки алгоритма.