Blog de AuditOne
Cómo leer un informe de auditoría de un contrato inteligente

¿Qué incluye un informe de auditoría?

Las auditorías de contratos inteligentes se realizan por motivos de seguridad, pero la mayoría de los proyectos las consideran una estrategia de marketing. Sea cual sea el motivo por el que un proyecto se somete a una auditoría, al final se elabora un informe con información útil: en él se detallan el alcance, los hallazgos, la gravedad y las recomendaciones. Por lo general, los proyectos hacen que su equipo de desarrollo revise el informe y resuelva cualquier problema crítico antes de publicar la versión definitiva. Saber cómo leer un informe de auditoría de contratos inteligentes puede resultar una tarea abrumadora para los inversores.

Leer el informe no tiene por qué ser complicado. Voy a desglosar las distintas secciones de un informe de auditoría, con la esperanza de que así resulte más fácil de entender. Utilizaremos la plantilla actual de AuditOne.io.

Introducción

En esta sección del informe se indican los auditores responsables de la auditoría y el proyecto que la solicitó. Se incluye una breve descripción del proyecto y sus objetivos.

En esta sección también se destaca la metodología. AuditOne cuenta con una herramienta interna de pruebas automatizadas que permite auditar rápidamente el contrato. Una vez finalizado este proceso, los expertos en auditoría pueden revisar manualmente los contratos utilizando diversos métodos. El análisis automatizado permite detectar vulnerabilidades comunes, lo que da al auditor más tiempo para examinar el contrato a fondo. La combinación de estos métodos se complementa mutuamente, ya que el análisis manual puede identificar falsos positivos que puedan surgir como consecuencia del análisis automatizado.

Ámbito de aplicación

El alcance de la auditoría consiste en analizar los archivos de contratos inteligentes facilitados por el proyecto y que se encuentran en su repositorio.

Indica explícitamente el tipo de contrato que auditarán los auditores, por ejemplo, ERC-20 o BEP-20. En cuanto al lenguaje de los contratos inteligentes, el más habitual es Solidity, aunque algunos proyectos, como Solana, utilizan Rust. La plataforma determina en qué red se encuentra el contrato: Ethereum, Polkadot y Tezos, por citar algunas.

Ejemplo de alcance de AuditOne

Es necesario comprobar el código, independientemente de si el equipo de desarrollo ha realizado pruebas unitarias o no. Facilitar las pruebas unitarias al auditor resulta de gran ayuda. Se requiere una lista de todos los contratos auditados; los inversores pueden consultar la red para comprobar si se trata de los contratos con los que están interactuando o si siguen en uso.

La documentación es fundamental, ya que ayuda a los auditores a comprender el proyecto más rápidamente. Si el equipo la ha elaborado, demuestra que se ha esforzado en el proyecto.

Un «commit» específico te permite saber qué versión del código se auditó en su repositorio y, si la versión actual no es esa, es posible que se hayan realizado los mismos cambios que tuvieron un impacto significativo en la auditoría.

Resumen ejecutivo

Resumen de las conclusiones del informe. Contiene información esencial, como las partes implicadas en la auditoría, qué se ha auditado y cuánto tiempo lleva completar la auditoría. Y, lo más importante, una breve explicación de las conclusiones. Una tabla con el número de vulnerabilidades detectadas, sus niveles de gravedad y su descripción.

Encontrar una vulnerabilidad no significa que el contrato o el proyecto sean malos. El objetivo de la auditoría es precisamente descubrirla. Lo más importante es que el equipo tome medidas al respecto.

Definiciones de gravedad

En la mayoría de los informes de auditoría, es posible que te hayas encontrado con los términos «crítico», «alto», «medio», «bajo», «informativo» e «indeterminado». Suelen aparecer en una tabla junto a sus definiciones.

Lo acortaré

Urgente: ¡Activa la alarma de incendios y soluciona esto inmediatamente!

