Enlace al texto original: https://rekt.news/singularitynet-rekt

Fuente: SingularityNET, SlowMist, Bitquery, PeckShield, ASI Alliance, Blockaid, Uniswap, Baltex, AMLBot, NuNet, Fetch.ai.

Declaración: Este artículo es una reimpresión. Los lectores pueden consultar el enlace al texto original para obtener más información. Si el autor tiene alguna objeción respecto al formato de reimpresión, contáctenos y realizaremos las modificaciones según lo solicite el autor. La reimpresión se utiliza únicamente para compartir información y no constituye ningún asesoramiento de inversión; tampoco representa las opiniones ni la postura de Wu Shuo.

SingularityNET lleva muchos años trabajando para promover un mercado que permite el uso de agentes de IA autónomos.

Sin embargo, en la noche del 19 de septiembre, la “IA agente” más ocupada en su red era un script que no fue escrito por el equipo de SingularityNET.

El atacante, al comprometer la infraestructura en la nube de este proyecto, obtuvo los permisos de firma expuestos. Solo con una firma drenó la liquidez de FET en el contrato de intercambio en Ethereum y, luego, en un plazo de nueve horas, acuñó en la nada un total de 2.3 mil millones de tokens de AGIX, NTX, WMTX y CGV. Algunos reportes listaron el monto robado como 16.77 millones de dólares. Pero al reconstruir transacción por transacción, se muestra que el total de fondos ya realizados que el atacante obtuvo fue de aproximadamente 2.29 millones de dólares, y que la mayor parte de los tokens emitidos adicionalmente no se vendió. Todas las claves usadas para firmar eran auténticas y válidas. Cada contrato que ejecutó instrucciones también funcionó siguiendo la lógica establecida.

Pero el impacto de este ataque fue mucho más allá de la pérdida de fondos. Días después, las partes involucradas aún no habían publicado un informe completo de investigación posterior.

Cuando todas las claves de una alianza de todo un proyecto de IA se almacenan en el mismo conjunto de infraestructura en la nube, ¿quién controla realmente esa máquina?

Fuente de los datos: SingularityNET, SlowMist, Bitquery, PeckShield, ASI Alliance, Blockaid, Uniswap, Baltex, AMLBot, NuNet, Fetch.ai.

La primera pérdida de activos apareció como FET, pero el ataque no se detuvo ahí.

El 19 de septiembre a las 20:21, el atacante completó la transferencia de FET. Solo 2 minutos y 24 segundos después, aproximadamente 8.7 millones de FET drenados ya se habían convertido completamente en 522.78 ETH. A las 21:40, Blockaid emitió una alerta sobre la salida de fondos de esa bolsa de FET y señaló que el mismo monedero también recibió una gran cantidad de NTX acuñados por la dirección del implementador de NuNet. Al principio, Blockaid lo llamó un incidente contra Fetch.ai, pero SingularityNET confirmó después que lo comprometido fue su propia infraestructura. Un evento que inicialmente parecía involucrar solo a Fetch.ai terminó teniendo un alcance mayor al que se había previsto inicialmente.

A las 02:47 del 20 de septiembre, SlowMist ya identificó el mecanismo del ataque: con solo controlar la clave del autorizante, basta para drenar el puente entre cadenas. Una clave filtrada, más un contrato que confía en ella: esa historia se ha repetido una y otra vez.

El hecho de que se transfirieran los FET no fue el final del ataque. 29 minutos después, es decir, el 19 de septiembre a las 20:50, el atacante usó el privilegio de acuñación de NuNet y creó directamente alrededor de 408.5 millones de NTX en el contrato del token. Una acuñación a mayor escala comenzó al día siguiente a las 03:13: el atacante acuñó AGIX sin autorización en lotes de 10 millones. A las 03:38, también inició la acuñación ilegal de WMTX. La acuñación de AGIX continuó hasta las 04:21; luego, CGV experimentó 50 llamadas de acuñación entre 04:34 y 04:38.

Al amanecer, las alertas públicas habían ampliado el alcance del incidente, de que se hubiera drenado el dinero de un puente entre cadenas, a que los permisos de varios tokens habían sido comprometidos. Las primeras instantáneas de monederos estimaron el valor nominal de las tenencias del atacante en alrededor de 16.77 millones de dólares, pero esa valoración asumía que los tokens recién acuñados, con poca profundidad de trading, podían venderse al precio de mercado.

