
Finden Sie Authentifizierungs- (authn) und Autorisierungs- (authz) Sicherheitsfehler in Webanwendungsrouten.
Finden Sie Authentifizierungs- (authn) und Autorisierungs- (authz) Sicherheitslücken in Webanwendungs-Routen:

Routen des koel Streaming-Servers
HTTP-Routen-Authentifizierungs- und Autorisierungslücken in Webanwendungen gehören heute zu den häufigsten Sicherheitsproblemen. Diese branchenüblichen Ressourcen unterstreichen den Ernst des Problems:
Verwenden Sie pip, um route-detect zu installieren:
$ python -m pip install --upgrade route-detect
Sie können überprüfen, dass route-detect korrekt installiert ist, mit folgendem Befehl:
$ 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 verwendet den CLI-Befehl routes und bietet folgende Befehlshierarchie:
routes
whichvizStellen Sie zunächst sicher, dass semgrep installiert und in Ihrem PATH vorhanden ist.
[!IMPORTANT] Die Semgrep-Funktionalität, von der
route-detectzur Anzeige von Code-Ausschnitten abhängt, wurde hinter ihre Cloud-App verschoben. Weitere Informationen finden Sie unter #10762. Frühere Versionen von Semgrep unterstützen dieses Verhalten jedoch weiterhin. Wenn Sieroute-detectverwenden, stellen Sie sicher, dass Sie eine Version von Semgrep vor1.97.0installieren. Dies kann mit folgendem Befehl erreicht werden:python -m pip install 'semgrep<1.97.0'.
Verwenden Sie den Unterbefehl which, um semgrep auf die richtigen Webanwendungsregeln zu verweisen:
$ semgrep --config $(routes which django) path/to/django/code
Verwenden Sie den Unterbefehl viz, um Routeninformationen in Ihrem Browser zu visualisieren:
$ semgrep --json --config $(routes which django) --output routes.json path/to/django/code
$ routes viz --browser routes.json
Wenn Sie nicht sicher sind, nach welchem Framework Sie suchen sollen, können Sie die spezielle ID all verwenden, um alles zu prüfen:
$ semgrep --json --config $(routes which all) --output routes.json path/to/code
Wenn Sie eine benutzerdefinierte authn- oder authz-Logik haben, können Sie die Regeln von route-detect kopieren:
$ cp $(routes which django) my-django.yml
Dann können Sie die Regel nach Bedarf ändern und wie oben ausführen:
$ semgrep --json --config my-django.yml --output routes.json path/to/django/code
$ routes viz --browser routes.json
Stellen Sie zunächst sicher, dass codeql installiert und in Ihrem PATH vorhanden ist.
Verwenden Sie den Unterbefehl which, um zuerst die Abhängigkeiten des Pakets zu installieren und dann die entsprechenden Abfragen auszuführen:
$ 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)
Verwenden Sie den Unterbefehl viz, um Routeninformationen in Ihrem Browser zu visualisieren:
$ routes viz --codeql --browser routes.sarif
route-detect verwendet poetry für die Abhängigkeits- und Konfigurationsverwaltung.
Installieren Sie vor dem Fortfahren die Projektabhängigkeiten mit folgendem Befehl:
$ poetry install --with dev
Linten Sie alle Projektdateien mit folgendem Befehl:
$ poetry run pre-commit run --all-files
Führen Sie Python-Tests mit folgendem Befehl aus:
$ poetry run pytest --cov
Führen Sie Semgrep-Regeltests mit folgendem Befehl aus:
$ poetry run semgrep --test --config routes/rules/ tests/test_rules/
Führen Sie CodeQL-Abfragetests mit folgendem Befehl aus:
$ codeql test run routes/queries/rails/test/
| Sprache | 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 | ✅ | ❌ |