Alto: Hay que tener cuidado; los piratas informáticos podrían aprovechar esta vulnerabilidad si se dan las condiciones adecuadas.

Medium: Si no pierdes nada por no arreglarlo, ¿por qué no lo arreglas?

Punto negativo: Uso de sintaxis obsoleta; ¡basta ya!

Nota informativa: No se están siguiendo las mejores prácticas; deberías hacerlo. No es solo una cuestión estética.

Sin determinar: No sabemos qué podría ser; quizá sea un lunar o un cáncer.

Lista de comprobación de vulnerabilidades [Registro SWC]

AuditOne exige a sus auditores que revisen una lista de verificación específica de vulnerabilidades conocidas durante las pruebas. Se trata de una lista exhaustiva de registros de clasificación de puntos débiles conocidos en los contratos inteligentes. Además, incluye soluciones para corregir algunos de estos errores.

Resultados de las pruebas automatizadas

Utilizamos una herramienta de pruebas interna que genera un informe. La herramienta analiza exhaustivamente el contrato antes de proporcionar una puntuación y una lista de las vulnerabilidades detectadas. Las herramientas de pruebas automatizadas, como Slither, son excelentes para verificar al instante si el código añadido o nuevo presenta vulnerabilidades o errores. Aunque no está directamente relacionado con la seguridad de los contratos inteligentes, el propio proyecto a menudo se enfrenta a riesgos relacionados con el acceso a la cartera de tesorería; por ejemplo, una firma múltiple (multi-sig) para evaluar el riesgo de colusión o de errores operativos. Otro aspecto esencial es el diseño de la economía del token, que en última instancia determina la oferta y las emisiones, lo que puede dar lugar a fallos y a una mayor presión de venta sobre el token. Los proyectos que son conscientes de estos riesgos y los gestionan tienen más posibilidades de alcanzar el éxito a largo plazo.

Resumen de la auditoría

Esta sección se centra en la madurez del código fuente. Abarca la calidad del código, la documentación, la seguridad y la arquitectura.

Conclusiones de la auditoría

Podría decirse que una de las partes más importantes del informe se encuentra al final, y se trata de información valiosa para los usuarios e inversores del protocolo.

Como se ha indicado anteriormente, los hallazgos se clasifican en varios niveles, que van desde «crítico» hasta «informativo». El nivel de gravedad permite a los lectores comprender cuáles de los problemas detectados pueden afectar de manera significativa al protocolo publicado. Los problemas se definen y van acompañados de un fragmento del código afectado. Tras leer esta sección, por lo general se puede apreciar el impacto que tendría el problema si no se solucionara.

El auditor enumera sus recomendaciones para solucionar este problema. Esto es fundamental, ya que podría poner de manifiesto fallos en el protocolo o en el proceso de desarrollo.

Avisos legales

Esta sección es sencilla: el hecho de que el proyecto haya sido sometido a una auditoría no significa que sea seguro.

Auditoría ≠ Seguridad

Por último

Las auditorías no garantizan la seguridad; incluso tras varias auditorías pueden pasar desapercibidos errores que, si se explotan, podrían comprometer todo el protocolo.

Seguir las recomendaciones de los auditores puede contribuir en gran medida a garantizar la seguridad del código fuente. No todas las vulnerabilidades pueden detectarse durante el proceso de auditoría. AuditOne.io puede proporcionarte auditores para garantizar que tus contratos inteligentes estén protegidos.

Reserva tu consulta gratuita sobre seguridad:

Google Calendar:
https://calendar.app.google/Ai15eyQhiV5c1pBXA
Telegram:
https://t.me/m_ndr
En este artículo
Autor
Daniel Francis
Responsable sénior de producto
¡Comparte esto con tu comunidad!
xtelegramlinkedin
Artículos recientes

¿Buscas más contenido interesante?

Descubre nuestra comunidad
Discord
x
Twitter
Medium
LinkedIn
YouTube