Las auditorías de inteligencia artificial publicadas por Biatec Wallet detectaron un fallo crítico en la firma de intercambios.
Un registro de auditoría escrito por máquinas
En mayo de 2021, el proyecto que ahora se llama Biatec Wallet lanzó su primera versión pública: crear una billetera, protegerla con una contraseña, ver la información básica de la cuenta, todo dentro de una pestaña del navegador. Cinco años después, la misma base de código, renombrada y ampliada bajo la marca Biatec, sigue funcionando completamente en el navegador y ha adoptado una práctica poco común para una billetera de una pequeña comunidad: publica informes de auditorías de seguridad con fecha, escritos por modelos de inteligencia artificial, directamente en su repositorio público de GitHub, junto con un registro en vivo de todos los riesgos que esas auditorías han encontrado.
El informe más reciente, de fecha 4 de agosto, comienza con una advertencia que la mayoría de los proyectos preferiría ocultar: "El resultado principal es negativo: esta auditoría presenta un hallazgo Crítico y uno de Alto, ambos de los cuales son vías realistas para la pérdida total de los fondos de una cuenta". Ambos hallazgos se encuentran en la función de intercambio, el único lugar de la billetera donde la clave privada del usuario se expone brevemente a la salida de un servidor remoto, y la forma en que se encontraron y se solucionaron es una medida justa de lo que este tipo de programa de auditoría auto-publicado puede y no puede garantizar.
Una billetera que nunca toca tus llaves
Biatec Wallet es un monedero de código abierto, gratuito y no custodial de Algorand creado por Scholtz & Company, jsa. de Bratislava, Eslovaquia (número de identificación de la empresa 51 882 272, NIF SK2120828105) y desarrollado bajo la marca Biatec. No custodial significa que ningún tercero nunca tiene las claves privadas: no hay servidor de respaldo, no hay formulario de registro y no hay KYC, y el archivo del monedero se cifra con AES-256 y se almacena en el propio IndexedDB del navegador. La contraseña se utiliza solo localmente para cifrar y descifrar — nunca se transmite a ningún lugar, ni siquiera a la propia infraestructura de Biatec — y el monedero se bloquea cinco minutos después de la última actividad, borrando la clave descifrada de la memoria. El proyecto se describe a sí mismo como el primer monedero de código abierto de Algorand; la cobertura de noticias registra que el monedero oficial de Algorand solo se hizo completamente de código abierto en junio de 2021, un mes después de la primera versión pública de AWallet.
Para probarlo se necesita un navegador y una contraseña: abrir wallet.biatec.io —el README del proyecto señala el dominio a-wallet.net más antiguo como un espejo desactualizado de la misma implementación—, elegir un nombre de billetera y una contraseña (la aplicación recomienda doce o más caracteres que mezclen mayúsculas, números y caracteres especiales), y el archivo de la billetera se crea localmente. La aplicación se ejecuta por defecto en mainnet, apuntando a los nodos públicos de AlgoNode, con opciones para cambiar de proveedor —incluyendo el propio nodo Algorand de Biatec e infraestructura de [indexer](/glossary/indexer "Un servicio que organiza e indexa los datos de blockchain para que las aplicaciones puedan buscar y recuperar información de la blockchain de forma rápida—).
Cómo funciona el programa de auditoría
El proceso está codificado en un archivo llamado ai-audit-instructions.md: al escribir "do new audit" en el repositorio se inicia un nuevo análisis por parte de un modelo de IA, que debe actuar como lo haría "una empresa profesional de auditoría de contratos inteligentes o de seguridad de carteras": de forma escéptica, adversaria y precisa en cuanto a la gravedad, con cada hallazgo vinculado a rutas de archivo y números de línea específicos. Cada informe registra la revisión auditada, el modelo que la realizó y la versión de la instrucción utilizada; el registro de riesgos lleva todos los hallazgos de forma permanente, sin eliminar nunca las filas y manteniendo las cerradas para la trazabilidad.
| Concepto | Implicación en el mundo real |
|---|---|
| Seis informes entre el 9 de julio y el 4 de agosto de 2026, realizados por tres modelos de IA diferentes (sonnet-5, fable-5, grok-4-5) | Ningún modelo define el programa; se espera que cada paso vuelva a verificar los hallazgos anteriores en función de la fuente actual |
| El informe del 4 de agosto revisó 21 commits y 48 archivos (+2.407/−564 líneas) desde el informe anterior | La revisión se realiza en función de los cambios de código: se examina cada ciclo de lanzamiento, no solo las nuevas características principales |
| El análisis de dependencias reveló 15 avisos (0 críticos, 9 de alto nivel, 4 moderados, 2 de bajo nivel) | La billetera se distribuye con un árbol de dependencias que incluye avisos de alta gravedad conocidos, ninguno de los cuales es crítico |
| El registro cuenta 20 riesgos técnicos abiertos después del 4 de agosto | El propio libro de contabilidad del proyecto indica que dos docenas de riesgos a nivel de código siguen sin resolverse |
| No se ejecutaron las pruebas E2E y en vivo de Cypress (Ledger, WalletConnect ni un intercambio real | Los hallazgos críticos y de alto nivel se rastrean en el código fuente estático, no se demuestran contra una implementación en ejecución |
El hallazgo: los swaps se firmaron a ciegas
El hallazgo crítico, registrado como AW-2026-043, se refiere a la parte de una billetera que, por diseño, debe confiar en un extraño por un momento. Cuando un usuario intercambia un activo por otro, la billetera solicita a un agregador —Deflex, Folks Router o Biatec Router— que calcule la ruta y devuelva las transacciones sin firmar para la operación. La billetera decodifica esas transacciones y las firma directamente con la clave privada en bruto de la cuenta. Lo que la auditoría detectó es que ninguno de los tres caminos validaba nada sobre las transacciones proporcionadas por el servidor: ni que el remitente es la propia cuenta del usuario, ni el destinatario ni el monto contra la cotización mostrada, ni siquiera el ID de génesis de la red, y las transacciones nunca se muestran al usuario antes de firmarlas. El usuario hace clic en un botón "Ejecutar" y se firma un lote opaco de transacciones remotas con su clave.
Las consecuencias son específicas de cómo funcionan las transacciones de Algorand. Una transacción firmada puede contener campos que van más allá de "pagar X a Y": un campo "closeRemainderTo" cierra la cuenta, transfiriendo todo su saldo de ALGO —o, en una transferencia de activos, toda su tenencia de tokens— a la dirección que el campo especifique, y un campo "rekeyTo" transfiere la autoridad de firma de la cuenta a una clave diferente. En Algorand, rekeying permite a una cuenta delegar su autoridad de firma a una clave diferente; el libro de contabilidad entonces registra qué clave firma realmente. Una API de agregador comprometida o maliciosa podría devolver exactamente una transacción de este tipo, y la billetera la firmaría y la enviaría silenciosamente, evitando las advertencias de "closeRemainderTo" y "rekey" que una corrección anterior (AW-2026-001) había añadido a todas las demás superficies de firma de la aplicación.
La segunda conclusión: una verificación de dominio que confía en el atacante
El hallazgo High, AW-2026-044, se encuentra en la nueva función de firma de datos arbitrarios ARC-60. ARC-60 extiende WalletConnect, el protocolo de código QR que permite a una aplicación web conectarse a una billetera y solicitar firmas sin tener que tener las claves, de modo que una DApp conectada puede solicitar una firma de autenticación sobre datos arbitrarios, la base de los flujos de inicio de sesión sin contraseña. La billetera muestra el dominio solicitante, el propósito y una vista previa completa de los datos antes de firmar. La auditoría descubrió que la verificación de vinculación de dominio era autorreferencial: tanto el dominio reclamado como los authenticatorData que se supone que lo atestiguan llegan dentro de la misma solicitud controlada por la DApp y solo se verifican entre sí, nunca contra el par de sesión de WalletConnect real. Por lo tanto, una DApp maliciosa podría obtener una firma válida vinculada a cualquier dominio que elija, exactamente el inicio de sesión falsificado que el propio comentario de la función dice que evita.
¿Qué hay en el código actual y qué no está verificado aún?
Se implementó una solución el mismo día en que se publicó el informe (commit 0b3947e, 'feat: enhance ARC-60 security and DEX. Un nuevo auxiliar compartido, assertSwapTransactionSafe, ahora se ejecuta sobre cada transacción antes de que cualquiera de los tres agregadores firme, rechazando el lote completo si el remitente no coincide con la cuenta conectada o si alguna transacción lleva un campo de rekey o de cierre. En el lado de ARC-60, una nueva verificación domainMatchesSessionOrigin compara el dominio reclamado con el nombre de host del par de la sesión de WalletConnect real en lugar de con la propia carga útil de la solicitud.
La solución está en master y en el monedero desplegado: los mensajes de rechazo del guard están presentes en el paquete JavaScript minificado servido por a-wallet.net, lo que confirma que el código de validación se incluye en lo que los usuarios ejecutan realmente, y ambos dominios sirven la misma compilación (36221a6, 13 de agosto). Lo que aún no ha sucedido es la verificación de la solución por el programa que encontró el error. La entrada más reciente del registro de riesgos es la propia auditoría del 4 de agosto, que revisó un commit anterior; el commit de validación llegó por separado el mismo día, y no existe ningún informe de auditoría posterior en el repositorio para volver a verificar que AW-2026-043 y AW-2026-044 estén cerrados.
Es importante sopesar este estado no verificado en función de lo que realmente es el programa. Las auditorías se realizan mediante modelos de inteligencia artificial (IA) bajo el propio mandato del proyecto, sin que ninguna empresa de seguridad independiente figure en ninguno de los seis informes, y el repositorio no publica versiones etiquetadas, es decir, las compilaciones se publican directamente desde el pipeline de CI/CD, por lo que no hay un paso de certificación de las versiones en el que apoyarse. El propio informe del 4 de agosto deja claro que sus hallazgos principales se basaron en el código fuente estático, y no se validaron contra una implementación en funcionamiento. Como experimento de transparencia, el programa es realmente inusual: la mayoría de los portafolios publican resúmenes de las auditorías, no los archivos brutos de "lo que encontramos este mes". Como garantía de seguridad independiente, aún no cubre sus propias correcciones más recientes.
Un proyecto comunitario que se financia a sí mismo
Biatec es independiente de Algorand Inc. y de la Fundación Algorand, y no recibe financiación continua de ninguna de ellas, según su sección de preguntas frecuentes, pero ha recibido subvenciones comunitarias únicas xGov. El repositorio de xGov registra 10.000 ALGO para AWallet en sí y 60.000 ALGO para su programador de pagos como Aprobados; dos propuestas de 2024 —una solicitud retroactiva de 36.912 ALGO y un proyecto de identidad [on-chain](/glossary/on-chain "Describe transacciones que se registran y se almacenan permanentemente en un libro mayor de blockchain, lo que las hace públicas e inamovibles—— se listan como Finales. La propia caracterización del proyecto, en el resumen de la propuesta retroactiva, es que AWallet es 'uno de los monederos más avanzados en Algorand'.
La huella financiera detrás de esa afirmación es pequeña. La dirección de donaciones publicada tiene 25,6 ALGO y aproximadamente 1,03 USDT en la cadena; el Discord del proyecto tiene 411 miembros, de los cuales 7 estaban en línea en el momento de la verificación; la publicación social más reciente sobre la billetera, en Bluesky, tiene un solo "me gusta". El propio desarrollo no está inactivo: el repositorio se actualizó el 15 de agosto, tiene 672 estrellas y sus dos principales contribuyentes suman 546 y 62 commits, respectivamente.
Un punto de concentración que un lector debería tener en cuenta: la pantalla de intercambio de la billetera se enruta a través del propio agregador de Biatec junto con los dos enrutadores de terceros, y Biatec también ejecuta el nodo y la infraestructura de indexación de Algorand a los que la billetera puede conectarse. Nada de eso es un problema por sí solo: el diseño no custodial significa que la billetera solo firma lo que el usuario aprueba, pero la auditoría del 4 de agosto muestra exactamente por qué la capa de agregador es el límite de confianza que importa, y el enrutador propio del equipo se sitúa directamente sobre él.
La misma empresa eslovaca ha construido un conjunto de herramientas más amplio en torno a Algorand: un pasarela de pago de código abierto y gratuita que permite a los comerciantes aceptar ALGO, USDC o USDT directamente en su propia cuenta sin intermediarios financieros ni necesidad de una cuenta de billetera, un sistema de votación de código abierto y el marco Stabilitas national-stablecoin que, según informó este medio, se encuentra inactivo desde 2023. El programa de auditoría de la billetera, con sus limitaciones, es la parte de esa cartera en la que el equipo muestra su trabajo de la manera más verificable.
Fuente
- Biatec Wallet (a-wallet.net ofrece la misma versión)
- Repositorio GitHub de scholtz/wallet — README, instrucciones de auditoría, registro de riesgos, informes de auditoría, validate.ts, arc60.ts
- Preguntas frecuentes de la billetera
- Historial de cambios de la billetera
- Página de donaciones
- Propuestas de xGov 9, 90, 199, 200
- Biatec Wallet - Monedero de la comunidad de Algorand
- Biatec Wallet - Monedero de la comunidad de Algorand
- Biatec
- raw.githubusercontent.com
- raw.githubusercontent.com
- raw.githubusercontent.com
- Historial de src/scripts/aggregators/validate.ts - scholtz/wallet · GitHub
- Biatec Wallet - Monedero de la comunidad de Algorand
- Las mejores billeteras de Algorand en 2026: lugares seguros para el staking de ALGO - Coin Bureau
Source: https://www.a-wallet.net/