Guía de seguridad de Finanzas descentralizadas: estrategias de prevención para Flash Loans, manipulación de precios y ataques de reentrada

robot
Generación de resúmenes en curso

Finanzas descentralizadas comunes vulnerabilidades de seguridad y medidas de prevención

Recientemente, un experto en seguridad compartió una clase de seguridad de Finanzas descentralizadas para los miembros de la comunidad. Revisó los importantes eventos de seguridad que ha enfrentado la industria Web3 en más de un año, exploró las razones detrás de estos eventos de seguridad y cómo evitarlos, resumió las vulnerabilidades de seguridad comunes de los contratos inteligentes y las medidas de prevención, y también ofreció algunos consejos de seguridad para los proyectos y los usuarios comunes.

Los tipos comunes de vulnerabilidades en las Finanzas descentralizadas incluyen préstamos relámpago, manipulación de precios, problemas de permisos de funciones, llamadas externas arbitrarias, problemas con la función fallback, vulnerabilidades en la lógica de negocio, filtración de claves privadas y ataques de reentrada. Este artículo se centrará en los préstamos relámpago, la manipulación de precios y los ataques de reentrada.

Cobo Finanzas descentralizadas seguridad clase (parte 2): vulnerabilidades de seguridad comunes en Finanzas descentralizadas y prevención

Préstamo relámpago

El préstamo relámpago en sí es una innovación de las Finanzas descentralizadas, pero cuando es explotado por hackers, pueden tomar prestados grandes cantidades de dinero sin ningún costo, realizar arbitraje y devolverlo, obteniendo enormes ganancias solo pagando una pequeña tarifa de Gas.

Muchos proyectos de Finanzas descentralizadas parecen tener altos rendimientos, pero en realidad, el nivel de los equipos detrás de estos proyectos varía. Algunos proyectos pueden haber comprado su código, y aunque el código en sí no tenga vulnerabilidades, todavía pueden existir problemas lógicos. Por ejemplo, un proyecto puede emitir recompensas en un momento fijo según la cantidad de tokens que posean los titulares, pero los atacantes pueden aprovechar los préstamos relámpago para comprar una gran cantidad de tokens y obtener la mayor parte de las recompensas en el momento de la emisión.

Además, hay algunos proyectos que calculan precios a través de tokens, los cuales pueden influir en los precios mediante préstamos relámpago. Como parte del proyecto, se debe estar alerta a estas cuestiones.

Manipulación de precios

El problema del control de precios está estrechamente relacionado con los préstamos relámpago, y hay dos tipos comunes:

  1. Al calcular el precio se utilizan datos de terceros, pero el uso incorrecto o la falta de verificación provocan que el precio sea manipulado maliciosamente.

  2. Utilizar la cantidad de tokens en ciertas direcciones como variable de cálculo, y el saldo de tokens en esas direcciones puede ser temporalmente aumentado o disminuido.

Ataque de reentrada

Uno de los principales peligros de llamar a contratos externos es que pueden tomar el control del flujo y realizar cambios inesperados en los datos mediante la invocación de funciones. Por ejemplo:

solidez mapeo ( dirección => uint) saldoPrivado de usuarios;

función withdrawBalance() pública { uint amountToWithdraw = userBalances[msg.sender]; (bool éxito, ) = msg.sender.call.value(cantidadARetirar)(""); require(success); userBalances[msg.sender] = 0; }

Debido a que el saldo del usuario se establece en 0 solo al final de la función, la segunda (y posteriores) llamadas aún tendrán éxito y seguirán extrayendo el saldo una y otra vez.

Para resolver el problema de reentrada, es necesario tener en cuenta los siguientes puntos:

  1. No solo se trata de prevenir problemas de reentrada de una sola función.
  2. Seguir el patrón de Checks-Effects-Interactions para la codificación
  3. Utilizar un modificador de protección contra reentradas que haya sido validado por el tiempo

