Skip to content

Segurança v1.36.0: RBAC de escrita, revogação de sessão, chave de API fora do DOM#45

Merged
iscarelli merged 1 commit into
mainfrom
fix/security-rbac-session-revocation
Jun 10, 2026
Merged

Segurança v1.36.0: RBAC de escrita, revogação de sessão, chave de API fora do DOM#45
iscarelli merged 1 commit into
mainfrom
fix/security-rbac-session-revocation

Conversation

@iscarelli

Copy link
Copy Markdown
Owner

Endurecimento de segurança a partir de um teste externo (caixa-preta). Vários achados do relatório já estavam cobertos pelo código (throttle por IP, mensagem de erro genérica, anti-SSRF, anti open-redirect); seguem as lacunas reais corrigidas, cada uma com teste.

Corrigido

Mantido (avaliado)

Testes

26 novos casos em tests/test_security_rbac.py (+ fixture viewer_client); 150 passam, sem regressão.

Operacional

Rotacionar senha do admin + chave do Home Assistant (expostas no teste) e habilitar 2FA.

🤖 Generated with Claude Code

…ra do DOM (v1.36.0)

Endurecimento a partir de um teste externo (caixa-preta). Achados reais corrigidos,
cada um com teste automatizado (26 novos; 150 no total, sem regressão):

- #2 RBAC: novo @write_required enforça papel no servidor nas rotas de mutação de
  inventário (viewer = 403 no GET-form e POST); botões somem na UI via can_write.
- #3 Revogação de sessão (CWE-613): session_token por usuário revalidado a cada
  request; logout e troca de senha rotacionam o token, invalidando cookies antigos.
- #4 Chave de API fora do DOM (CWE-200): HTML só com versão mascarada; cleartext
  buscado sob demanda em endpoint admin (no-store).
- #5 HTTPException não vira mais 500: handler repassa HTTPException + página 405.
- #9 /.well-known/security.txt (RFC 9116).

Avaliados e mantidos: throttle de login por IP e msg de erro genérica já existiam
(#1); rotas admin já exigem @admin_required (#8). Sem lockout por conta (DoS no
admin conhecido) — 2FA opt-in é o controle forte.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@iscarelli iscarelli merged commit 765e896 into main Jun 10, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant