Hola! 🙂
Dejo un resumen con apuntes de la clase:
- Exploit: programa informático, parte de un software o secuencia de comandos que se aprovecha de un error o vulnerabilidad para provocar un comportamiento no intencionado o imprevisto de un software, hardware o cualquier dispositivo electrónico
- Todo protocolo debe cumplir con un estándar de seguridad. Debemos dar por sentado que intentarán generar un exploit.
- Es importante auditar el código porque es muy difícil que un developer o un grupo de developers tenga todas las cuestiones de seguridad cubiertas al primer lanzamiento.
- Aquí es donde se vuelve relevante el testing, porque mediante su uso podemos disminuir el riesgo de sufrir exploits en el protocolo.
- Cuando Remix compila, transforma el código Solidity en Bytecode legible por la EVM.
- Es muy graves al deployar un contrato la falta de pruebas. Si no existe un archivo de pruebas en el repositorio, debemos dar por sentado que hay vulnerabilidades en el protocolo. Cada contrato (del conjunto de contratos del protocolo) debe tener un test propio. Se deben probar todas y cada una de las funciones.
- En remix es difícil testear. Se puede compilar en Remix, Hardhat, Foundry.
- Para deployar un contrato, se puede:
- Tener un nodo propio. Es muy dificultoso por distintas razones.
- Usar un nodo en Infura o Alchemy, para realizar la transacción del contrato y estas lo emiten a la red de Ethereum. Además, verifican el contrato en Etherscan automáticamente para las transacciones.
- Vulnerabilidades usuales en Contratos:
- Ataque “The entrancy”
- Ataque “Underflow” y ataque “Overflow”
- Errores de lógica
- https://consensys.net/blog/developers/ethereum-smart-contract-security-recommendations/ (Documentación de vulnerabilidades)
- https://ethernaut.openzeppelin.com/ (Challenges de seguridad)
Saludos!
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?