
Rechercher des bogues de sécurité de l'authentification (AUTHN) et de l'autorisation (AUTHZ) dans les routes d'application Web:
Itinéraires depuis le serveur de streaming koel
Application Web HTTP Route Authn et AuthZ Bugs sont quelques-uns des problèmes de sécurité les plus courants trouvés aujourd'hui. Ces ressources standard de l'industrie mettent en évidence la gravité du problème:
Frameworks Web pris en charge (ID route-detect entre parenthèses):
django , django-rest-framework ), Flask ( flask ), Sanic ( sanic ), Fastapi ( fastapi )laravel ), Symfony ( symfony ), CakePhp ( cakephp )rails ), raisin ( grape )jax-rs ), printemps ( spring )gorilla ), gin ( gin ), chi ( chi )express ), React ( react ), Angular ( angular )* Le support des rails est limité. Veuillez consulter ce problème pour plus d'informations.
Utilisez pip pour installer route-detect :
$ python -m pip install --upgrade route-detect
Vous pouvez vérifier que route-detect est installée correctement avec la commande suivante:
$ 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 fournit la commande CLI routes et utilise semgrep pour rechercher des itinéraires.
Utilisez le which -commande pour pointer semgrep aux règles d'application Web correctes:
$ semgrep --config $(routes which django) path/to/django/code
Utilisez la sous-commande viz pour visualiser les informations d'itinéraire dans votre navigateur:
$ semgrep --json --config $(routes which django) --output routes.json path/to/django/code
$ routes viz --browser routes.json
Si vous ne savez pas quel framework à rechercher, vous pouvez utiliser l'ID all pour vérifier tout:
$ semgrep --json --config $(routes which all) --output routes.json path/to/code
Si vous avez une logique Authn ou AuthZ personnalisée, vous pouvez copier les règles de route-detect :
$ cp $(routes which django) my-django.yml
Ensuite, vous pouvez modifier la règle si nécessaire et l'exécuter comme ci-dessus:
$ semgrep --json --config my-django.yml --output routes.json path/to/django/code
$ routes viz --browser routes.json
route-detect utilise poetry pour la gestion de la dépendance et de la configuration.
Avant de continuer, installez les dépendances du projet avec la commande suivante:
$ poetry install --with dev
Lint tous les fichiers de projet avec la commande suivante:
$ poetry run pre-commit run --all-files
Exécutez les tests Python avec la commande suivante:
$ poetry run pytest --cov
Exécutez les tests de règle Semgrep avec la commande suivante:
$ poetry run semgrep --test --config routes/rules/ tests/test_rules/