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

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

В предыдущей статье на Хабр я рассказывал о стандарте 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.0, которая в настоящее время разрабатывается и постоянно обновляется. Надо сказать, что это не первая попытка перевода, но полной версии WSTG я в свободном доступе не нашёл, решил взяться за текущую, актуальную на 2022 г. (latest).

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

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

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

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

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

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

  • Сбор информации: получение информации о web-сервере, приложении и его архитектуре.

  • Тестирование управления конфигурациями и развёртыванием: определение конфигурации сети и приложений, используемые HTTP-методы, а также относительно новые сценарии, такие как захват поддомена и облачные хранилища.

  • Тестирование управления идентификацией: определение ролей (RBAC), регистрацию пользователей и инвентаризацию учётных записей.

  • Тестирование аутентификации: выявление учётных данных по умолчанию, блокировка пользователя, парольная политика, МФА и т.д.

  • Тестирование авторизации: обход каталогов, повышение привилегий, IDOR и OAuth.

  • Тестирование управления сессиями: тесты фиксации и перехвата сессий, атрибуты cookie, CSRF и JWT.

  • Тестирование контроля входных данных: XSS-атаки, различные типы инъекций, включая SQL (с учётом специфики СУБД), XML, SSTI, LFI/RFI, SSRF и др.

  • Тестирование обработки ошибок.

  • Тестирование криптографии: TLS и шифрование.

  • Тестирование бизнес-логики: поиск нарушений в бизнес-логике. Например, в бизнес-процессе необходимо, чтобы пользователь выполнил шаг 1, а затем шаг 2. Если мы сможем выполнить шаг 2, не выполняя шага 1 — это нарушение логики. Конкретного способа, как найти такие ​​уязвимости нет, но WSTG предлагает как протестировать их наличие.

  • Тестирование на стороне клиента: сценарии DOM-XSS, HTML-, JS- и CSS-инъекции, CORS, WebSockets, кликджекинг и др.

  • Тестирование API: GraphQL.

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

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

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

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

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

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

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

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

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

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

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

Внедрение WSTG совместно с использованием требований из стандарта ASVSВнедрение WSTG совместно с использованием требований из стандарта ASVS

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

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

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

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

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

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

Samurai WTF v5.2Samurai WTF v5.2

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

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

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

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

Все эти возможности позволяют улучшить защищённость приложений. Один из проектов OWASP — Benchmark, позволяет оценить точность, охват и производительность инструментов на почти трёх тысячах примерах уязвимостей, из которых половина — настоящие, а остальные — ложные. Можно воспринимать это как призыв к действию для разработчиков инструментов: у кого уже есть функциональность тестирования на соответствие требованиям ASVS и по сценариям WSTG?

© Habrahabr.ru