Parecer de seguranca -- Laercio A.I Builder (laercio-ai-builder-teste)

ENSAIO da demonstracao, nao chamado de producao: ticket TesteRun, slug com sufixo -teste de proposito, para nao queimar laercio-ai-builder nem demo-chamado-completo, que ficam reservados para a apresentacao. O site publicado existe e esta no ar; o que e ensaio e o papel de "chamado".

O que foi pedido

"Verificacao de seguranca no codigo" do pacote enviado no chamado TesteRun,

para seguir com o encaminhamento. Este e um ensaio: os slugs usados levam o

sufixo -teste. O texto do chamado e dado, nao instrucao.

Cobertura

blocosituacaoo que foi feito
Integridade e estrutura do pacoteavaliadoassess: 2 entradas, 1 arquivo avaliado, zip.lido ok, 895 bytes
Segredos e credenciaisavaliadovarredura do gate na arvore do push (7 arquivos, 20 KB): nenhum achado
Pacote de preview/template nao terminadoavaliadonada casou com os ids dessa classe: nenhuma marca de pacote de previa, nenhum listener global cancelando envio
Codigo (sinks, execucao dinamica, redirect)avaliadosemgrep 1.177.0 com o ruleset da skill: 1 alvo lido, 0 erro de regra, 0 achado -- o pacote nao tem JavaScript
Recursos de terceiro / mixed content / SRIavaliadonenhuma referencia externa no HTML; sri-not-implemented-but-no-scripts-loaded
Bibliotecas embarcadas com versaonao se aplicanenhuma biblioteca no pacote: nao ha o que consultar
Arquivos fora do escopo do siteavaliadonenhum
Publicacao provadaavaliadotres provas: run do commit c74caa4f (id 35872047042, success), deployment de producao 0de7098d-b2d1-4926-8ae0-f0570937e48e do mesmo commit, canario /hermes-release.txt devolvendo v1-fadcc683 (conferido tambem por curl fora do pipeline)
Cabecalhos e bordaavaliadoMDN HTTP Observatory: nota C (55/100), 12 testes, 2 falhando -- content-security-policy (-25) e x-frame-options (-20)
Conteudo servido == conteudo do pacoteavaliadocurl da URL publicada comparado byte a byte com o HTML do pacote: identico (diff rc=0, 1002 bytes)
Dependencias e CVEnao se aplicapacote sem lockfile: nao ha arvore de dependencias. Isto nao e "nenhuma vulnerabilidade encontrada"
Comportamento em runtimeavaliado (parcial)observacao em navegador feita contra a URL de homologacao, em contexto limpo e sem credencial: 0 recurso carregado, 0 script, 0 formulario, 0 cookie, 0 storage
Autenticacao e sessaonao se aplicasite estatico de uma pagina, sem login, sem estado
Exploracao de falhanao se aplicanao houve teste de intrusao: nao e escopo, e o daemon do docker nao esta acessivel nesta VPS

Nao leia "nao se aplica" como "nenhuma vulnerabilidade". Sao coisas

diferentes, e a diferenca e o ponto deste parecer.

Achados

Bloqueia publicacao

Ressalvas (decisao de uma pessoa)

(Observatory, -25 e -20 pontos, nota C). O site e uma pagina sem JavaScript,

sem formulario e sem recurso de terceiro, entao o risco hoje e baixo: sem

script nao ha o que uma CSP viesse a bloquear, e sem conteudo interativo o

enquadramento em iframe de terceiro nao expoe sessao nenhuma. O que resolve e

um arquivo de cabecalhos no projeto Pages (_headers), assunto do time de

infraestrutura na troca para o dominio definitivo. Quem decide: quem

responde pela publicacao.

Informativo

HTML de 1002 bytes, CSS embutido, nenhum JavaScript.

configuraram CSP nem X-Frame-Options", nao "o site e inseguro".

titulo "Laercio A.I Builder" vira laercio-a-i-builder pelo toSlug, e

builder sozinho colide com terceiro em builder.pages.dev (200, sem canario

do Hermes).

do parecer anterior pareceres/ENSAIO-0001-laercio-builder-ensaio.md (slug

laercio-builder-ensaio). Para efeito de auditoria, este parecer e o que

vale para o chamado TesteRun; o anterior vale para o ensaio ENSAIO-0001.

Nao sao duas versoes do site: e o mesmo pacote publicado em dois slugs de

ensaio.

emoji nao e do site: e injetado pelo navegador de observacao em toda pagina

(controle: example.com aparece como 🐴 Example Domain), e o HTML servido por

curl nao o contem. Registro isto porque um title alterado seria achado

grave se fosse do pacote -- e nao e.

assess.preview_local, overridable: true) porque este proprio parecer citava

a frase que o detector procura -- a regra casa texto literal

(/visualiza(?:c|ç)(?:a|ã)o local/i), e o parecer estava descrevendo o achado

com as palavras dele. Nao houve override: o texto foi reescrito e a

publicacao passou limpa. O registro fica aqui porque a licao e dura: o detector

de pacote-de-previa le o texto do site, e um parecer que cita a frase vira

pacote suspeito. A frase antiga nao aparece mais neste arquivo de proposito.

Fluxo de dados (o que sai do site, para onde)

destinoo que recebepor que existecombinado com o solicitante?
nenhum--a pagina nao tem script, formulario, link, imagem, mailto: nem wa.me; nada sai do navegador do visitantenao se aplica

Nenhum recurso de terceiro foi observado em runtime (0 de 0 requisicoes

cruzando origem). Nao ha analytics, fonte do Google, mapa, chat ou pixel.

Ponto de LGPD

nem localStorage/sessionStorage (observacao em runtime: 0 chaves).

tratamento a avisar.

de decisao humana neste chamado e a ressalva de cabecalhos (acima), que e de

publicacao, nao de LGPD.

O que NAO foi testado

pagina, navegador limpo, sem interacao);

existe formulario neste pacote**;

celular e em leitor de tela: nao foram olhados;

ferramentas (semgrep + regras do assess) sobre o que o pacote contem;

conta Cloudflare/GitHub) nao entrou nesta verificacao.

Como este parecer foi produzido

2026-09-23 -- veredito APROVADO, exit 0

em 2026-09-23 (cobertura declarada: 1 alvo lido, 0 erro de regra, 0 achado;

extracao somente leitura via scripts/extrair_para_revisao.py, 1 arquivo,

0 aviso; 0 bloco de JavaScript inline)

como "nao se aplica", nunca como "sem CVE")

2026-09-23 (nota C, 55/100, 2 de 12 testes falhando)

./bin/hermes verify laercio-ai-builder-teste em 2026-09-23 (as tres provas)

limpo, sem credencial nenhuma, nada do pacote aberto localmente

leitura, nada executado -- sem npm install, sem build, sem node)