Antes del despliegue oficial del proyecto DeFi, a través de la auditoría de seguridad del contrato, no solo se puede verificar globalmente la especificación del código, la situación de vulnerabilidad y la lógica comercial del proyecto. Al mismo tiempo, la auditoría del proyecto también juega un cierto papel en la formación de la imagen de la parte del proyecto en el mercado de inversión.
Cuando los inversionistas del mercado seleccionan proyectos, si la parte del proyecto tiene experiencia en auditoría de contratos y divulga públicamente información como el informe del auditor y la auditoría, la credibilidad de la inversión sin duda mejorará en gran medida. Además, el conocimiento perfecto de la parte del proyecto sobre la construcción de puestos de seguridad también dotará al proyecto de un valor adicional invisible.
Al mismo tiempo, la parte del proyecto DeFi mantiene una cooperación comercial a largo plazo con las empresas de auditoría de seguridad durante el proceso de operación, lo que será de gran beneficio tanto para la gestión de la seguridad como para la expansión comercial. Después de todo, durante el desarrollo a largo plazo del proyecto, el mecanismo de auditoría de seguridad por etapas puede detectar y ayudar de manera efectiva a resolver problemas de riesgo generales y parciales de manera oportuna.
Entonces, ¿cuáles son los principales procesos, contenido y características de las auditorías de contratos DeFi y esas "rutinas"?
Una vez que se alcanza la relación de cooperación de auditoría de contrato con la parte del proyecto DeFi, sobre la base de comprender la situación general del proyecto, incluida la estructura, el diseño comercial, etc., asigne un equipo de pruebas de seguridad con experiencia relevante en auditoría de proyectos para llevar a cabo especiales servicios y, al mismo tiempo, aclarar el alcance de las pruebas del proyecto y el enfoque de las necesidades correspondientes. Haga un buen trabajo de "tomar el pulso" en la etapa inicial. Los contenidos principales incluyen:
1. La parte del proyecto DeFi proporciona todo tipo de tecnologías, códigos, documentos y otros materiales que son verdaderos, efectivos y necesarios para la auditoría.
2. Antes de ingresar formalmente al proceso de prueba, el equipo de seguridad realizará una evaluación integral de los materiales proporcionados para determinar el ciclo.
3. Determinar el alcance de los servicios de prueba, incluidos módulos direccionales, códigos parciales, auditorías de seguridad integrales, etc.
4. Complete el acoplamiento de los requisitos relevantes, es decir, la confirmación final del código fuente, el programa de aplicación, la información del archivo y el entorno de prueba.
Para realizar auditorías de seguridad estrictas sobre la estandarización del código, la seguridad y la lógica comercial de los contratos de proyectos DeFi, después de que la prueba sea clara, los métodos convencionales para manejar las auditorías de contratos son:
Verificación formal
Análisis estático
Análisis dinámico
Caso típico
Revisión manual
El método formal es el medio más fiable para realizar un software seguro y creíble. Utiliza un sistema de símbolos basado en matemáticas para dar una definición estricta y una prueba formal de la corrección y seguridad del software. Entre ellos, una definición estricta se denomina especificación formal, que es una expresión lógica que describe las funciones o características del software de manera clara y concisa.
En la auditoría de contratos, los métodos formales pasan propiedades de requisitos cualitativos para demostrar que el programa está libre de ciertos tipos de vulnerabilidades de seguridad. Los métodos de prueba tradicionales, por otro lado, indican si un programa tiene una vulnerabilidad de seguridad al verificar que el código se comporte como se espera en un conjunto seleccionado de entradas, pero esto no puede probar que no existe el mismo tipo de vulnerabilidad de seguridad.
Además, los métodos de prueba tradicionales pueden pasar fácilmente por alto errores desencadenados en escenarios raros o maliciosos, así como errores causados por una gran cantidad de "eventos imposibles" que ocurren en sucesión. Sin embargo, los métodos formales pueden descubrir los errores sutiles antes mencionados al aclarar la intención del código y proporcionar una cobertura completa del espacio de entrada, mejorando así la seguridad y confiabilidad del programa.
El profesor Yang Xia, fundador de Chengdu Lianan y experto en investigación de verificación formal durante muchos años, dijo:
"Los métodos de verificación tradicionales no pueden agotar todas las situaciones, pero la verificación formal sí. Para la detección de vulnerabilidades de contratos inteligentes, este método es el más creíble y efectivo.
Como una herramienta personalizada desarrollada para la detección de seguridad de los contratos inteligentes de Ethereum, la herramienta de verificación formal automática de contratos inteligentes con un solo clic Beosin-VaaS de Chengdu Lianan puede ubicar con precisión la ubicación del código que contiene riesgos y señalar la causa del riesgo, detectando efectivamente los contratos inteligentes. la precisión de las vulnerabilidades de seguridad convencionales llega al 97 %, lo que proporciona una verificación de seguridad de "grado militar" para códigos de contratos inteligentes. "
En la auditoría de especificación de código, los principales elementos de prueba son:
Los problemas de la versión del compilador pueden dar lugar a varios problemas de seguridad conocidos. Los desarrolladores deben especificar en el código que el código del contrato utiliza la última versión del compilador y eliminar las advertencias del compilador.
Al mismo tiempo, el lenguaje de desarrollo de contratos inteligentes de Solidity está en iteración rápida, y la nueva versión del compilador ha dejado de usar algunas palabras clave, como throw, years, etc. Para eliminar posibles peligros ocultos, las palabras clave obsoletas de la versión actual del compilador debe estar deshabilitada.
En los contratos inteligentes, los códigos redundantes reducirán la legibilidad del código y pueden requerir más gas para la implementación del contrato, por lo que se deben encontrar y eliminar los códigos redundantes. Además, debe comprobarse estrictamente si las funciones de la biblioteca SafeMath se utilizan correctamente en el contrato para operaciones matemáticas.
Solidity maneja los errores mediante excepciones de restauración de estado, un mecanismo que deshace todos los cambios realizados en el estado en la llamada actual y todas sus llamadas secundarias, y señala el error a la persona que llama.
Las funciones afirmar y requerir se pueden usar para verificar una condición y generar una excepción si no se cumple la condición. La función de afirmación solo se puede usar para probar errores internos y verificar no variables. La función require se usa para confirmar la validez de las condiciones, como si las variables de entrada o las variables de estado del contrato cumplen las condiciones, o verificar el valor de retorno de una llamada de contrato externa.
La máquina virtual Ethereum necesita consumir gas para ejecutar el código del contrato. Cuando el gas es insuficiente, la ejecución del código arrojará una excepción de falta de gas y cancelará todos los cambios de estado. Los desarrolladores de contratos deben controlar el consumo de gas del código para evitar fallas en la ejecución de funciones debido a la insuficiencia de gas.
Además, es necesario verificar estrictamente si la visibilidad de la función del contrato cumple con los requisitos de diseño y si la función alternativa se utiliza correctamente en el contrato actual.
Actualmente, las vulnerabilidades de la lógica empresarial son más comunes en los proyectos DeFi. Debido al diseño impreciso de la lógica de negocios del proyecto, es muy probable que el desequilibrio interno del proyecto ocurra bajo ciertas circunstancias.
Cabe señalar que los proyectos DeFi se desarrollan en base a contratos inteligentes de blockchain y tienen muchas características más allá del sistema financiero tradicional, tales como:
Una sola transacción puede iniciar múltiples transacciones internas y puede revertirse si falla
Fichas deflacionarias
El código del contrato no se puede modificar
Al mismo tiempo, los errores de permisos de contratos son comunes en las auditorías, es decir, errores en la modificación de la visibilidad de las funciones en los contratos. Por lo general, esto se debe a que la persona que llama y los parámetros no se han verificado de manera efectiva, lo que hace que usuarios maliciosos llamen a la función, lo que genera grandes pérdidas.
De manera similar a los problemas de seguridad tradicionales, la configuración de permisos incorrectos y las comprobaciones de seguridad no válidas traerán grandes riesgos para el sistema. Pero la diferencia es que la inmutabilidad de los contratos inteligentes hace imposible que dichos problemas se solucionen de manera efectiva, incluso si se descubren.
Además, las vulnerabilidades de reingreso también son el foco de la auditoría. Específicamente, cuando el contrato inicia una llamada, el atacante puede usar las características de la llamada del contrato para llamar repetidamente a la función, lo que resulta en un error en la secuencia de ejecución esperada del contrato, robando así los activos de la cuenta de destino.
En las auditorías, los errores de código también se ven con alta frecuencia. Esto se debe principalmente a algunos errores de codificación debido a un error del desarrollador. Los más comunes son errores de unidad, olvidarse de multiplicar por precisión, errores de uso, etc. En el incidente de vulnerabilidad de YAM, cuando el código está realizando una reorganización de ajuste elástico, el código simplemente se olvidó de multiplicar la precisión, como se muestra en la figura:
Al tiempo que garantiza la detección en profundidad de código y vulnerabilidades, el negocio del proyecto también cuenta con auditorías relacionadas con la lógica comercial y la implementación, incluida la inspección de la información básica de los tokens involucrados en proyectos DeFi y la confirmación de funciones relacionadas con los estándares de token, especialmente Revisión y análisis de riesgo de acuñación, quema de tokens, cambio de propietario y otros permisos especiales.
Muchos proyectos tienen la lógica de transferencia de agencia. Cuando se trata de dicha lógica, muchas partes del proyecto requerirán directamente a los usuarios que autoricen el máximo de tokens al contrato de la parte del proyecto, como se muestra en la siguiente figura:
De esta manera, el contrato tiene derecho a transferir todos los fondos de los usuarios. Además, existe el problema de la doble autorización, cuando la parte del proyecto autoriza, inicia dos autorizaciones, una para la dirección del contrato y otra para la dirección externa, si el usuario no tiene cuidado con esto, enfrentará un gran riesgo de financiación.
La auditoría de contratos sirve en última instancia a la seguridad financiera de los proyectos DeFi, y muchos problemas en esta área están relacionados con funciones y algoritmos inadecuados. Por lo tanto, la auditoría del contrato es para señalar el contenido que puede causar riesgos de capital, es decir, peligros y códigos ocultos, lagunas, lógica y otros problemas que deben corregirse con urgencia.
En el informe de auditoría, además de la información básica como el tiempo de auditoría, la duración y el auditor, también reflejará las indicaciones de advertencia de inversión para el proyecto. El contenido central del informe de auditoría es reflejar los resultados de auditoría multifacéticos y multidimensionales del contrato inteligente bajo inspección en términos de diseño e implementación del código. Al mismo tiempo, el informe señalará todos los tipos de problemas de riesgo encontrados e informará al lado del proyecto para que puedan solucionarse.
A través del informe de auditoría, se indicarán en detalle los componentes de riesgo del contrato, incluidos los posibles ataques que se pueden encontrar y las vulnerabilidades en diferentes niveles y niveles. Sin embargo, la llamativa palabra "Aprobado" en el informe de auditoría de seguridad no debe utilizarse como la única base para que los inversores juzguen la inversión.
La auditoría del contrato no es una buena noticia para el proyecto en sí, sino un trabajo de seguridad necesario antes de entrar en línea, que es de gran importancia tanto para la parte del proyecto como para los inversores.
Ya sea que el mercado especulativo sea violento o esté deprimido, si no juegas a las cartas de acuerdo con la rutina, eventualmente estarás sujeto a la "rutina". Al echarle un vistazo, solo queda el pico de seguridad que previene los problemas antes de que sucedan, lo cual es majestuoso.
Tags:
El 24 de septiembre, en el foro principal de la Bund Conference, al predecir los cambios que traerá la tecnología financiera en el futuro, Jing Xiandong, presidente de Ant Group.
Cambios en las fluctuaciones de precios de BTC Desde principios de este año.
En el libro "El camino hacia la riqueza y la libertad", el autor Bodo Schaefer preguntó una vez a los lectores:Ahora hay dos opciones, una es conseguir 50.000 euros en 6 meses.
Antes del despliegue oficial del proyecto DeFi, a través de la auditoría de seguridad del contrato, no solo se puede verificar globalmente la especificación del código.
Con Substrate, el tiempo de ejecución es su lienzo de blockchain.
Yearn Finance, como proyecto innovador en el auge de esta ola de DeFi.
El mercado continuó subiendo ayer, alcanzando un máximo por encima de $10 900 y luego comenzó a retroceder. Todavía ronda los $10 800 y aún no se ha estabilizado en $10 800. El volumen de hoy y de ayer casi ha aumenta.