El ataque no terminó con el final de la noche. El 20 de septiembre a las 13:10, un contrato de pago de SingularityNET transfirió todo el saldo de 289,575.10 USDC a un monedero que ya había sido vaciado durante la intrusión. 12 segundos después, esos fondos entraron en el segundo monedero de agregación del atacante.

¿Cómo puede una firma robada drenar un puente entre cadenas con una sola llamada? ¿Y por qué no hay ningún mecanismo on-chain que lo impida?

Claves que nunca iniciaron transacciones

Los tokens compatibles con el puente entre cadenas de SingularityNET abarcan dos cadenas. Para la ruta compatible de Cardano a Ethereum, los tokens se destruyen primero en Cardano, y luego el puente entre cadenas del lado de Ethereum acuña o libera los tokens correspondientes. Sin embargo, el contrato del lado de Ethereum no verifica por sí mismo si la destrucción en Cardano ocurrió realmente; en su lugar, trata la firma proporcionada por los autorizantes preconfigurados como prueba de que la destrucción ya se completó.

Bitquery contabilizó cinco direcciones de autorizantes en los puentes entre cadenas afectados. Estas direcciones nunca habían enviado transacciones on-chain antes. Este patrón coincide con las claves de firma fuera de la cadena usadas para aprobar la liberación de activos del puente entre cadenas, en lugar de iniciar directamente transacciones. SingularityNET posteriormente dijo que un tercero no autorizado “accedió a parte de nuestra infraestructura en la nube”, pero no explicó cómo obtuvo acceso la otra parte.

Este diseño hace que la confianza de cada puente entre cadenas se concentre en quien controla sus permisos de firma.

Contrato de intercambio entre cadenas al que se le drenó todo el saldo de FET: 0xab424a430cc09864fa1277a38193111705adf3a3

Autorizante del intercambio que aprobó la salida de estos fondos: 0x69e5446b07b23de0a76730062c3252152216c85c

Transacción de ataque que liberó 8,721,530.40 FET: 0xfe12c63b322d52727c615f3342222138d1563400a9880cebb516a9a162ac69e2

Athena elaboró un informe forense para ASI Alliance. Recuperó la dirección del firmante a partir de la firma de esta operación de salida y confirmó que coincide con el autorizante configurado actualmente en el contrato. El informe indica que desde que este contrato de intercambio se desplegó en septiembre de 2024, ese autorizante nunca ha cambiado.

Dos decisiones de diseño amplificaron el impacto de la pérdida de privilegios de autorización. Primero, conversionIn() usa la firma de una sola cuenta externa (EOA) como única verificación de autorización; segundo, esta función no aplica la comprobación de límites checkLimits(amount) que sí se usa en conversionOut(). Por lo tanto, el límite de 100 a 1 millón de FET configurado para el contrato no restringe conversionIn(): el contrato terminó aceptando solicitudes de liberación de aproximadamente 8.72 millones de FET, cerca de 8.7 veces su límite máximo indicado.

El informe forense de Athena también encontró que los 100 eventos normales de ConversionIn usaron identificadores con formato de UUID generados por el backend de SingularityNET. El identificador utilizado en este ataque era una cadena de bytes crudos no ASCII, siendo la única excepción. Esta transacción no coincide con las características de una operación normal de puente entre cadenas.

La acuñación por lotes de AGIX se ejecutó mediante la dirección del implementador de SingularityNET: 0xA7A31d206042B8A3E81aa4cf8c68c1B76856eE48

Transacción de acuñación de 408,532,878.13 NTX: 0xe14442f6171d8a652e79d44336e58c00cdab271bdb69c668493d420e03ee13ab

La acuñación por lotes de AGIX se ejecutó mediante la dirección del implementador de SingularityNET: 0xA7A31d206042B8A3E81aa4cf8c68c1B76856eE48

Las llamadas a los contratos de intercambio para AGIX, WMTX y CGV terminaron todas con una operación de acuñación distinta de las cantidades batch habituales. Este patrón es coherente con un proceso de acuñación automatizado en ejecución continua, hasta que se alcanza alguna restricción operativa.

El contrato de intercambio de WMTX de World Mobile sí establece un límite por llamada, pero no detuvo el ataque; solo obligó al atacante a dividir la acuñación en 503 llamadas. La mayoría de las llamadas acuñaron exactamente 1 millón de WMTX, y como máximo aparecieron diez veces en un solo bloque.

