solidity-security
Desarrollo Seguro de Contratos Inteligentes
También disponible en: wshobson
Previene vulnerabilidades costosas en tu código Solidity. Esta habilidad proporciona patrones de seguridad probados, listas de verificación para detectar vulnerabilidades y técnicas de optimización de gas utilizadas por auditores profesionales para proteger protocolos DeFi y contratos inteligentes.
Descargar el ZIP de la skill
Subir en Claude
Ve a Configuración → Capacidades → Skills → Subir skill
Activa y empieza a usar
Pruébalo
Usando "solidity-security". ¿Es segura esta función withdraw? function withdraw() public { uint256 amount = balances[msg.sender]; payable(msg.sender).transfer(amount); balances[msg.sender] = 0; }
Resultado esperado:
Esta función es VULNERABLE a reentrada. La llamada externa ocurre antes de la actualización del estado. Un atacante puede llamar recursivamente a withdraw antes de que el saldo se establezca en cero. CORRECCIÓN: Aplica el patrón Comprobaciones-Efectos-Interacciones: primero establece balances[msg.sender] = 0, luego realiza la llamada externa. Alternativamente, usa ReentrancyGuard de OpenZeppelin con el modificador nonReentrant.
Usando "solidity-security". ¿Cómo añado control de acceso a mi función solo para administradores?
Resultado esperado:
Importa el contrato Ownable de OpenZeppelin y usa el modificador onlyOwner. Alternativamente, implementa control de acceso basado en roles con un mapping y un modificador personalizado. Asegúrate de que la función valida que msg.sender está autorizado antes de ejecutar operaciones sensibles.
Auditoría de seguridad
SeguroAll 72 static analysis findings are false positives. The detected patterns (shell backticks, dynamic requires, weak cryptography) exist within markdown code blocks demonstrating Solidity security concepts and JavaScript testing examples. This skill contains only educational documentation with no executable code. The skill legitimately teaches smart contract security best practices including reentrancy prevention, access control, and gas optimization.
Puntuación de calidad
Lo que puedes crear
Construcción de un Protocolo DeFi
Implementa contratos de préstamo, endeudamiento o intercambio seguros con guards de reentrada y control de acceso adecuados.
Auditoría de Contratos Inteligentes
Revisa contratos existentes en busca de vulnerabilidades antes del despliegue a mainnet o integración.
Aprendizaje de Seguridad en Solidity
Comprende vectores de ataque comunes y patrones de mitigación probados para desarrollo seguro.
Prueba estos prompts
Revisa mi contrato Solidity en busca de vulnerabilidades comunes incluyendo reentrada, desbordamiento y problemas de control de acceso. Señala cualquier patrón inseguro y sugiere correcciones.
Ayúdame a añadir protección contra reentrada a mi función withdraw. Muéstrame tanto el patrón Comprobaciones-Efectos-Interacciones como el enfoque con ReentrancyGuard de OpenZeppelin.
Analiza mi contrato en busca de oportunidades de optimización de gas. Enfócate en empaquetado de almacenamiento, uso de calldata y reducción de operaciones redundantes manteniendo la seguridad.
Revisa mi contrato para preparación de auditoría. Verifica documentación NatSpec, validación de entradas, mecanismos de parada de emergencia y emisión adecuada de eventos. Crea una lista de verificación de seguridad.
Mejores prácticas
- Aplica siempre el patrón Comprobaciones-Efectos-Interacciones: valida entradas, actualiza el estado, luego realiza llamadas externas
- Usa contratos auditados de OpenZeppelin para ReentrancyGuard, Ownable y Pausable en lugar de implementaciones personalizadas
- Habilita Solidity 0.8+ para protección integrada contra desbordamiento/subdesbordamiento o usa la librería SafeMath para versiones anteriores
Evitar
- Nunca uses tx.origin para autenticación - puede ser vulnerado mediante phishing por contratos maliciosos
- Evita hacer llamadas externas antes de actualizar el estado del contrato, ya que esto permite ataques de reentrada
- No uses pragma flotante - siempre fija una versión específica de Solidity para asegurar compilación determinista
Preguntas frecuentes
¿Cuál es la vulnerabilidad más común en contratos inteligentes?
¿Necesito SafeMath con Solidity 0.8+?
¿Debo usar msg.sender o tx.origin para autenticación?
¿Cuál es la diferencia entre patrones de pago pull y push?
¿Cómo preparo mi contrato para una auditoría profesional?
¿Puede esta habilidad reemplazar una auditoría de seguridad profesional?
Detalles del desarrollador
Autor
sickn33Licencia
MIT
Repositorio
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/solidity-securityRef.
main
Estructura de archivos