
Найдите ошибки безопасности аутентификации (AUTHN) и авторизации (AUTHER) в маршрутах веб -приложений:
Маршруты с потокового сервера koel
Веб -приложение http route authn и authz ошипки являются одними из наиболее распространенных проблем безопасности, найденных сегодня. Эти отраслевые стандартные ресурсы подчеркивают серьезность проблемы:
Поддерживаемые веб-фреймворки (идентификаторы route-detect в скобках):
django , django-rest-framework ), колба ( flask ), саническое ( sanic ), Fastapi ( fastapi )laravel ), Symfony ( symfony ), CakePhp ( cakephp )rails ), виноград ( grape )jax-rs ), Spring ( spring )gorilla ), джин ( gin ), чи ( chi )express ), React ( react ), Angular ( angular )* Поддержка Rails ограничена. Пожалуйста, смотрите эту проблему для получения дополнительной информации.
Используйте pip , чтобы установить route-detect :
$ python -m pip install --upgrade route-detect
Вы можете проверить, что route-detect установлен правильно со следующей командой:
$ echo 'print(1 == 1)' | semgrep --config $(routes which test-route-detect) -
Scanning 1 file.
Findings:
/tmp/stdin
routes.rules.test-route-detect
Found '1 == 1', your route-detect installation is working correctly
1┆ print(1 == 1)
Ran 1 rule on 1 file: 1 finding.
route-detect предоставляет команду CLI routes и использует semgrep для поиска маршрутов.
Используйте, which подкоманда указывает semgrep в правильных правилах веб -приложения:
$ semgrep --config $(routes which django) path/to/django/code
Используйте подкоманду viz , чтобы визуализировать информацию о маршруте в вашем браузере:
$ semgrep --json --config $(routes which django) --output routes.json path/to/django/code
$ routes viz --browser routes.json
Если вы не уверены, какую структуру искать, вы можете использовать специальный all , чтобы проверить все:
$ semgrep --json --config $(routes which all) --output routes.json path/to/code
Если у вас есть пользовательская логика Authn или Authz, вы можете скопировать правила route-detect :
$ cp $(routes which django) my-django.yml
Затем вы можете изменить правило по мере необходимости и запустить его, как выше:
$ semgrep --json --config my-django.yml --output routes.json path/to/django/code
$ routes viz --browser routes.json
route-detect использует poetry для зависимости и управления конфигурацией.
Прежде чем продолжить, установите зависимости проекта со следующей командой:
$ poetry install --with dev
Заполните все файлы проекта со следующей командой:
$ poetry run pre-commit run --all-files
Запустите тесты Python со следующей командой:
$ poetry run pytest --cov
Запустите тесты правил SEMGREP со следующей командой:
$ poetry run semgrep --test --config routes/rules/ tests/test_rules/