- PVSM.RU - https://www.pvsm.ru -
Open Web Application Security Project (OWASP) [1] — одна из самых известных организаций, целью которой является улучшение защищённости приложений. Большинство специалистов в области информационной безопасности знакомы с OWASP Top Ten [2]. У OWASP есть множество других проектов [3] для различных этапов жизненного цикла разработки программного обеспечения (SDLC).
В предыдущей статье на Хабр [4] я рассказывал о стандарте OWASP ASVS, в котором перечислены требования к безопасности web-приложений. А как убедиться в том, что эти требования выполняются? Ответ на этот вопрос даёт Web Security Testing Guide (WSTG) — Руководство по тестированию безопасности web-приложений, перевод которого я хотел бы представить вашему вниманию.

За более чем 20 лет своей работы OWASP накопил огромный багаж знаний в области безопасности приложений. Результат — Web Security Testing Guide (WSTG) — Руководство по тестированию безопасности web-приложений, с которым может свободно ознакомиться каждый. В нём описываются приёмы, методики, инструменты и ресурсы для тестирования наиболее распространённых уязвимостей web-приложений.
Текущая версия WSTG — 4.2 [5]. Также доступны материалы для будущей версии 5.0, которая в настоящее время разрабатывается и постоянно обновляется. Надо сказать, что это не первая попытка перевода, но полной версии WSTG я в свободном доступе не нашёл, решил взяться за текущую, актуальную на 2022 г. (latest [6]).

WSTG фокусируется на этапе развёртывания и, в частности, тестировании на проникновение [7]. В различных сценариях для поиска уязвимостей предлагаются разные методы тестирования (т.н. «белого», «серого» и «чёрного ящика»), однако красной нитью проходит мысль о необходимости сбалансированного подхода, сочетающего всё перечисленное, т. к. каждый метод имеет свою область применения, преимущества и недостатки (однако, на тест надейся, а Дейкстру [8] не забывай).

WSTG охватывает следующие области тестирования:
Сбор информации [9]: получение информации о web-сервере, приложении и его архитектуре.
Тестирование управления конфигурациями и развёртыванием [10]: определение конфигурации сети и приложений, используемые HTTP-методы [11], а также относительно новые сценарии, такие как захват поддомена [12] и облачные хранилища [13].
Тестирование управления идентификацией [14]: определение ролей (RBAC) [15], регистрацию пользователей [16] и инвентаризацию учётных записей [17].
Тестирование аутентификации [18]: выявление учётных данных по умолчанию [19], блокировка пользователя [20], парольная политика [21], МФА [22] и т.д.
Тестирование авторизации [23]: обход каталогов [24], повышение привилегий [25], IDOR [26] и OAuth [27].
Тестирование управления сессиями [28]: тесты фиксации [29] и перехвата [30] сессий, атрибуты cookie [31], CSRF [32] и JWT [33].
Тестирование контроля входных данных [34]: XSS-атаки [35], различные типы инъекций, включая SQL [36] (с учётом специфики СУБД), XML [37], SSTI [38], LFI/RFI [39], SSRF [40] и др.
Тестирование криптографии [42]: TLS [43] и шифрование [44].
Тестирование бизнес-логики [45]: поиск нарушений в бизнес-логике. Например, в бизнес-процессе необходимо, чтобы пользователь выполнил шаг 1, а затем шаг 2. Если мы сможем выполнить шаг 2, не выполняя шага 1 — это нарушение логики. Конкретного способа, как найти такие уязвимости нет, но WSTG предлагает как протестировать их наличие.
Тестирование на стороне клиента [46]: сценарии DOM-XSS [47], HTML [48]-, JS [49]- и CSS [50]-инъекции, CORS [51], WebSockets [52], кликджекинг [53] и др.
Тестирование API [54]: GraphQL [54].
Не менее интересны и приложения к Руководству:
Описание инструментов тестирования [55].
Как написать отчёт о тестировании [56] и схемы наименования [57] для ПО и компонентов.
Полезная нагрузк [58]а: векторы для фаззинга для всех видов инъекций.
Описание и рекомендации по закодированным инъекциям [59].
Информации и ресурсов в WSTG много — несколько сотен страниц в pdf-версии. Ошибок в переводе соответственно тоже немало — пишите, пожалуйста, о них в ЛС.
Руководство поначалу может казаться пугающим из-за объёма — включает порядка ста сценариев тестирования. Давайте обсудим способы внедрения WSTG в SDLC конкретной организации.
Обучение безопасной разработке: команды разработки и тестирования должны регулярно практиковаться в сценариях тестирования, а также изучать инструменты. Хотя WSTG и ориентирован на тестирование, Руководство включает в себя рекомендации для разработчиков.
Расставьте приоритеты для тестов: невозможно применить всё и сразу. Во-первых, надо выбрать сценарии, которые уместны в контексте вашей ситуации и могут предотвратить наиболее серьёзные из известных вам рисков. Дайте команде время на освоение, а затем постепенно добавляйте тесты в свой SDLC в соответствии с имеющимися ресурсами.
Как определить, какие сценарии тестирования подходят для начала внедрения WSTG? Первые кандидаты:
Тесты, связанные с архитектурой ваших приложений и информацией, которую вы защищаете. Например, если в приложении используется протокол OAuth, то важно включить сценарий Тестирование уязвимостей в Oauth [27], а если есть процесс оплаты, то нужен сценарий Тестирование платёжных функций [60].
Тесты, относящиеся к OWASP Top 10. Они охватывают наиболее распространённые угрозы для web-приложений.
Тесты, в которых у команды больше опыта. По мере изучения, можно добавлять новые.
Внедряйте WSTG вместе с «родственными» проектами OWASP. Например, ASVS. С ним связаны Proactive Top 10 [61] и серия памяток [62], содержащих практические рекомендации. Идея состоит в том, чтобы улучшить не отдельно взятый этап SDLC, а столько, сколько вы сможете себе позволить при имеющихся ресурсах.

