Inventário e remediação CodeQL — v1.11.0¶
Baseline consultado em lote para refs/heads/main: 45 abertos, sendo 2 Critical, 42 High e
1 Medium. Sete findings High estão em testes/código auxiliar, mas continuam contabilizados.
O workflow verde da v1.10.1 não representa ausência de findings.
Inventário reduzido¶
| Alertas | Regra | Local | Classificação inicial | Causa-raiz e ação |
|---|---|---|---|---|
| #1 | URL substring | arquivo no-touch authenticated_browser.py:70 |
NO_TOUCH_RESIDUAL | provar boundary anterior e não editar o arquivo |
| #2–#3 | URL substring | modules/ui/components.py:131,133 |
PARTIAL_TRUE_POSITIVE | trocar identificação textual por parser de URL |
| #4–#6 | URL substring | test_extension_permissions_minimal.py:22–24 |
FALSE_POSITIVE | assertions de teste, sem sink; reescrever para parsing estrutural se útil |
| #7 | URL substring | test_search_intelligence_with_memory.py:18 |
FALSE_POSITIVE | assertion de teste, sem sink |
| #9 | command line | arquivo no-touch browser_session.py:131 |
NO_TOUCH_RESIDUAL | validar start URL, CDP e opções na camada anterior |
| #10–#17 | polynomial ReDoS | resume_parser.py:258–395 |
TRUE_POSITIVE | limitar input e substituir padrões ambíguos/loops por parsing linear |
| #18 | clear-text sensitive storage | ai/setup.py:161 |
TRUE_POSITIVE | remover persistência de chave em TOML; usar ambiente/sessão segura |
| #19–#22 | path injection | backup e API de dados | PARTIAL_TRUE_POSITIVE | boundary resolve_within, nomes server-managed e symlink checks |
| #23–#25 | URL substring | sources.tsx:1550,1605,1608 |
TRUE_POSITIVE | helper único com new URL() e allowlist estrutural |
| #26 | response splitting | local_api/server.py:113 |
PARTIAL_TRUE_POSITIVE | normalizar/validar Origin antes de refletir header |
| #27 | full SSRF | scraping/client.py:95 |
TRUE_POSITIVE | resolver e conectar ao mesmo IP validado, inclusive redirects |
| #28–#34 | path injection | taxonomy/catalog.py:30–36 |
TRUE_POSITIVE | IDs/version/checksum canônicos e resolução confinada ao root |
| #35–#46 | path injection | json_recovery.py:112–213 |
TRUE_POSITIVE | store root explícito, paths confinados e proteção contra symlink/junction |
Critérios de fechamento¶
- nenhum Critical ou High verdadeiro pode permanecer;
- false positive exige trace sem input controlável chegando a sink;
- residual no-touch exige boundary testado antes do módulo protegido;
- o inventário temporário
.tmp-codeql-alerts.jsonfoi apagado após redução; - CodeQL remoto será executado apenas depois do batch local, seguido de uma consulta residual.
Resultado remoto final¶
O CodeQL no commit final aprovou Python e JavaScript/TypeScript. A consulta posterior reduziu os
45 alertas do baseline a zero abertos: 39 foram fechados pelas correções do batch, #4–#7 foram
classificados como used in tests por não alcançarem runtime ou sink, e #1/#9 foram encerrados
como won't fix sob a exceção NO_TOUCH, com mitigação na boundary, testes dirigidos e hashes
protegidos preservados. Portanto, não permanece Critical/High verdadeiro conhecido aberto.