Poly Network fue atacado: un漏洞 en los contratos inteligentes causó que el keeper fuera manipulado

robot
Generación de resúmenes en curso

Análisis del incidente de ataque de Hacker a Poly Network

Recientemente, el protocolo de interoperabilidad entre cadenas Poly Network sufrió un ataque de Hacker, lo que generó una amplia atención en la industria. Según el análisis del equipo de seguridad, este ataque no fue causado por la filtración de la clave privada del keeper, sino que los atacantes modificaron la dirección del keeper del contrato EthCrossChainData utilizando datos construidos de manera ingeniosa y aprovechando una vulnerabilidad del contrato.

Principio del ataque

El núcleo del ataque radica en que la función verifyHeaderAndExecuteTx del contrato EthCrossChainManager puede ejecutar transacciones específicas de cadena cruzada a través de la función _executeCrossChainTx. Dado que el propietario del contrato EthCrossChainData es el contrato EthCrossChainManager, este último puede llamar a la función putCurEpochConPubKeyBytes del contrato EthCrossChainData para modificar el keeper del contrato.

El atacante utiliza la función verifyHeaderAndExecuteTx, pasando datos cuidadosamente diseñados, para hacer que la función _executeCrossChainTx llame a la función putCurEpochConPubKeyBytes del contrato EthCrossChainData, cambiando así el rol de keeper a la dirección especificada por el atacante. Una vez completado el reemplazo de la dirección del keeper, el atacante puede construir transacciones y extraer cualquier cantidad de fondos del contrato a su antojo.

Proceso de ataque

  1. El atacante primero llama a la función putCurEpochConPubKeyBytes a través de la función verifyHeaderAndExecuteTx del contrato EthCrossChainManager para cambiar el keeper.

  2. Después de que se cambió el keeper, los atacantes comenzaron a implementar una serie de transacciones de ataque para extraer fondos del contrato.

  3. Después del ataque, debido a que el keeper ha sido modificado, se rechazan las transacciones normales de otros usuarios.

  4. Este modo de ataque también tiene operaciones similares en la red de Ethereum.

Resumen

La clave del ataque radica en que el keeper del contrato EthCrossChainData puede ser modificado por el contrato EthCrossChainManager, y la función verifyHeaderAndExecuteTx del contrato EthCrossChainManager puede ejecutar los datos ingresados por el usuario a través de la función _executeCrossChainTx. Los atacantes aprovecharon esto para modificar con éxito el keeper del contrato EthCrossChainData a una dirección controlada por el atacante al construir datos específicos.

Este evento nos recuerda nuevamente que en el diseño de contratos inteligentes es necesario prestar especial atención a la gestión de permisos y a la seguridad en las llamadas a funciones. Para las funciones que pueden afectar parámetros clave, se deben implementar controles de acceso y mecanismos de verificación de seguridad más estrictos. Al mismo tiempo, la seguridad de los proyectos de cadena cruzada también necesita recibir más atención, ya que a menudo involucran grandes cantidades de fondos y lógicas de interacción complejas.

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
  • 3
  • Compartir
Comentar
0/400
GasFeeCriervip
· 07-11 15:43
Otra vez los contratos inteligentes fallando, qué malo es.
Ver originalesResponder0
SleepTradervip
· 07-11 02:54
Otra vez una Lección aprendida a posteriori de auditoría de seguridad
Ver originalesResponder0
ApyWhisperervip
· 07-08 15:52
Otra vez una vulnerabilidad en el contrato...
Ver originalesResponder0
  • Anclado
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)