Data: 14/05/2026
Responsável: Lucas Paiva Santos de Oliveira
Versão analisada: branch develop
Ambiente: Python 3.14 / Node.js 22 / Docker
Esta auditoria cobre as seguintes camadas do projeto:
- Backend — FastAPI + supabase-py (
/backend) - Frontend — Next.js 16 (
/frontend) - Infraestrutura — Dockerfiles (
backend/Dockerfile,frontend/Dockerfile) - Histórico Git — varredura de segredos expostos em commits
| Ferramenta | Versão | Finalidade |
|---|---|---|
safety |
3.7.0 | Vulnerabilidades em dependências Python |
bandit |
1.9.4 | Análise estática de segurança do código Python |
npm audit |
— | Vulnerabilidades em dependências JavaScript |
hadolint |
latest | Boas práticas nos Dockerfiles |
trufflehog |
2.2.1 | Detecção de segredos expostos no histórico Git |
pip list --outdated |
— | Dependências Python desatualizadas |
npm outdated |
— | Dependências JavaScript desatualizadas |
Comando executado:
safety check -r backend/requirements.txtResultado: ✅ 0 vulnerabilidades confirmadas no projeto
Observações:
- O
safetyreportou oGitPython 3.0.6como vulnerável, porém essa dependência pertence à ferramentatrufflehoginstalada localmente para auditoria — não faz parte dorequirements.txtdo projeto. - O
PyJWT 2.10.1foi atualizado para>=2.12.0durante a auditoria, corrigindo a CVE-2026-32597 (Insufficient Verification of Data Authenticity — headercritnão validado conforme RFC).
Comando executado:
bandit -r backend/ -x backend/.venv,backend/alembicResultado:
| Severidade | Quantidade |
|---|---|
| High | 0 |
| Medium | 0 |
| Low | 1 |
Detalhe do único item reportado:
Issue: [B105] Possible hardcoded password: 'bearer'
Location: backend/api/auth.py:43
Classificação: Falso positivo. O valor "bearer" é o tipo padrão de token OAuth2 conforme RFC 6750, não uma senha hardcoded.
Comando executado:
npm auditResultado: 2 vulnerabilidades de severidade moderate
Detalhe:
postcss <8.5.10 — XSS via Unescaped </style>
Afeta: next@16.2.6 (dependência transitória)
Fix sugerido: npm audit fix --force (instalaria next@9.3.3 — regressão inaceitável)
Classificação: Falso positivo. O projeto utiliza Next.js 16.2.6, versão que já possui o fix internamente. O audit reporta a vulnerabilidade baseado no lockfile sem considerar a versão real em uso.
Comandos executados:
docker run --rm -i hadolint/hadolint < backend/Dockerfile
docker run --rm -i hadolint/hadolint < frontend/DockerfileResultado: ✅ Nenhum problema encontrado em ambos os Dockerfiles.
Comando executado:
trufflehog --regex --entropy=False .Resultado: ✅ Nenhuma credencial real exposta
Observações: Foram encontradas ocorrências em dois arquivos de exemplo:
backend/.env.example— stringasyncpg://user:password@host:port/dbnamebackend/alembic.ini— stringdriver://user:pass@localhost/dbname
Ambas são strings de exemplo/placeholder sem valor real, presentes desde os commits iniciais do projeto. Nenhuma credencial de produção foi exposta no histórico.
| Pacote | Versão Atual | Versão Latest | Ação |
|---|---|---|---|
bcrypt |
4.1.2 | 5.0.0 | Atualizar — major, testar compatibilidade |
websockets |
15.0.1 | 16.0 | Atualizar — dependência do supabase-py |
PyJWT |
2.10.1 | 2.12.0+ | ✅ Atualizado durante auditoria |
| Pacote | Versão Atual | Versão Latest | Ação |
|---|---|---|---|
zod |
3.25.76 | 4.4.3 | Adiar — breaking changes na v4 |
typescript |
5.7.3 | 6.0.3 | Adiar — breaking changes na v6 |
lucide-react |
0.564.0 | 1.16.0 | Adiar — major version |
@hookform/resolvers |
3.10.0 | 5.2.2 | Adiar — major version |
recharts |
2.15.0 | 3.8.1 | Adiar — major version |
sonner |
1.7.4 | 2.0.7 | Adiar — major version |
react-day-picker |
9.13.2 | 10.0.0 | Adiar — major version |
Nota: Atualizações de major version foram adiadas intencionalmente para evitar breaking changes próximo à entrega. Recomenda-se revisão após a apresentação final.
| Camada | Status | Observação |
|---|---|---|
| Dependências Python | ✅ Aprovado | PyJWT atualizado durante auditoria |
| Código Python | ✅ Aprovado | 1 falso positivo (bearer token) |
| Dependências JavaScript | ✅ Aprovado | 2 falsos positivos (postcss/Next.js) |
| Dockerfiles | ✅ Aprovado | Sem problemas |
| Segredos no Git | ✅ Aprovado | Apenas placeholders de exemplo |
Resultado geral: APROVADO para merge na main ✅