
Encuentra bugs de seguridad de autenticación (authn) y autorización (authz) en las rutas de aplicaciones web.
Encuentre errores de seguridad de autenticación (authn) y autorización (authz) en las rutas de aplicaciones web:

Rutas del servidor de streaming koel
Los errores de autenticación y autorización en rutas HTTP de aplicaciones web son algunos de los problemas de seguridad más comunes hoy en día. Estos recursos estándar de la industria destacan la gravedad del problema:
| Lenguaje | 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 | ✅ | ❌ |
Use pip para instalar route-detect:
$ python -m pip install --upgrade route-detect
Puede verificar que route-detect esté instalado correctamente con el siguiente 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 usa el comando CLI routes y proporciona el siguiente árbol de comandos:
routes
whichvizPrimero, asegúrese de tener semgrep instalado e incluido en su PATH.
[!IMPORTANT] La funcionalidad de Semgrep de la que depende
route-detectpara mostrar fragmentos de código se ha movido detrás de su aplicación en la nube. Para más información, consulte #10762. Sin embargo, versiones anteriores de Semgrep aún soportan este comportamiento. Al usarroute-detect, asegúrese de instalar una versión de Semgrep anterior a1.97.0. Esto se puede lograr con el siguiente comando:python -m pip install 'semgrep<1.97.0'.
Use el subcomando which para apuntar semgrep a las reglas de aplicación web correctas:
$ semgrep --config $(routes which django) path/to/django/code
Use el subcomando viz para visualizar la información de rutas en su navegador:
$ semgrep --json --config $(routes which django) --output routes.json path/to/django/code
$ routes viz --browser routes.json
Si no está seguro de qué framework buscar, puede usar el ID especial all para verificar todo:
$ semgrep --json --config $(routes which all) --output routes.json path/to/code
Si tiene lógica de autenticación o autorización personalizada, puede copiar las reglas de route-detect:
$ cp $(routes which django) my-django.yml
Luego puede modificar la regla según sea necesario y ejecutarla como se indicó anteriormente:
$ semgrep --json --config my-django.yml --output routes.json path/to/django/code
$ routes viz --browser routes.json
Primero, asegúrese de tener codeql instalado e incluido en su PATH.
Use el subcomando which para instalar primero las dependencias del paquete y luego ejecutar las consultas apropiadas:
$ 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)
Use el subcomando viz para visualizar la información de rutas en su navegador:
$ routes viz --codeql --browser routes.sarif
route-detect usa poetry para la gestión de dependencias y configuración.
Antes de continuar, instale las dependencias del proyecto con el siguiente comando:
$ poetry install --with dev
Revise todos los archivos del proyecto con el siguiente comando:
$ poetry run pre-commit run --all-files
Ejecute las pruebas de Python con el siguiente comando:
$ poetry run pytest --cov
Ejecute las pruebas de reglas de Semgrep con el siguiente comando:
$ poetry run semgrep --test --config routes/rules/ tests/test_rules/
Ejecute las pruebas de consultas de CodeQL con el siguiente comando:
$ codeql test run routes/queries/rails/test/