Communitygithub.com

auditoría-de-seguridad-de-smart-contracts-con-foundry

Realiza una auditoría pre-despliegue de proyectos Foundry combinando análisis estático, ejecución simbólica, pruebas basadas en propiedades y revisión manual para detectar vulnerabilidades antes de lanzar a mainnet.

¿Qué es auditoría-de-seguridad-de-smart-contracts-con-foundry?

Esta habilidad automatiza una auditoría de seguridad en profundidad para contratos inteligentes desarrollados con Foundry, utilizando cuatro técnicas complementarias: análisis estático con Slither (90+ detectores) y Aderyn (Cyfrin, Rust), ejecución simbólica opcional con Mythril, pruebas basadas en propiedades con fuzzing e invariantes, y una revisión manual estructurada. Está diseñada para ejecutarse del lado del desarrollador antes del despliegue, bloqueando el lanzamiento si se encuentran hallazgos de alta/crítica, pruebas fallidas, secretos filtrados o cobertura baja en código que maneje valor. Es especialmente útil para contratos que gestionan tokens, vaults, staking, AMMs, puentes, oráculos o gobernanza, y asume Solidity ^0.8.x con Foundry instalado. La herramienta unificada emite un reporte JSON con identificadores SWC, severidad, origen y remediación, y una compuerta PASS/FAIL que decide si el contrato está listo para producción.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/mukul975/Anthropic-Cybersecurity-Skills/tree/main/skills/auditing-foundry-smart-contract-security

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Auditoría de Seguridad de Smart Contracts con Foundry

Visión General

Los contratos inteligentes desplegados son inmutables y custodian fondos reales, por lo que un error enviado a mainnet no puede corregirse — solo puede ser explotado. La mayoría de las pérdidas catastróficas en DeFi provienen de un pequeño conjunto de clases recurrentes: reentrancia, control de acceso roto, manipulación de oráculos/precios, y aritmética o llamadas externas no verificadas.

Esta habilidad ejecuta una auditoría de defensa en profundidad previa al despliegue de un proyecto Foundry, superponiendo cuatro técnicas independientes que cada una detecta lo que las otras pasan por alto:

  1. Análisis estático — slither (90+ detectores) y aderyn (Cyfrin, Rust) escanean el AST/IR en segundos en busca de anti-patrones conocidos.
  2. Ejecución simbólica — mythril (opcional, lento) explora caminos de ejecución y resuelve SMT para bugs profundos de aritmética/reentrancia.
  3. Pruebas basadas en propiedades — forge test con fuzzing (testFuzz_*) y pruebas de invariantes (invariant_* + contratos handler con variables fantasma) demuestra que las propiedades a nivel de protocolo se cumplen en millones de secuencias aleatorias.
  4. Revisión manual + higiene de claves — una lista de verificación estructurada (ver references/vulnerability-checklist.md) y una auditoría de secretos/keystore para que ninguna clave privada viva en texto plano y el despliegue pase por un keystore cifrado de cast (ver references/secure-deployment-and-keys.md).

La habilidad es del lado del desarrollador y previa al despliegue — la ejecuta el ingeniero que construye el contrato, no un SOC después de un incidente. Los hallazgos bloquean el despliegue: cualquier hallazgo estático alto/crítico, prueba fallida, clave filtrada o cobertura baja = FAIL.

Cuándo Usarla

  • Antes de desplegar cualquier contrato Solidity a una testnet o cadena EVM de mainnet.
  • Al escribir o revisar un proyecto Foundry (foundry.toml, src/, test/, script/).
  • Cuando un contrato maneja valor: tokens (ERC-20/721/1155), vaults, staking, AMMs, puentes, gobernanza.
  • Al agregar pruebas de fuzzing o invariantes, o cuando se desconoce la cobertura de funciones que mueven valor.
  • Al cablear scripts de despliegue — para verificar que las claves están en un keystore cifrado, no en texto plano de .env.
  • Al integrar un oráculo de precios, llamada externa, delegatecall o proxy actualizable.
  • Al clasificar un informe de Slither/Aderyn y necesitar separar bugs reales de falsos positivos.

