
Encontre bugs de segurança de autenticação (authn) e autorização (authz) em rotas de aplicações web.
Encontre bugs de segurança de autenticação (authn) e autorização (authz) em rotas de aplicações web:

Rotas do servidor de streaming koel
Bugs de autenticação e autorização em rotas HTTP de aplicações web estão entre os problemas de segurança mais comuns encontrados atualmente. Esses recursos padrão da indústria destacam a gravidade do problema:
Use pip para instalar o route-detect:
$ python -m pip install --upgrade route-detect
Você pode verificar que o route-detect está instalado corretamente com o seguinte 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 o comando CLI routes e fornece a seguinte árvore de comandos:
routes
whichvizPrimeiro, certifique-se de que o semgrep está instalado e incluído no seu PATH.
[!IMPORTANT] A funcionalidade Semgrep da qual o
route-detectdepende para exibir trechos de código foi movida para o aplicativo cloud deles. Para mais informações, veja #10762. No entanto, versões anteriores do Semgrep ainda suportam esse comportamento. Ao usar oroute-detect, certifique-se de instalar uma versão do Semgrep anterior à1.97.0. Isso pode ser feito com o seguinte comando:python -m pip install 'semgrep<1.97.0'.
Use o subcomando which para apontar o semgrep para as regras corretas da aplicação web:
$ semgrep --config $(routes which django) path/to/django/code
Use o subcomando viz para visualizar informações de rota no seu navegador:
$ semgrep --json --config $(routes which django) --output routes.json path/to/django/code
$ routes viz --browser routes.json
Se você não tem certeza de qual framework procurar, pode usar o ID especial all para verificar tudo:
$ semgrep --json --config $(routes which all) --output routes.json path/to/code
Se você tem lógica de authn ou authz personalizada, pode copiar as regras do route-detect:
$ cp $(routes which django) my-django.yml
Então você pode modificar a regra conforme necessário e executá-la como acima:
$ semgrep --json --config my-django.yml --output routes.json path/to/django/code
$ routes viz --browser routes.json
Primeiro, certifique-se de que o codeql está instalado e incluído no seu PATH.
Use o subcomando which para primeiro instalar as dependências do pacote e depois executar as consultas apropriadas:
$ 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 o subcomando viz para visualizar informações de rota no seu navegador:
$ routes viz --codeql --browser routes.sarif
route-detect usa poetry para gerenciamento de dependências e configuração.
Antes de prosseguir, instale as dependências do projeto com o seguinte comando:
$ poetry install --with dev
Verifique todos os arquivos do projeto com o seguinte comando:
$ poetry run pre-commit run --all-files
Execute os testes Python com o seguinte comando:
$ poetry run pytest --cov
Execute os testes de regras Semgrep com o seguinte comando:
$ poetry run semgrep --test --config routes/rules/ tests/test_rules/
Execute os testes de consulta CodeQL com o seguinte comando:
$ codeql test run routes/queries/rails/test/
| Linguagem | 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 | ✅ | ❌ |