En este campo hay muchas mejores prácticas de seguridad que deberíamos utilizar directamente en lugar de reinventar la rueda. Usar soluciones maduras y probadas tiene muchas menos probabilidades de fallar que desarrollar nuevas por nuestra cuenta.

Sugerencias de seguridad para el equipo del proyecto

  1. El desarrollo de contratos sigue las mejores prácticas de seguridad.

  2. Los contratos pueden ser actualizados y pausados: muchos ataques no son de una sola vez para transferir todas las monedas, sino que se ejecutan en múltiples transacciones. Si hay un mecanismo de monitoreo relativamente sólido, se puede detectar y pausar el contrato a tiempo, lo que reduce efectivamente las pérdidas.

  3. Uso de bloqueos de tiempo: Si hay un bloqueo de tiempo, se puede dar suficiente tiempo para que las personas detecten anomalías y tomen medidas.

  4. Aumentar la inversión en seguridad y establecer un sistema de seguridad completo: la seguridad es un sistema, que no solo incluye la auditoría de contratos, sino también la gestión de llaves privadas, modelos económicos y otros aspectos.

  5. Aumentar la conciencia de seguridad de todos los empleados: Muchos problemas de seguridad se pueden evitar aumentando la vigilancia.

  6. Prevenir el mal uso interno, mejorando la eficiencia mientras se refuerza el control de riesgos: la implementación de mecanismos como firmas múltiples y bloqueos de tiempo puede aumentar la seguridad sin comprometer la eficiencia.

  7. Seguridad de la introducción de terceros: Se deben realizar verificaciones de seguridad tanto para upstream como para downstream, especialmente con respecto a los contratos que no son de código abierto, que deben manejarse con especial precaución.

¿Cómo pueden los usuarios/LP determinar si un contrato inteligente es seguro?

  1. ¿El contrato es de código abierto?: No participes en proyectos que no sean de código abierto.

  2. ¿El propietario utiliza múltiples firmas, y estas firmas son descentralizadas?

  3. Ver el estado actual de las transacciones del contrato: incluye el tiempo de despliegue, el número de interacciones, etc.

  4. ¿Es el contrato un contrato de agencia, es actualizable, tiene un bloqueo de tiempo?

  5. ¿El contrato ha sido auditado por varias instituciones y los permisos del propietario son demasiado amplios?

  6. Atención a los oráculos: Los proyectos que usan oráculos conocidos son relativamente más seguros; hay que tener especial cuidado con los oráculos construidos internamente o que son fácilmente manipulables.

En resumen, en el entorno de Web3, mantenerse alerta y hacer varias preguntas del porqué puede ayudar a evitar muchos riesgos potenciales. Tanto los desarrolladores de proyectos como los usuarios comunes deben dar importancia a los problemas de seguridad y establecer una conciencia de seguridad completa y mecanismos de prevención.

DEFI3.33%
Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • 6
  • Compartir
Comentar
0/400
MEVHunterNoLossvip
· hace15h
Estos problemas de seguridad son una tontería.
Ver originalesResponder0
AirdropHustlervip
· 08-01 17:58
No sería mejor enseñar cómo hacer un Airdrop.
Ver originalesResponder0
BearMarketBuildervip
· 08-01 17:53
Ya has publicado todas las vulnerabilidades, ¿cómo se supone que los hackers jueguen?
Ver originalesResponder0
LightningAllInHerovip
· 08-01 17:51
No digas más, la última vez perdí todo por culpa de los Flash Loans.
Ver originalesResponder0
FUD_Whisperervip
· 08-01 17:45
Después de más de medio año de hacer defi, no soy tan rápido como un hacker.
Ver originalesResponder0
defi_detectivevip
· 08-01 17:42
¿Otra vez ser engañados?
Ver originalesResponder0
Opere con criptomonedas en cualquier momento y lugar
qrCode
Escanee para descargar la aplicación Gate
Comunidad
Español
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)