Bitquery afirma que, antes de que se acuñara cualquier token, 16 billeteras fueron vaciadas en un plazo de 21 minutos, y que en el mismo periodo también hubo actividad relacionada en BNB Chain. Según su directorio de direcciones, cuatro billeteras tenían etiquetas de empleados de SingularityNET o NuNet, incluido un usuario que desplegó el contrato de intercambio relevante en 2022. Esto sugiere que el incidente involucró múltiples rutas de autorización de los proyectos afectados.

Una dirección de recuperación modificó la configuración de los autorizantes de los contratos de intercambio de NuNet, Cogito y Rejuve y luego congeló NTX. Bitquery afirma que los contratos de intercambio de AGIX y WMTX no pudieron gestionarse de manera oportuna mediante el mismo método, porque sus propietarios eran, respectivamente, un monedero multi-firma (Gnosis Safe) y un monedero Safe multi-firma que requería la aprobación de tres de los cuatro firmantes. Durante el traspaso de permisos, la acuñación de AGIX y WMTX continuó durante aproximadamente otra hora.

SingularityNET escribió: “Nuestro sistema acepta auditorías de forma regular y sigue estándares de seguridad de la industria.” Las auditorías pueden evaluar el código de los contratos inteligentes, pero solo con auditorías no se puede demostrar que los sistemas y claves privadas fuera de la cadena usados para generar las firmas o ejercer los permisos de firma sean seguros. Las claves de autorización relacionadas con los proyectos afectados proporcionaron firmas válidas, lo que permitió generar grandes cantidades de tokens adicionales.

Entonces, ¿cuánto de la enorme pérdida reportada se convirtió realmente en activos líquidos y cuánto fue solo en forma de nuevos tokens acuñados que el mercado quizá no pueda absorber?

Millones de dólares en términos contables

Los diferentes números en este artículo miden cosas distintas. Transferir tokens fuera del contrato sin autorización es una pérdida directa de activos; acuñar tokens sin autorización destruye el suministro del token. El ETH y las stablecoins obtenidos por las direcciones atribuidas al atacante, ya sea mediante la venta de tokens o la extracción directa de activos, son lo que constituye ganancias ya realizadas. El saldo del monedero calculado según el precio de mercado de los tokens no equivale automáticamente a efectivo ni automáticamente a un valor que pueda recuperarse. Los reportes tempranos confundieron repetidamente estos conceptos.

Acuñar 2,310 millones de tokens es fácil; encontrar compradores, no lo es. Los FET drenados a través del puente entre cadenas constituyen la mayor operación de realización en una sola transacción identificada. En una conversión realizada mediante MetaMask Route, tras deducir las comisiones visibles de esa ruta, esos FET se cambiaron por 522.78 ETH.

Transacción en la que aproximadamente 8.72 millones de FET se intercambiaron por 522.78 ETH: 0x98f6e59b54fd4d2c086cc7cab4e7070edff6410210a1bf1fbaffd62da3b76d1c

Dos direcciones recibieron gran parte de las ganancias identificadas y de los tokens emitidos adicionalmente. La dirección principal de agregación del atacante recibió los FET transferidos y los NTX recién acuñados. Según la reconstrucción de la transacción, fue también el destinatario de las primeras 26 llamadas de acuñación de 90 llamadas de AGIX y de las primeras 54 llamadas dentro de 503 llamadas de acuñación de WMTX.

Dirección principal de agregación del atacante: 0x2dcc1085fdcf418b421e45e86e4e54637cc21dfe

El segundo monedero recibió los tokens generados por las 64 llamadas restantes de acuñación de AGIX, las 449 llamadas de acuñación de WMTX, y las 50 llamadas de acuñación de CGV, además de USDC proveniente del contrato de pago.

Dirección del segundo monedero: 0x83f4424a401a9bb75f90314f21adaea6a9ce09c5

Bitquery rastreó los orígenes tempranos de fondos de la dirección principal de agregación hasta ChangeNOW.

La transacción en la que ChangeNOW proporcionó fondos: 0xa99a8b71bd90d295db305639fc976339a057812c2693f3e44ae9288e5c13ebe1

El historial de Ethereum de esa dirección de agregación también muestra que el 1 de septiembre se realizó una entrega mediante el puente entre cadenas Across.

Transacción de entrega Across del 1 de septiembre: 0xb56d3b900b5ac694d56d6efb9552a89fc0a14641eceefa7e16107cb8ccb0ea6d

El 20 de septiembre a las 04:04, el segundo monedero recibió ETH para pagar el Gas y, aproximadamente un minuto después, comenzó a vender tokens.

