一键导入
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