Back to Blog

Cuando "SafeTransfer" Se Vuelve Inseguro: Lecciones del Incidente de Seguridad de QBridge

Code Auditing
January 28, 2022
3 min read

El 28 de enero, QBridge fue atacado y los valores de los activos, alrededor de 80 millones de dólares, fueron robados. Tras el análisis, encontramos que la causa raíz en el código es la implementación de la función safeTransfer (y safeTransferFrom).

La Causa Raíz

En primer lugar, el proyecto no utiliza la popular biblioteca SafeERC20 de OpenZeppelin para la transferencia de tokens. En cambio, implementaron una biblioteca llamada SafeToken.

En segundo lugar, la implementación no verifica que el objetivo sea un contrato válido (ni si es una dirección cero).

En tercer lugar, la llamada de bajo nivel del EVM no devuelve falso cuando el contrato objetivo es cero. Esto contradice el sentido común del desarrollador.

Por supuesto, el incidente también tiene otras razones, por ejemplo, la dirección cero está incluida en la lista blanca. Sin embargo, si el código puede manejar correctamente este caso especial, entonces no es vulnerable.

BTW: Existen otros proyectos que utilizan código similar. Pueden ser susceptibles al mismo problema.

Experimento

Para confirmar la tercera razón de que la VM no devuelve falso cuando el contrato objetivo es cero, desarrollamos un contrato de prueba, como se muestra a continuación.

La ejecución de TestSafeTransfer.test() no se revertirá.

Lecciones y Cómo Mitigar el Riesgo

Sugerimos que

  • Utilice la biblioteca popular en lugar de inventar su propia solución, a menos que tenga una razón muy muy buena,
  • verifique el saldo antes y después de la transferencia de activos para asegurarse de que la cantidad de activos transferidos cumple con las expectativas. Esto también puede evitar el problema del token de deflación e inflación.

Acerca de BlockSec

BlockSec es una empresa pionera en seguridad blockchain establecida en 2021 por un grupo de expertos en seguridad de renombre mundial. La empresa está comprometida con mejorar la seguridad y la usabilidad para el emergente mundo Web3 con el fin de facilitar su adopción masiva. Con este fin, BlockSec ofrece servicios de auditoría de seguridad para contratos inteligentes y cadenas EVM, la plataforma Phalcon para el desarrollo de seguridad y el bloqueo proactivo de amenazas, la plataforma MetaSleuth para el rastreo e investigación de fondos, y la extensión MetaDock para que los constructores de web3 naveguen de manera eficiente en el mundo cripto.

Hasta la fecha, la empresa ha atendido a más de 300 clientes distinguidos como MetaMask, Uniswap Foundation, Compound, Forta y PancakeSwap, y ha recibido decenas de millones de dólares en dos rondas de financiamiento de inversores prominentes, incluyendo Matrix Partners, Vitalbridge Capital y Fenbushi Capital.

Sitio web oficial: https://blocksec.com/

Cuenta oficial de Twitter: https://twitter.com/BlockSecTeam

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit