
RESTler — это первый инструмент фаззинга REST API с сохранением состояния для автоматического тестирования облачных сервисов через их REST API и поиска ошибок безопасности и надежности в этих сервисах.
RESTler — это первый инструмент для фаззинга REST API с учётом состояния, предназначенный для автоматического тестирования облачных сервисов через их REST API и поиска уязвимостей и ошибок надёжности в этих сервисах. Для заданного облачного сервиса со спецификацией OpenAPI (ранее Swagger) RESTler анализирует всю его спецификацию, а затем генерирует и выполняет тесты, которые задействуют сервис через его REST API.
RESTler интеллектуально выводит зависимости типа «производитель-потребитель» между типами запросов из определения OpenAPI. Во время тестирования он проверяет определённые классы ошибок и динамически учится поведению сервиса на основе предыдущих ответов сервиса. Этот интеллект позволяет RESTler исследовать более глубокие состояния сервиса, достижимые только через определённые последовательности запросов, и находить больше ошибок.
RESTler описан в следующих рецензируемых исследовательских статьях:
Если вы используете RESTler в своих исследованиях, пожалуйста, процитируйте (по умолчанию) статью ICSE'2019 (BibTeX).
RESTler включает несколько стратегий генерации тестов. Чтобы получить всестороннее сравнительное представление относительно (i) эффективности (т.е. как быстро RESTler может находить сбои) и (ii) результативности (т.е. сколько сбоев RESTler может найти за заданный промежуток времени), мы рекомендуем сравнивать все документированные fuzzing_mode(s), потому что каждый из них обеспечивает различный компромисс между широтой и глубиной исследования пространства состояний. Также мы рекомендуем запускать режим test перед любым фаззингом, как описано ниже, чтобы обнаружить и исправить проблемы настройки (например, добавить необходимые значения обязательных параметров в словарь) до начала фаззинга.
RESTler был создан в Microsoft Research и всё ещё находится в активной разработке.
Обзор и демонстрацию начальных шагов см. в Webinar - Fuzzing to Improve the Security and Reliability of Cloud Services.

RESTler разработан для работы на 64-битных машинах с Windows или Linux. Экспериментальная поддержка macOS также включена.
В корне репозитория выполните
docker build -t restler .
В полученном docker-контейнере RESTler будет доступен в директории /RESTler/restler с основным двоичным файлом Restler.
Затем вы можете использовать этот образ docker как основу для добавления тестируемого приложения для выполнения фаззинга внутри изолированных docker-контейнеров.
Предварительные требования: Установите Python 3.12.8 и .NET 8.0 для вашей операционной системы.
Создайте директорию, в которую вы хотите поместить двоичные файлы RESTler:
mkdir restler_bin
Перейдите в корневую директорию репозитория и выполните следующий скрипт Python:
python ./build-restler.py --dest_dir <полный путь к restler_bin выше>
Примечание: если при сборке возникает ошибка nuget NU1403, быстрым решением может быть очистка кэша с помощью команды
dotnet nuget locals all --clear
RESTler работает в 4 основных режимах (по порядку):
Для быстрого ознакомления с простыми примерами см. этот Учебник.
Чтобы быстро попробовать RESTler на своем API, см. Быстрый старт.
В настоящее время существует две категории ошибок, найденных RESTler.
500 ("Внутренняя ошибка сервера") сообщается как ошибка.Когда ошибка найдена, RESTler сообщает об ошибках, сгруппированных в блоки ошибок, и предоставляет журнал воспроизведения, который можно использовать для воспроизведения ошибки (см. Воспроизведение).
Советы по эффективному использованию RESTler см. в Лучшие практики и Улучшение покрытия API.
См. также Часто задаваемые вопросы.
Если вас интересует использование RESTler в масштабе как части вашего CI/CD конвейера, ознакомьтесь с самостоятельно размещённой службой REST API Fuzz Testing.
Если у вас есть запрос/предложение/вопрос, пожалуйста, создайте issue. Инструкции см. в Contributing.md.
Этот проект приветствует вклад и предложения. Большинство вкладов требует вашего согласия с Лицензионным соглашением с участником (CLA), подтверждающим, что вы имеете право и действительно предоставляете нам права на использование вашего вклада. Подробности см. на https://cla.microsoft.com.
Когда вы отправляете запрос на включение изменений (pull request), CLA-бот автоматически определит, нужно ли вам предоставить CLA, и соответствующим образом оформит PR (например, добавит метку, комментарий). Просто следуйте инструкциям от бота. Вам потребуется сделать это только один раз для всех репозиториев, использующих наше CLA.
Этот проект принял Microsoft Open Source Code of Conduct. Для получения дополнительной информации см. Вопросы и ответы по Кодексу поведения или свяжитесь с [email protected] с любыми дополнительными вопросами или комментариями.
Для получения дополнительной информации см. Contributing.md.
Этот проект может содержать товарные знаки или логотипы проектов, продуктов или услуг. Авторизованное использование товарных знаков или логотипов Microsoft регулируется и должно соответствовать Руководству по товарным знакам и брендам Microsoft. Использование товарных знаков или логотипов Microsoft в изменённых версиях этого проекта не должно вызывать путаницу или подразумевать спонсорство со стороны Microsoft. Любое использование товарных знаков или логотипов третьих лиц регулируется политиками этих третьих лиц.
Программное обеспечение может собирать информацию о вас и вашем использовании программного обеспечения и отправлять её в Microsoft. Microsoft может использовать эту информацию для предоставления услуг и улучшения наших продуктов и услуг. Вы можете отключить телеметрию, как описано в репозитории. В программном обеспечении также есть некоторые функции, которые могут позволить вам и Microsoft собирать данные от пользователей ваших приложений. Если вы используете эти функции, вы должны соблюдать применимое законодательство, включая предоставление соответствующих уведомлений пользователям ваших приложений вместе с копией заявления о конфиденциальности Microsoft. Наше заявление о конфиденциальности находится по адресу https://go.microsoft.com/fwlink/?LinkID=824704. Более подробную информацию о сборе и использовании данных можно найти в справочной документации и нашем заявлении о конфиденциальности. Используя программное обеспечение, вы соглашаетесь на эти действия.
Для получения дополнительной информации см. Telemetry.md.
Проблемы безопасности и ошибки следует сообщать конфиденциально, по электронной почте в Microsoft Security Response Center (MSRC) по адресу [email protected]. Вы должны получить ответ в течение 24 часов. Если по какой-то причине этого не произошло, пожалуйста, напишите повторно, чтобы убедиться, что мы получили ваше исходное сообщение. Дополнительная информация, включая ключ MSRC PGP, находится в Security TechCenter.
Для получения дополнительных сведений см. Security.md.