Идентификация Broken Access Control с использованием Semgrep
Всем привет!
Если упростить, то Broken Access Control можно описать примерно так: уязвимость, которая появляется за счет отсутствия/недостаточности проверок на стороне сервера того, что некоторый субъект (subject) может реализовывать определенные действия (operation) над некоторым объектом (object).
Такие уязвимости достаточно часто встречаются и найти их не так просто, в том числе и потому, что сканеры не всегда могут понять нужный «контекст».
В статье Автор предлагает свой подход к идентификации указанных недостатков. В качестве tech stack он использует NestJS и Semgrep, как SAST-инструмент.
«Вымышленное» приложение представляет из себя набор микросервисов, обладает ролевой моделью, а авторизация реализуется с использованием JWT Token. Для контроля действий пользователей предлагается использовать NestJS Guards.
Автор предлагает следующий набор правил Semgrep, чтобы убедиться, что все реализовано "как надо":
🍭 Поиск endpoints у которых отсутствуют Guards
🍭 Использование «нестандартных» Guards
🍭 Идентификация случаев некорректного использования Guards
🍭 Поиск IDOR, где стандартных Guards может быть недостаточно и не только
Каждое правило содержит его YAML-код, описание с комментариями и ссылку на Semgrep-playground.
Статья затрагивает интересный момент: не стоит «слепо» полагаться на SAST-решение. Что оно само все найдет и само предложит, как можно устранить дефект. Альтернативным сценарием использования SAST может быть поиск определенных конструкций. Но только надо знать, что искать 😊
Post #974
3.3K