Transacción en la que el segundo monedero recibió fondos para Gas: 0x4e8894823caaf8fefaf0849cf69b30148ae5ddcee9e7f9bd0c1be0dae0c720c2

La transacción con la que el segundo monedero autorizó a MetaMask Swap Router a usar 100,000 WMTX: 0x8fcaa005da0c1a5ab138898571e2974ba8aa8f0b9864381e5b2b98b81e702da9

Las transacciones de la primera venta del segundo monedero de WMTX: 100,000 WMTX se convirtieron en 0.832455441 ETH después de deducir las comisiones visibles de MetaMask: 0xcf4b119f38d0da10dccac787234e05c6cabe3440dfe303f4f407daa92ab8829e

Los activos están distribuidos en dos monederos, lo que vuelve más complejas las estadísticas citadas en los reportes. La alerta temprana de PeckShield estimó el valor de los activos del atacante en 16.77 millones de dólares, incluyendo 198.3 millones de AGIX, 649 ETH y 33.538 millones de WMTX.

Los resultados reales de la venta revelan la diferencia entre la valoración contable y la capacidad de realización. Una conversión enrutada a través de MetaMask y ejecutada por Mayan convirtió 10 millones de NTX en 940.39 USDT. Al mismo tiempo, el segundo monedero utilizó órdenes de UniswapX, con ETH como contraprestación proporcionada por un ejecutor de órdenes de terceros. El registro de liquidación no muestra cómo estos ejecutores obtuvieron los fondos, realizaron coberturas (hedging) o qué hicieron finalmente con el WMTX recibido.

Transacción intercambiada vía MetaMask/Mayan de NTX: se invirtieron 10,000,000 NTX y llegaron 940.5087 USDT a un contrato fuente en la cadena de Ethereum donde se encuentra Mayan, para liquidar en BNB Chain: 0xb6ecca4deeb2a616507a3f5779cb12db4fd986e5ee37c1832237fae2a1f1258f

CGV es el ejemplo más extremo: 246.2 millones de CGV vendidos en el pool Uniswap de Cogito solo devolvieron 0.0123 ETH.

Transacción en la que 246,200,000 CGV se intercambiaron por 0.0123 ETH: 0x69a28fb152b2b1b4158ec3db17f7baf565b644859a5150c38729bbb2d198bfad

Además, los 289,575.10 USDC enviados por el contrato de pago terminaron en el segundo monedero, convirtiéndose en otro ingreso grande de stablecoins. Este dinero no necesita obtenerse mediante la venta de tokens recién acuñados.

Transacción del contrato de pago al enviar 289,575.1047 USDC a la dirección de intermediación: 0x869343d87a137a52aebce119c8c35e2fc3500205bf7a8c574ec2e8f4ab677c18

Transacción en la que la dirección de intermediación transfirió 289,575.1047 USDC al segundo monedero: 0xca9facda3f3629fa72ff98b4c8e663d3b415011979d749fab96ed9eda287e66f

Al 22 de septiembre, la reconstitución por transacción reveló que las dos direcciones principales recibieron aproximadamente el equivalente de 742.7 ETH en activos, además de stablecoins por valor de 362,075 dólares. Este conteo no incluye AGIX, WMTX, CGV y NTX que aún no se habían vendido. Al calcular WETH frente a ETH 1:1, se registra el ingreso total, no la ganancia neta.

Una parte considerable de los activos líquidos no permaneció en estos dos monederos principales. A más tardar el 21 de septiembre a las 00:00, tres monederos distintos depositaron respectivamente 75,000 USDC a Chainflip, 75,000 USDC a Baltex y 118,015.16 USDC a Chainflip.

Baltex describe su servicio como sin KYC y promociona una ruta de intercambio “privada” que involucra Monero. Además, según divulgaciones de AMLBot, un corredor de Chainflip rechazó un depósito de ETH, y AMLBot atribuyó ese depósito al mismo atacante.

Transacción de ingreso de 75,000 USDC a Chainflip: 0x3c8b12fedf147d82c8a5506edf3fcad4b7e25c8b96e4fb13b10cf2915aba0076

Transacción en la que se transfirieron 75,000 USDC a Baltex: 0x05d6d42c75356900e523116d34892b480e9f9134ba195db698d7b1448e0b0696

La última transacción de ingreso a Chainflip de 118,015.16 USDC: 0xea254b148da1a6d028050f3a59f87845e3dc177ca37ef6441c7eb6cff47eb8ed