Prerrequisitos

  • Foundry instalado (forge, cast, anvil): curl -L https://foundry.paradigm.xyz | bash && foundryup
  • Slither + solc: pip install slither-analyzer y solc-select install <ver> && solc-select use <ver>
  • Aderyn (recomendado): cargo install aderyn (o npm i -g @cyfrin/aderyn)
  • Mythril (opcional, ejecución simbólica lenta): pip install mythril
  • gitleaks (escaneo de fugas de claves): ver la habilidad complementaria implementing-secret-scanning-with-gitleaks
  • Un proyecto Foundry que compile (forge build exitoso) — los analizadores necesitan artefactos de compilación.
  • Se asume Solidity ^0.8.x (con comprobaciones de desbordamiento incorporadas); los contratos pre-0.8 necesitan revisión adicional de SafeMath.

Instala las herramientas Python en un virtualenv (recomendado en distribuciones gestionadas externamente). Nunca ejecutes análisis contra código fuente de contratos no confiables en una máquina con billeteras financiadas desbloqueadas.

Pasos

Paso 1: Compilar y verificar el proyecto

forge build                    # los analizadores necesitan artefactos frescos
forge fmt --check              # comprobación de estilo (opcional)
cat foundry.toml               # nota la versión de solc, optimizador, remappings, evm_version

Paso 2: Análisis estático (rápido, ejecutar siempre)

# Slither — proyecto completo (usa foundry.toml + remappings automáticamente)
slither . --json slither-report.json

# Aderyn — analizador Cyfrin Rust, detectores complementarios
aderyn . -o aderyn-report.json

O ejecuta el orquestador empaquetado que corre ambos, desduplica y bloquea el resultado:

python3 scripts/agent.py --project . --output audit-report.json

Paso 3: Ejecución simbólica en contratos críticos (opcional, lento)

# Solo en el(los) contrato(s) de mayor valor — Mythril es explosivo en caminos
myth analyze src/Vault.sol --solc-json mythril.config.json --execution-timeout 300 -o json
# o: python3 scripts/agent.py --project . --mythril src/Vault.sol

Paso 4: Pruebas basadas en propiedades — fuzzing + invariantes

forge test -vvv                                  # pruebas unitarias + fuzzing
forge coverage --report summary                  # cobertura del código que mueve valor
forge test --match-test invariant_ -vvv          # suite de invariantes (basada en handler)

Cada contrato que mueva valor debería tener pruebas de invariantes con un handler (entradas acotadas, variables fantasma, targetContract(handler)) — no solo pruebas unitarias. Ver references/api-reference.md para el patrón handler, y escribe un test_RevertWhen_* (con vm.expectRevert) para cada guardia de control de acceso.

Paso 5: Revisión manual contra la lista de verificación

Recorre references/vulnerability-checklist.md para cada contrato: reentrancia (checks-effects-interactions / nonReentrant), control de acceso, manipulación de oráculos, delegatecall/layout de almacenamiento en proxies, valores de retorno no verificados, tx.origin, aleatoriedad débil, DoS, front-running/MEV, y trampas específicas de ERC (carrera de approve, fee-on-transfer, rebasing).

Paso 6: Higiene de claves y despliegue seguro

gitleaks detect --no-banner            # sin claves privadas / mnemónicos / .env commiteados
git ls-files | grep -E '\.env$|keystore' && echo "WARN: secretos rastreados por git"

# Importa la clave de despliegue UNA VEZ en un keystore cifrado — nunca una variable PRIVATE_KEY en texto plano
cast wallet import deployer --interactive

# Despliega mediante la cuenta del keystore (primero en testnet), simula antes de --broadcast
forge script script/Deploy.s.sol --account deployer --rpc-url <testnet> --broadcast --verify

Ver references/secure-deployment-and-keys.md para las reglas completas de endurecimiento (higiene de MetaMask, hardware wallet para mainnet, confianza en RPC, verificación post-despliegue).

Paso 7: Clasificación e informe

Combina los resultados de Slither + Aderyn + Mythril + pruebas, desduplica por (archivo, línea), descarta falsos positivos confirmados, clasifica por explotabilidad × impacto financiero, y mapea cada uno a su ID SWC. El orquestador emite audit-report.json con una compuerta PASS/FAIL.

Salida Esperada

Un reporte de auditoría JSON que lista hallazgos con identificadores SWC, severidad, herramienta fuente, contrato/función/línea afectada, y remediación; más el resumen de pruebas/cobertura y una única compuerta PASS / FAIL para el despliegue. FAIL ante cualquier hallazgo estático alto/crítico, prueba fallida, secreto filtrado, o cobertura por debajo del umbral configurado en código que mueve valor.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

