Ir para o conteúdo

Arquitetura de relance

Dois binários, três processos

O PEART são dois binários Go. O peart serve a superfície interna que o pentester usa; o peart-portal serve o portal que o cliente usa, que lê o que foi publicado e escreve apenas a sessão e a declaração de correção do cliente. São binários separados, não um com uma flag, então o processo do portal não alcança um handler interno nem por acidente. Um terceiro processo, o sidecar de renderização, transforma o HTML do relatório em PDF com o WeasyPrint, isolado sem rede e sem acesso ao banco, à chave ou às evidências.

Servir cada API e sua interface do mesmo endereço é deliberado: elimina requisições entre origens, o que deixa o cookie de sessão ser SameSite estrito sem CORS. A fronteira de confiança que importa não é API contra interface, é peart contra peart-portal.

Dados

O estado vive num único banco SQLite. Evidências e backups são cifrados em nível de arquivo com o age; o banco em si é texto claro por decisão, com cifragem de disco no host como controle compensatório. Os catálogos de técnica e metodologia ficam embarcados no binário, então a ferramenta carrega seu próprio dado de referência e roda offline. Mudanças de schema são migrações forward-only, e o processo recusa subir contra um banco desatualizado em vez de migrar em silêncio no boot.

Front end

A interface é uma aplicação multipágina: uma página estática por rota, servida do binário por go:embed, sem etapa de build e sem Node no release. Os componentes são Lit em light DOM. A Content-Security-Policy não carrega unsafe-inline nem unsafe-eval, e o código do próprio projeto não tem innerHTML nem unsafeHTML, então conteúdo hostil pode ser armazenado e exibido sem nunca ser executado.

Cadeia de suprimentos

Os releases são Go puro cross-compilado, assinados sem chave com o cosign e publicados com um SBOM CycloneDX que cobre os módulos Go e o front-end vendorizado. Cada commit roda os mesmos gates que o CI impõe (gosec, gitleaks, govulncheck, e o resto), então a postura de segurança é conferida continuamente, não só no release. A seção Segurança e conformidade cobre tudo isso em profundidade.