Назначьте «WSTG-чемпиона» — участника команды, который имеет больше опыта в WSTG. Эта роль поможет распространить и внедрить WSTG в вашей компании.
Регулярно контролируйте результаты и сообщайте о них руководству. Динамика таких показателей, как «количество обнаруженных уязвимостей по уровням критичности», может показать, насколько хорошо команда находит реальные уязвимости и как практика тестирования безопасности улучшает защищённость ваших web-приложений.
Кстати, эти рекомендации применимы к большинству проектов в области кибербезопасности.

Ресурсы WSTG могут пригодиться экспертам кибербезопасности, исследователям уязвимостей и студентам. Для проведения тестов в лабораторных условиях можно быстро развернуть виртуалку с дистрибутивом Samurai WTF [63] (Web Testing Framework, а вы что подумали?), в которой инструменты тестирования уживаются с зоопарком из уязвимых web-приложений.

Пентестерам и Bug Bounty [64]-хантерам рекомендуется дополнять тесты другими ресурсами и актуальными публикациями об уязвимостях и новых методах тестирования.
WSTG представляет собой структурированный источник информации в формате wiki, предназначенный для того, чтобы снизить вероятность уязвимостей в коде и обеспечить киберустойчивость приложения после развёртывания. Устранение дефектов на ранних стадиях является проблемой, с которой сталкиваются все разработчики. На пути к созданию защищённых приложений появился целый ряд технологий автоматизации тестирования. Использование инструментов статического анализа кода (SAST) позволяет выявлять уязвимости в исходном коде приложений. Динамическое тестирование приложений (DAST) обеспечивает взгляд на запущенное приложение «снаружи» до его вывода в эксплуатацию. Интерактивное тестирование (IAST) как симбиоз SAST и DAST, применяется для анализа дефектов в работающих приложениях в режиме реального времени с помощью встроенных в приложение сенсоров (агентов), и проводит автотесты в среде разработки или тестирования (например, Selenium [65]). Список инструментов автоматизации с открытым исходным кодом также есть на сайте OWASP [66].