abusing-dpapi-for-credential-access

Extract and decrypt Windows DPAPI-protected secrets (Credential Manager, browser logins/cookies, Wi-Fi credentials, KeePass keys) online or offline using SharpDPAPI, SharpChrome, Mimikatz, or Impacket

abusing-shadow-credentials-for-privesc

Take over Active Directory accounts by writing attacker-controlled public keys to msDS-KeyCredentialLink (Shadow Credentials) with pyWhisker, Whisker, or Certipy, then authenticate via PKINIT to recover the target

achieving-cmmc-level-2-compliance

>-

acquiring-disk-image-with-dd-and-dcfldd

Create forensically sound bit-for-bit disk images with dd or dcfldd on a Linux forensic workstation, preserving evidence integrity through hash verification (MD5/SHA) during acquisition. Use when imaging a suspect drive, USB device, or memory card for investigation, preserving volatile disk evidence during incident response, or producing a verified copy for legal or law-enforcement proceedings before any destructive analysis.

analyzing-active-directory-acl-abuse

Detect dangerous ACL misconfigurations in Active Directory using ldap3

analyzing-android-malware-with-apktool

Perform static analysis of Android APK malware using apktool for resource decompilation, jadx for Java source recovery, and androguard for manifest inspection, dangerous permission-combination detection, and identification of obfuscated code, dynamic code loading, and reflection-based API calls. Use to statically triage a suspicious APK without executing it or to build mobile malware detection rules.

analyzing-api-gateway-access-logs

Parses API Gateway access logs (AWS API Gateway, Kong, Nginx) to detect

analyzing-apt-group-with-mitre-navigator

Query ATT&CK data with attackcti, mitreattack-python, and stix2, then build MITRE ATT&CK Navigator layers and multi-layer heatmap overlays mapping one or more APT groups

analyzing-azure-activity-logs-for-threats

Queries Azure Monitor activity logs and sign-in logs via azure-monitor-query

analyzing-bootkit-and-rootkit-samples

Analyzes bootkit and advanced rootkit malware infecting the Master

analyzing-browser-forensics-with-hindsight

Parse Chromium-based browser databases with Hindsight to extract and correlate browsing history, downloads, cookies, cached content, autofill data, saved passwords, and extensions from Chrome, Edge, Brave, Opera, and Vivaldi into a unified timeline (XLSX, JSON, or SQLite output). Use during incident response, insider-threat investigations, or criminal cases when you need to reconstruct a user

analyzing-campaign-attribution-evidence

Systematically evaluate cyber-campaign evidence to attribute an operation to a threat actor, using the Diamond Model and Analysis of Competing Hypotheses (ACH) to weigh infrastructure overlaps, TTP consistency, malware code similarity, and timing/language artifacts into confidence-weighted attribution assessments. Use when an incident investigation needs a defensible attribution confidence level.

analyzing-certificate-transparency-for-phishing

Monitor Certificate Transparency logs using crt.sh and Certstream to

analyzing-cloud-storage-access-patterns

Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.

analyzing-cobalt-strike-beacon-configuration

Extract and analyze Cobalt Strike beacon configuration from PE files

analyzing-cobaltstrike-malleable-c2-profiles

Parse and analyze Cobalt Strike Malleable C2 profiles with dissect.cobaltstrike (profiles and beacon-payload configs) and pyMalleableC2 (AST parsing) to extract HTTP/DNS transforms, URIs, headers, sleep/jitter, and injection behavior, then generate network detection signatures. Use when reverse-engineering a captured malleable profile or building detections against Cobalt Strike Beacon traffic.

analyzing-command-and-control-communication

Analyzes malware C2 communication over HTTP, HTTPS, DNS, and custom

analyzing-cyber-kill-chain

Analyzes intrusion activity against the Lockheed Martin Cyber Kill Chain

analyzing-disk-image-with-autopsy

Perform comprehensive forensic analysis of raw (dd), E01, or AFF disk images with Autopsy and The Sleuth Kit, recovering deleted files, examining metadata and embedded artifacts, keyword searching, and building investigation timelines with visual reports. Use for structured analysis of a forensic disk image or when stakeholders need visual reports from evidence.

analyzing-dns-logs-for-exfiltration

Analyzes DNS query logs to detect data exfiltration via DNS tunneling,

Skills relacionados