
Trouvez les bugs de sécurité d'authentification (authn) et d'autorisation (authz) dans les routes d'applications web.
Trouvez les bugs de sécurité d'authentification (authn) et d'autorisation (authz) dans les routes d'applications web :

Routes du serveur de streaming koel
Les bugs d'authentification (authn) et d'autorisation (authz) dans les routes HTTP d'applications web sont parmi les problèmes de sécurité les plus courants aujourd'hui. Ces ressources de référence standard soulignent la gravité du problème :
Utilisez pip pour installer route-detect :
$ python -m pip install --upgrade route-detect
Vous pouvez vérifier que route-detect est installé 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 utilise la commande CLI routes et fournit l'arborescence de commandes suivante :
routes
whichvizTout d'abord, assurez-vous que semgrep est installé et inclus dans votre PATH.
[!IMPORTANT] La fonctionnalité Semgrep dont dépend
route-detectpour afficher les extraits de code a été déplacée derrière leur application cloud. Pour plus d'informations, voir #10762. Cependant, les versions antérieures de Semgrep prennent encore en charge ce comportement. Lors de l'utilisation deroute-detect, veillez à installer une version de Semgrep antérieure à1.97.0. Cela peut être réalisé avec la commande suivante :python -m pip install 'semgrep<1.97.0'.
Utilisez la sous-commande which pour pointer semgrep vers les règles d'application web appropriées :
$ semgrep --config $(routes which django) path/to/django/code
Utilisez la sous-commande viz pour visualiser les informations de route dans votre navigateur :
$ semgrep --json --config $(routes which django) --output routes.json path/to/django/code
$ routes viz --browser routes.json
Si vous n'êtes pas sûr du framework à rechercher, vous pouvez utiliser l'ID spécial all pour tout vérifier :
$ semgrep --json --config $(routes which all) --output routes.json path/to/code
Si vous avez une logique d'authentification ou d'autorisation 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 selon vos besoins 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
Tout d'abord, assurez-vous que codeql est installé et inclus dans votre PATH.
Utilisez la sous-commande which pour d'abord installer les dépendances du pack, puis exécuter les requêtes appropriées :
$ codeql pack install $(poetry run routes which -c rails)
$ codeql database analyze \
--output routes.sarif \
--format sarif-latest \
--sarif-add-file-contents \
--no-group-results \
-- \
/path/to/codeql/db \
$(routes which --codeql rails)
Utilisez la sous-commande viz pour visualiser les informations de route dans votre navigateur :
$ routes viz --codeql --browser routes.sarif
route-detect utilise poetry pour la gestion des dépendances et de la configuration.
Avant de continuer, installez les dépendances du projet avec la commande suivante :
$ poetry install --with dev
Vérifiez tous les fichiers du 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 des règles Semgrep avec la commande suivante :
$ poetry run semgrep --test --config routes/rules/ tests/test_rules/
Exécutez les tests des requêtes CodeQL avec la commande suivante :
$ codeql test run routes/queries/rails/test/
| Language | Framework | Semgrep | CodeQL |
|---|
| Python | Django | ✅ | ❌ |
| Python | Django REST framework | ✅ | ❌ |
| Python | Flask | ✅ | ❌ |
| Python | Sanic | ✅ | ❌ |
| Python | FastAPI | ✅ | ❌ |
| PHP | Laravel | ✅ | ❌ |
| PHP | Symfony | ✅ | ❌ |
| PHP | CakePHP | ✅ | ❌ |
| Ruby | Rails | ❌ | ✅ |
| Ruby | Grape | ✅ | ❌ |
| Java | JAX-RS | ✅ | ❌ |
| Java | Spring | ✅ | ❌ |
| Go | Gorilla | ✅ | ❌ |
| Go | Gin | ✅ | ❌ |
| Go | Chi | ✅ | ❌ |
| JavaScript/TypeScript | Express | ✅ | ❌ |
| JavaScript/TypeScript | React | ✅ | ❌ |
| JavaScript/TypeScript | Angular | ✅ | ❌ |