Все эти возможности позволяют улучшить защищённость приложений. Один из проектов OWASP — Benchmark [67], позволяет оценить точность, охват и производительность инструментов на почти трёх тысячах примерах уязвимостей, из которых половина — настоящие, а остальные — ложные. Можно воспринимать это как призыв к действию для разработчиков инструментов: у кого уже есть функциональность тестирования на соответствие требованиям ASVS [68] и по сценариям WSTG [69]?
Автор: Андрей
Источник [70]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/news/381082
Ссылки в тексте:
[1] Open Web Application Security Project (OWASP): https://owasp.org/
[2] OWASP Top Ten: https://owasp.org/www-project-top-ten/
[3] множество других проектов: https://owasp.org/www-project-integration-standards/writeups/owasp_in_sdlc/
[4] предыдущей статье на Хабр: https://habr.com/ru/company/owasp/blog/679654/
[5] 4.2: https://owasp.org/www-project-web-security-testing-guide/v42/
[6] latest: https://owasp.org/www-project-web-security-testing-guide/latest/
[7] тестировании на проникновение: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/3-The_OWASP_Testing_Framework/1-Penetration_Testing_Methodologies.md
[8] Дейкстру: https://ru.citaty.net/tsitaty/2090950-edsger-vibe-deikstra-testirovanie-programm-mozhet-okazat-nalichie-oshibok/
[9] Сбор информации: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/01-Information_Gathering/README.md
[10] Тестирование управления конфигурациями и развёртыванием: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/02-Configuration_and_Deployment_Management_Testing/README.md
[11] HTTP-методы: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/02-Configuration_and_Deployment_Management_Testing/06-Test_HTTP_Methods.md
[12] захват поддомена: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/02-Configuration_and_Deployment_Management_Testing/10-Test_for_Subdomain_Takeover.md
[13] облачные хранилища: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/02-Configuration_and_Deployment_Management_Testing/11-Test_Cloud_Storage.md
[14] Тестирование управления идентификацией: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/03-Identity_Management_Testing/README.md
[15] определение ролей (RBAC): https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/03-Identity_Management_Testing/01-Test_Role_Definitions.md
[16] регистрацию пользователей: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/03-Identity_Management_Testing/02-Test_User_Registration_Process.md
[17] инвентаризацию учётных записей: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/03-Identity_Management_Testing/04-Testing_for_Account_Enumeration_and_Guessable_User_Account.md
[18] Тестирование аутентификации: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/04-Authentication_Testing/README.md
[19] учётных данных по умолчанию: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/04-Authentication_Testing/02-Testing_for_Default_Credentials.md
[20] блокировка пользователя: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/04-Authentication_Testing/03-Testing_for_Weak_Lock_Out_Mechanism.md
[21] парольная политика: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/04-Authentication_Testing/07-Testing_for_Weak_Password_Policy.md
[22] МФА: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/04-Authentication_Testing/11-Testing_Multi-Factor_Authentication.md
[23] Тестирование авторизации: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/05-Authorization_Testing/README.md
[24] обход каталогов: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/05-Authorization_Testing/01-Testing_Directory_Traversal_File_Include.md
[25] повышение привилегий: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/05-Authorization_Testing/03-Testing_for_Privilege_Escalation.md
[26] IDOR: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/05-Authorization_Testing/04-Testing_for_Insecure_Direct_Object_References.md
[27] OAuth: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/05-Authorization_Testing/05-Testing_for_OAuth_Weaknesses.md
[28] Тестирование управления сессиями: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/06-Session_Management_Testing/README.md
[29] фиксации: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/06-Session_Management_Testing/03-Testing_for_Session_Fixation.md
[30] перехвата: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/06-Session_Management_Testing/09-Testing_for_Session_Hijacking.md
[31] атрибуты cookie: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/06-Session_Management_Testing/02-Testing_for_Cookies_Attributes.md
[32] CSRF: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/06-Session_Management_Testing/05-Testing_for_Cross_Site_Request_Forgery.md
[33] JWT: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/06-Session_Management_Testing/10-Testing_JSON_Web_Tokens.md
[34] Тестирование контроля входных данных: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/07-Input_Validation_Testing/README.md
[35] XSS-атаки: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/07-Input_Validation_Testing/01-Testing_for_Reflected_Cross_Site_Scripting.md
[36] SQL: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/07-Input_Validation_Testing/05-Testing_for_SQL_Injection.md
[37] XML: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/07-Input_Validation_Testing/07-Testing_for_XML_Injection.md
[38] SSTI: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/07-Input_Validation_Testing/18-Testing_for_Server-side_Template_Injection.md
[39] LFI/RFI: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/07-Input_Validation_Testing/11.1-Testing_for_File_Inclusion.md
[40] SSRF: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/07-Input_Validation_Testing/19-Testing_for_Server-Side_Request_Forgery.md
[41] Тестирование обработки ошибок: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/08-Testing_for_Error_Handling/01-Testing_For_Improper_Error_Handling.md
[42] Тестирование криптографии: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/09-Testing_for_Weak_Cryptography/README.md
[43] TLS: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/09-Testing_for_Weak_Cryptography/01-Testing_for_Weak_Transport_Layer_Security.md
[44] шифрование: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/09-Testing_for_Weak_Cryptography/04-Testing_for_Weak_Encryption.md
[45] Тестирование бизнес-логики: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/10-Business_Logic_Testing/README.md
[46] Тестирование на стороне клиента: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/11-Client-side_Testing/README.md
[47] DOM-XSS: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/11-Client-side_Testing/01-Testing_for_DOM-based_Cross_Site_Scripting.md
[48] HTML: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/11-Client-side_Testing/03-Testing_for_HTML_Injection.md
[49] JS: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/11-Client-side_Testing/02-Testing_for_JavaScript_Execution.md
[50] CSS: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/11-Client-side_Testing/05-Testing_for_CSS_Injection.md
[51] CORS: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/11-Client-side_Testing/07-Testing_Cross_Origin_Resource_Sharing.md
[52] WebSockets: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/11-Client-side_Testing/10-Testing_WebSockets.md
[53] кликджекинг: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/11-Client-side_Testing/09-Testing_for_Clickjacking.md
[54] Тестирование API: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/12-API_Testing/01-Testing_GraphQL.md
[55] инструментов тестирования: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/6-Appendix/A-Testing_Tools_Resource.md
[56] отчёт о тестировании: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/5-Reporting/01-Reporting_Structure.md
[57] схемы наименования: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/5-Reporting/02-Naming_Schemes.md
[58] олезная нагрузк: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/6-Appendix/C-Fuzz_Vectors.md
[59] закодированным инъекциям: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/6-Appendix/D-Encoded_Injection.md
[60] Тестирование платёжных функций: https://github.com/andrettv/WSTG/blob/master/WSTG-ru/4-Web_Application_Security_Testing/10-Business_Logic_Testing/10-Test-Payment-Functionality.md
[61] Proactive Top 10: https://github.com/OWASP/www-project-proactive-controls/blob/master/v3/Owasp-top-10-proactive-controls-2018-russian.pdf
[62] серия памяток: https://cheatsheetseries.owasp.org/
[63] Samurai WTF: https://github.com/SamuraiWTF/samuraiwtf
[64] Bug Bounty: https://bugbounty.ru
[65] Selenium: https://techbeacon.com/security/how-scale-your-web-app-security-testing-selenium
[66] есть на сайте OWASP: https://owasp.org/www-community/Free_for_Open_Source_Application_Security_Tools
[67] Benchmark: https://owasp.org/www-project-benchmark/
[68] требованиям ASVS: https://github.com/andrettv/ASVS/tree/master/4.0/ru
[69] сценариям WSTG: https://github.com/andrettv/WSTG/tree/master/WSTG-ru/4-Web_Application_Security_Testing
[70] Источник: https://habr.com/ru/post/703322/?utm_source=habrahabr&utm_medium=rss&utm_campaign=703322
Нажмите здесь для печати.