- PVSM.RU - https://www.pvsm.ru -

OWASP Web Security Testing Guide: как улучшить защищённость web-приложений

Open Web Application Security Project (OWASP) [1] — одна из самых известных организаций, целью которой является улучшение защищённости приложений. Большинство специалистов в области информационной безопасности знакомы с OWASP Top Ten [2]. У OWASP есть множество других проектов [3] для различных этапов жизненного цикла разработки программного обеспечения (SDLC).

В предыдущей статье на Хабр [4] я рассказывал о стандарте OWASP ASVS, в котором перечислены требования к безопасности web-приложений. А как убедиться в том, что эти требования выполняются? Ответ на этот вопрос даёт Web Security Testing Guide (WSTG) — Руководство по тестированию безопасности web-приложений, перевод которого я хотел бы представить вашему вниманию.

Место ASVS и WSTG в структуре безопасного SDLC (из OWASP SAMM)
Место ASVS и WSTG в структуре безопасного SDLC (из OWASP SAMM)

Что из себя представляет WSTG?

За более чем 20 лет своей работы OWASP накопил огромный багаж знаний в области безопасности приложений. Результат — Web Security Testing Guide (WSTG) — Руководство по тестированию безопасности web-приложений, с которым может свободно ознакомиться каждый. В нём описываются приёмы, методики, инструменты и ресурсы для тестирования наиболее распространённых уязвимостей web-приложений.

Текущая версия WSTG — 4.2 [5]. Также доступны материалы для будущей версии 5.0, которая в настоящее время разрабатывается и постоянно обновляется. Надо сказать, что это не первая попытка перевода, но полной версии WSTG я в свободном доступе не нашёл, решил взяться за текущую, актуальную на 2022 г. (latest [6]).

Какое место занимает WSTG в методике тестирования OWASP?

Типичный цикл безопасной разработки приложений
Типичный цикл безопасной разработки приложений

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

Сочетание преимуществ и нивелирование недостатков разных методов требует сбалансированного подхода
Сочетание преимуществ и нивелирование недостатков разных методов требует сбалансированного подхода

Области тестирования WSTG

WSTG охватывает следующие области тестирования:

Не менее интересны и приложения к Руководству:

Информации и ресурсов в WSTG много — несколько сотен страниц в pdf-версии. Ошибок в переводе соответственно тоже немало — пишите, пожалуйста, о них в ЛС.

С чего начать работу с WSTG?

Руководство поначалу может казаться пугающим из-за объёма — включает порядка ста сценариев тестирования. Давайте обсудим способы внедрения WSTG в SDLC конкретной организации.

Обучение безопасной разработке: команды разработки и тестирования должны регулярно практиковаться в сценариях тестирования, а также изучать инструменты. Хотя WSTG и ориентирован на тестирование, Руководство включает в себя рекомендации для разработчиков.

Расставьте приоритеты для тестов: невозможно применить всё и сразу. Во-первых, надо выбрать сценарии, которые уместны в контексте вашей ситуации и могут предотвратить наиболее серьёзные из известных вам рисков. Дайте команде время на освоение, а затем постепенно добавляйте тесты в свой SDLC в соответствии с имеющимися ресурсами.

Как определить, какие сценарии тестирования подходят для начала внедрения WSTG? Первые кандидаты:

  • Тесты, связанные с архитектурой ваших приложений и информацией, которую вы защищаете. Например, если в приложении используется протокол OAuth, то важно включить сценарий Тестирование уязвимостей в Oauth [27], а если есть процесс оплаты, то нужен сценарий Тестирование платёжных функций [60].

  • Тесты, относящиеся к OWASP Top 10. Они охватывают наиболее распространённые угрозы для web-приложений.

  • Тесты, в которых у команды больше опыта. По мере изучения, можно добавлять новые.

  • Внедряйте WSTG вместе с «родственными» проектами OWASP. Например, ASVS. С ним связаны Proactive Top 10 [61] и серия памяток [62], содержащих практические рекомендации. Идея состоит в том, чтобы улучшить не отдельно взятый этап SDLC, а столько, сколько вы сможете себе позволить при имеющихся ресурсах.

Внедрение WSTG совместно с использованием требований из стандарта ASVS
Внедрение WSTG совместно с использованием требований из стандарта ASVS
  • Назначьте «WSTG-чемпиона» — участника команды, который имеет больше опыта в WSTG. Эта роль поможет распространить и внедрить WSTG в вашей компании.

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

Кстати, эти рекомендации применимы к большинству проектов в области кибербезопасности.

Уровни зрелости процессов тестирования в соответствии с моделью OWASP SAMM
Уровни зрелости процессов тестирования в соответствии с моделью OWASP SAMM

WSTG для самостоятельных тестировщиков

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

Samurai WTF v5.2
Samurai WTF v5.2

Пентестерам и Bug Bounty [64]-хантерам рекомендуется дополнять тесты другими ресурсами и актуальными публикациями об уязвимостях и новых методах тестирования.

Автоматизация тестирования web-приложений

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

Применение инструментов автоматизации тестирования по этапам SDLC
Применение инструментов автоматизации тестирования по этапам SDLC

Все эти возможности позволяют улучшить защищённость приложений. Один из проектов 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