Cerca de la medianoche UTC, el segundo monedero envió 93.70 ETH a una dirección receptora. Las fuentes públicas citadas en este artículo no confirmaron el propietario de esa dirección. Aproximadamente 40 minutos después, el monedero principal de agregación del atacante inició dos transferencias más, cada una exactamente por 100 ETH.

Transacción en la que el segundo monedero transfirió 93.70 ETH: 0x605d803890ae4eddc684f82f6de1a82c49a6a3f5646295c1a01fd897fa2a7577

Monedero receptor: 0x2fD3285C93437077EF5FA6cecc367FD24d0fF726

La transacción principal mediante la cual el atacante retiró la primera remesa de 100 ETH desde el monedero: 0xa8511628388c330db78fcdcfe7af5577e1f300adee795b578508fb21203b4756

Transacción principal mediante la cual el atacante retiró la segunda remesa de 100 ETH: 0x14399c61687de491461f76e961a91d2c0dcda4c6bb00ba332ec18b19d394822f

Luego, AMLBot describió dos transferencias independientes de 100 ETH cada una. Afirmó que una de ellas se intercambió por aproximadamente 266,000 USDC y luego se ingresó en “FXMR” a través de CCTP, Arbitrum e Hyperliquid. La otra, después de que el corredor de Chainflip rechazara la transacción, supuestamente se intercambió a aproximadamente 3.28 BTC mediante THORChain. AMLBot no publicó direcciones de origen de esos fondos.

Ambos monederos también mostraron pequeños envíos de “polvo” y registros de transferencias falsificadas de tokens: el remitente imitó deliberadamente la dirección del contrapartidario de transacciones anteriores. Esto coincide con las características de un ataque de envenenamiento de direcciones. Si ese era realmente su objetivo, entonces alguien estaba intentando robarle dinero al atacante una vez más.

Al 25 de septiembre, el monedero principal de agregación del atacante contiene aproximadamente 433 ETH, 15.94 WETH y 52,395 mUSD, lo cual coincide con el saldo de alrededor de 433 ETH reportado por AMLBot el día anterior. Además, este monedero también posee aproximadamente 198.3 millones de AGIX y 33.54 millones de WMTX. El segundo monedero, por su parte, tiene aproximadamente 18,109 USDC, 625.86 millones de AGIX, 166.49 millones de WMTX y 246 millones de CGV.

El valor que muestran estos tokens no equivale al valor real que puede venderse. Con tenencias tan grandes, al venderlas podría haber falta de liquidez y un choque severo de precios. El problema real no es cuánto muestra la interfaz de saldo, sino cuántos se pueden vender sin romper el mercado.

Según la reconstrucción de esta transacción, el total de activos líquidos ya realizados generado por la acción del atacante es de aproximadamente 2.29 millones de dólares. Los fondos realizados pueden transferirse; sin embargo, aproximadamente 1,270 millones de tokens restantes son difíciles de realizar del mismo modo. Si estas tenencias finalmente se venden, ¿quién asumirá el costo?

Setenta por ciento de los tokens provienen de una acuñación ilegal

Los precios pueden recuperarse, pero la estructura de suministro no puede reconstituirse por sí sola.

Bitquery contabilizó en la verificación entre cadenas alrededor de 1,280 millones de AGIX; de ellos, aproximadamente 895.96 millones se acuñaron durante el ataque, lo que representa el 70.1% del total contabilizado. El resto, aproximadamente 382.65 millones, puede rastrearse al suministro antes del ataque. El mismo análisis muestra que los tokens acuñados sin autorización representaron 81.1% del suministro de CGV contabilizado, 32.4% del suministro de WMTX y 29.0% del suministro de NTX.

Esta emisión adicional de NTX elevó el suministro total entre cadenas contabilizado a aproximadamente 1,410 millones de NTX, superando el suministro de 1,000 millones de NTX establecido en la documentación de NuNet. Aproximadamente 40.10 millones de NTX acuñados ilegalmente cruzaron a Cardano, de los cuales aproximadamente 40 millones entraron en pools de liquidez ordinaria. Los registros de transacción pueden rastrear la ruta de estos tokens, pero una vez que están en el pool, el pool no puede distinguirlos del NTX emitido legítimamente.

El problema con FET no es la acuñación ilegal, sino si el puente entre cadenas puede reembolsarlo (pagarlo). El contrato de intercambio de Ethereum responsable de liberar FET proveniente del puente entre cadenas desde Cardano fue vaciado, mientras que aún quedan aproximadamente 870 millones de FET en Cardano. Según ese análisis, desde que los fondos fueron transferidos, nadie ha intentado transferir FET de Cardano a Ethereum, por lo que no ha surgido el escenario en el que los usuarios esperen reembolsos debido a que el contrato de intercambio se quedó sin saldo.

