
Trova bug di sicurezza relativi all'autenticazione (authn) e all'autorizzazione (authz) nelle route delle applicazioni web.
Trova bug di sicurezza relativi all'autenticazione (authn) e all'autorizzazione (authz) nelle route delle applicazioni web:

Route da koel server di streaming
I bug di autenticazione (authn) e autorizzazione (authz) delle route HTTP delle applicazioni web sono tra i problemi di sicurezza più comuni riscontrati oggi. Queste risorse standard del settore evidenziano la gravità del problema:
Usa pip per installare route-detect:
$ python -m pip install --upgrade route-detect
Puoi verificare che route-detect sia installato correttamente con il seguente comando:
$ 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 utilizza il comando CLI routes e fornisce il seguente albero dei comandi:
routes
whichvizPer prima cosa, assicurati di avere semgrep installato e incluso nel tuo PATH.
[!IMPORTANT] La funzionalità di Semgrep da cui
route-detectdipende per visualizzare frammenti di codice è stata spostata dietro la loro app cloud. Per maggiori informazioni consulta #10762. Tuttavia, versioni precedenti di Semgrep supportano ancora questo comportamento. Quando usiroute-detect, assicurati di installare una versione di Semgrep precedente alla1.97.0. Questo può essere fatto con il seguente comando:python -m pip install 'semgrep<1.97.0'.
Usa il sottocomando which per puntare semgrep alle regole corrette per l'applicazione web:
$ semgrep --config $(routes which django) path/to/django/code
Usa il sottocomando viz per visualizzare le informazioni sulle route nel tuo browser:
$ semgrep --json --config $(routes which django) --output routes.json path/to/django/code
$ routes viz --browser routes.json
Se non sei sicuro di quale framework cercare, puoi usare l'ID speciale all per controllare tutto:
$ semgrep --json --config $(routes which all) --output routes.json path/to/code
Se hai logiche personalizzate di autenticazione o autorizzazione, puoi copiare le regole di route-detect:
$ cp $(routes which django) my-django.yml
Quindi puoi modificare la regola secondo necessità ed eseguirla come sopra:
$ semgrep --json --config my-django.yml --output routes.json path/to/django/code
$ routes viz --browser routes.json
Per prima cosa, assicurati di avere codeql installato e incluso nel tuo PATH.
Usa il sottocomando which per prima cosa installare le dipendenze del pacchetto, poi esegui le query appropriate:
$ 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)
Usa il sottocomando viz per visualizzare le informazioni sulle route nel tuo browser:
$ routes viz --codeql --browser routes.sarif
route-detect utilizza poetry per la gestione delle dipendenze e della configurazione.
Prima di procedere, installa le dipendenze del progetto con il seguente comando:
$ poetry install --with dev
Esegui il lint di tutti i file del progetto con il seguente comando:
$ poetry run pre-commit run --all-files
Esegui i test Python con il seguente comando:
$ poetry run pytest --cov
Esegui i test delle regole Semgrep con il seguente comando:
$ poetry run semgrep --test --config routes/rules/ tests/test_rules/
Esegui i test delle query CodeQL con il seguente comando:
$ codeql test run routes/queries/rails/test/
| Linguaggio | 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 | ✅ | ❌ |