원클릭으로
security-audit
Skill para auditoria de segurança em código de extensão Chrome — CSP, permissões, sanitização, storage e comunicação.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Skill para auditoria de segurança em código de extensão Chrome — CSP, permissões, sanitização, storage e comunicação.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Skill para criar novos geradores de dados seguindo as convenções do projeto Fill All.
Skill para planejamento de roadmap, gestão de features, milestones e priorização de tarefas do projeto Fill All.
Skill para validação de regressão em testes — verificar que mudanças não quebraram funcionalidades existentes.
Skill para realizar code reviews alinhados com as convenções e padrões de qualidade do projeto Fill All.
Skill para investigação e debug sistemático de bugs — reproduzir, isolar, corrigir e validar com scripts.
Skill para gerenciamento seguro de dependências npm — auditoria, atualização, lock files e breaking changes.
| name | security-audit |
| description | Skill para auditoria de segurança em código de extensão Chrome — CSP, permissões, sanitização, storage e comunicação. |
| license | MIT |
| compatibility | Node.js 18+, TypeScript 5.x, Chrome Extension Manifest V3 |
| metadata | {"author":"marcusp","version":"1.0","project":"fill-all","category":"security"} |
Garantir que o código da extensão Chrome Fill All está seguro contra vulnerabilidades comuns em extensões do navegador, incluindo XSS, injection, privilege escalation e data leaks.
O Manifest V3 impõe CSP rigorosa. Verificar:
eval(): nunca usar eval(), new Function(), setTimeout(string)<script> tags no DOM da páginaunsafe-eval: CSP do manifest não inclui unsafe-evalunsafe-inline: CSP não inclui unsafe-inline para scripts// ❌ Violação de CSP
eval("code");
new Function("return " + data);
setTimeout("alert(1)", 0);
element.innerHTML = `<script>code</script>`;
// ✅ Seguro
const fn = () => { /* código direto */ };
setTimeout(() => alert(1), 0);
element.textContent = data;
Content scripts operam no DOM de páginas não confiáveis. Verificar:
innerHTML proibido com dados externos: usar textContent ou DOM APIescapeHtml(): sanitizar antes de inserir dados de usuário no DOMdocument.createElement: preferir criação programática de elementos// ❌ Vulnerável a XSS
element.innerHTML = `<span>${userInput}</span>`;
container.insertAdjacentHTML("beforeend", userInput);
// ✅ Seguro
element.textContent = userInput;
const span = document.createElement("span");
span.textContent = userInput;
container.appendChild(span);
// ✅ Quando HTML é necessário
import { escapeHtml } from "@/lib/ui";
element.innerHTML = `<span>${escapeHtml(userInput)}</span>`;
Mensagens entre background, content script e popup:
sender: content scripts podem ser spoofadossafeParse() para validar payloadssender.id quando necessário// ✅ Validar mensagem antes de processar
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
const parsed = parseMessagePayload(message);
if (!parsed) {
log.warn("Invalid message received:", message);
return;
}
// Processar mensagem validada
});
STORAGE_KEYS com prefixo fill_all_ para evitar colisãochrome.storage.local: nunca sync (dados podem exceder limite)updateStorageAtomically() para prevenir race conditions<all_urls> desnecessário: limitar host permissionsactiveTab preferido: sobre tabs quando possíveloptional_permissions para não-essenciaismatches o mais restrito possívelchrome.scripting.executeScript com strings: usar arquivosdocument.write(): proibido em extensões MV3matchUrlPattern() sem ReDoSGeradores produzem dados fictícios que podem ser sensíveis:
## Segurança
- [ ] Sem `eval()`, `new Function()`, `setTimeout(string)`
- [ ] Sem `innerHTML` com dados não confiáveis
- [ ] Mensagens validadas com Zod antes de processar
- [ ] Sem dados sensíveis em storage ou mensagens
- [ ] URLs validadas com `matchUrlPattern()`
- [ ] Permissões do manifest mínimas
- [ ] `escapeHtml()` usado para dados exibidos no DOM
| Vulnerabilidade | Vetor de Ataque | Prevenção |
|---|---|---|
| XSS no popup/options | Dados de storage renderizados sem escape | escapeHtml() ou textContent |
| XSS via content script | Página maliciosa manipula DOM compartilhado | Shadow DOM, textContent, validação |
| Message spoofing | Página envia mensagem falsa para background | Validar sender.id, schemas Zod |
| Privilege escalation | Content script acessa API restrita | Separar privilégios por contexto |
| Data exfiltration | Extensão envia dados para servidor externo | Sem fetch para URLs externas |
| ReDoS | URL pattern com regex exponencial | matchUrlPattern() com proteção |
| Storage poisoning | Dados corrompidos no storage | Validar com Zod ao ler |
# Validação completa do projeto com script
./scripts/validate-step.sh types unit build
# Type-check encontra uso incorreto de tipos
npm run type-check
# Buscar padrões inseguros no código
grep -r "innerHTML" src/ --include="*.ts" | grep -v "escapeHtml"
grep -r "eval(" src/ --include="*.ts"
grep -r "new Function" src/ --include="*.ts"
grep -r "document.write" src/ --include="*.ts"
grep -r "unsafe-eval" . --include="*.json"
# Verificar permissões do manifest
cat manifest.json | grep -A 20 "permissions"
innerHTML, eval, etc.npm audit