El problema al que se enfrenta NTX es otro: cerca de 40 millones de tokens acuñados ilegalmente ya ingresaron en el pool de liquidez ordinario de Cardano; aunque el origen no esté autorizado, el pool los seguirá tratando igual que a cualquier otro NTX.

SingularityNET dijo que revocó los permisos de acceso comprometidos, deshabilitó los puentes entre cadenas y los contratos de intercambio afectados, y suspendió las transferencias de AGIX y NTX en Ethereum. La parte del proyecto afirma que esos puentes entre cadenas seguirán desconectados hasta que una auditoría de seguridad independiente confirme que es seguro reanudar. Bitquery, por su parte, encontró que al 20 de septiembre, de las cinco claves de autorizantes, tres aún no habían sido reemplazadas. Con los puentes cerrados, si esas claves todavía podían explotarse solo se comprobará cuando el sistema vuelva a funcionar.

Para los tenedores de AGIX, SingularityNET inicialmente afirmó que se estaba preparando una “ruta de procesamiento posterior legal y verificada” para los tenedores elegibles. Después, el proyecto anunció que deshabilitaría el token AGIX original y emitiría tokens de reemplazo para los tenedores afectados, pero aún no explicó quién es elegible ni cómo se asignarían los tokens de reemplazo. Las transferencias de AGIX en Ethereum aún están en pausa.

En los AGIX contabilizados, alrededor de siete de cada diez se acuñaron durante el ataque. Por lo tanto, la atribución de elegibilidad sigue siendo el problema más difícil. Cualquier alternativa debe decidir cómo manejar las tenencias que, tras la emisión ilegal, circularon mediante transacciones de mercado normales.

Fetch.ai dijo que sus contratos no se vieron afectados. ASI Alliance confirmó que se transfirieron FET por valor de 1.56 millones de dólares dentro del contrato de intercambio y se comprometió a publicar un informe completo. Pero al momento de publicarse el texto original, dicho informe aún no aparecía, y tampoco se habían publicado planes de compensación para los tenedores, ni para los ejecutores de órdenes y proveedores de liquidez que pagaron fondos reales para comprar tokens emitidos ilegalmente.

Las firmas aceptadas por el contrato del puente entre cadenas son reales y válidas. El contrato verificó las firmas y ejecutó las instrucciones, pero no verificó si el evento entre cadenas que la firma afirmaba realmente ocurrió. La acuñación de NTX de NuNet siguió otra vía: el atacante utilizó directamente el privilegio de acuñación del propio token.

Una alianza con una visión de IA descentralizada, pero que expuso los permisos de acuñación de cuatro tipos de tokens y el permiso para liberar FET desde los contratos de intercambio, todo dentro del alcance que puede ser alcanzado por una intrusión a una sola infraestructura.

Si el futuro descrito por estos proyectos es software que funciona de manera autónoma, entonces ¿quién supervisa el software que controla las claves?

Los puentes entre cadenas y los contratos de intercambio aceptaron las firmas del autorizante designado. Durante la acuñación entre cadenas, el contrato trata estas firmas como una prueba de que el evento correspondiente ya ocurrió en la otra cadena, sin verificar por sí mismo si el evento realmente ocurrió. La acuñación de NTX es diferente: el atacante usó sus privilegios de acuñación y llamó directamente a la función mint() del contrato del token.

SingularityNET indicó que un tercero no autorizado accedió a parte de su infraestructura en la nube y con ello acuñó tokens a través de la infraestructura del puente entre cadenas y extrajo activos. Fetch.ai, por su parte, dijo que sus propios contratos no se vieron afectados. Sin embargo, el anuncio público no explica cómo el atacante obtuvo el acceso ni describe con precisión cómo se expusieron los distintos permisos.

Los registros on-chain pueden rastrear las transacciones liberadas por estos permisos, pero no pueden demostrar cómo el atacante obtuvo el acceso, ni determinar quién tomó las decisiones de seguridad correspondientes. Bitquery descubrió que las direcciones de cinco autorizantes de puentes entre cadenas nunca habían iniciado transacciones antes; esto coincide con su uso para firmas de mensajes fuera de la cadena (off-chain). El contrato verificó las firmas.

Cuando una firma se trata como prueba, ¿quién verifica si lo que supuestamente está probando es realmente cierto?