Las auditorías de IA que publica Biatec Wallet destaparon un fallo crítico en la firma de swaps
Biatec Wallet, la billetera de código abierto para Algorand que se ejecuta en el navegador, publica en su repositorio de GitHub auditorías de seguridad realizadas por IA. Una auditoría de agosto de 2026 detectó un fallo crítico de firma a ciegas en los swaps; la corrección ya viaja en la billetera desplegada.
Un rastro de auditoría escrito por máquinas
En mayo de 2021, el proyecto que hoy se llama Biatec Wallet lanzó su primera versión pública: crear una billetera, protegerla con una contraseña y consultar información básica de la cuenta, todo dentro de una pestaña del navegador. Cinco años después, ese mismo código, renombrado y ampliado bajo la marca Biatec1, sigue funcionando íntegramente en el navegador y ha adoptado una costumbre poco habitual en una billetera comunitaria pequeña: publicar informes de auditoría de seguridad fechados, redactados por modelos de IA, directamente en su repositorio público de GitHub2, junto a un registro vivo de todos los riesgos que esas auditorías han detectado.
El informe más reciente, fechado el 4 de agosto, arranca con una advertencia que la mayoría de los proyectos preferiría enterrar: «El resultado principal es negativo: esta auditoría eleva un hallazgo crítico y otro alto, y ambos son vías realistas hacia la pérdida total de los fondos de una cuenta». Los dos hallazgos se sitúan en la función de swap —el único punto de la billetera donde la clave privada del usuario queda brevemente expuesta a la respuesta de un servidor remoto—, y la forma en que se encontraron y se corrigieron mide bastante bien lo que este tipo de programa de auditorías autopublicadas puede y no puede garantizar.
Una billetera que nunca toca tus claves
Biatec Wallet es una billetera Algorand gratuita, de código abierto y no custodial creada por Scholtz & Company, jsa., de Bratislava (Eslovaquia) (identificación de la sociedad 51 882 272, IVA SK2120828105) y desarrollada bajo la marca Biatec. No custodial significa que ningún tercero llega a custodiar las claves privadas: no hay servidor de backend, ni formulario de registro, ni KYC, y el archivo de la billetera se cifra con AES-256 y se guarda en el propio IndexedDB del navegador. La contraseña se utiliza únicamente en local para cifrar y descifrar —nunca se transmite a ningún sitio, tampoco a la propia infraestructura de Biatec—, y la billetera se bloquea sola cinco minutos después de la última actividad, borrando de la memoria la clave descifrada. El proyecto se describe como la primera billetera Algorand de código abierto; las coberturas periodísticas registran que la billetera oficial de Algorand no fue plenamente de código abierto hasta junio de 2021, un mes después de la primera versión pública de AWallet.
Probarla solo exige un navegador y elegir una contraseña: abre wallet.biatec.io3 —el README del proyecto marca el dominio más antiguo a-wallet.net como espejo obsoleto del mismo despliegue—, escoge un nombre de billetera y una contraseña (la aplicación recomienda doce caracteres o más combinando mayúsculas, minúsculas, números y caracteres especiales) y el archivo de la billetera se crea en local. La aplicación se ejecuta en mainnet por defecto, apuntando a los nodos públicos de AlgoNode, con ajustes para cambiar de proveedor, incluidos el propio nodo Algorand de Biatec y su infraestructura de indexación.
Cómo funciona el programa de auditorías
El proceso está codificado en un archivo llamado ai-audit-instructions.md: escribir 'do new audit' en el repositorio lanza una nueva pasada de un modelo de IA, que debe actuar como lo haría 'una empresa profesional de auditoría de contratos inteligentes y seguridad de billeteras': escéptica, adversarial y precisa con la severidad, con cada hallazgo vinculado a rutas de archivo y números de línea concretos. Cada informe registra el commit auditado, el modelo que lo realizó y la versión de instrucciones empleada; el registro de riesgos arrastra cada hallazgo para siempre, sin eliminar jamás filas y conservando los ya cerrados para mantener la trazabilidad.
| Concepto | Implicación en el mundo real |
|---|---|
| Seis informes entre el 9 de julio y el 4 de agosto de 2026, ejecutados por tres modelos de IA distintos (sonnet-5, fable-5, grok-4-5) | Ningún modelo define por sí solo el programa; se espera que cada pasada vuelva a verificar los hallazgos anteriores contra el código fuente actual |
| La pasada del 4 de agosto revisó 214 commits y 48 archivos (+2,407/−564 líneas) desde el informe anterior | La revisión se limita al diff: se examina cada ciclo de publicación, no solo las nuevas funciones destacadas |
| El escaneo de dependencias sacó a la luz 155 avisos (0 críticos, 9 altos, 4 moderados y 2 bajos) | La billetera se publica con un árbol de dependencias que arrastra avisos de severidad alta conocidos, ninguno crítico |
| El registro contabiliza 20 riesgos técnicos abiertos después del 4 de agosto | El propio libro mayor publicado por el proyecto afirma que siguen sin resolverse dos docenas de riesgos a nivel de código |
| No se ejecutaron las pruebas E2E de Cypress ni las pruebas en vivo (Ledger, WalletConnect, un swap real) | Los hallazgos crítico y alto se rastrean en el código fuente estático, no se demuestran contra un despliegue en funcionamiento |
El hallazgo: swaps firmados a ciegas
El hallazgo crítico, registrado como AW-2026-043, afecta a la única parte de una billetera que, por diseño, debe confiar en un desconocido durante un instante. Cuando un usuario cambia un activo por otro, la billetera pide a un agregador —Deflex, Folks Router o Biatec Router— que calcule la ruta y devuelva las transacciones sin firmar de la operación. La billetera descodifica esas transacciones y las firma directamente con la clave privada en bruto de la cuenta. Lo que rastreó la auditoría es que ninguna de las tres rutas validaba nada sobre las transacciones enviadas por el servidor: ni que el emisor fuese la propia cuenta del usuario, ni el destinatario o el importe frente a la cotización mostrada, ni siquiera el genesis ID de la red; y las transacciones nunca se muestran al usuario antes de firmarlas. El usuario pulsa un único botón Ejecutar y un lote opaco de transacciones remotas queda firmado con su clave.
Lo que está en juego es específico del funcionamiento de las transacciones de Algorand. Una transacción firmada puede llevar campos más allá de 'pagar X a Y': un campo closeRemainderTo cierra la cuenta y barre todo su saldo de ALGO —o, en una transferencia de activos, toda la tenencia de ese token— hacia la dirección que indique el campo, y un campo rekeyTo transfiere a otra clave por completo la autoridad de firma sobre la cuenta. En Algorand, el rekeying permite a una cuenta delegar su autoridad de firma en otra clave; el libro mayor registra entonces qué clave firma realmente. Una API de agregador comprometida o maliciosa podría devolver exactamente una transacción así, y la billetera la firmaría y la enviaría en silencio, saltándose las advertencias rojas de cierre de cuenta y rekey que una remediación anterior (AW-2026-001) había añadido a todas las demás superficies de firma de la aplicación.
El segundo hallazgo: una comprobación de dominio que confía en el atacante
El hallazgo alto, AW-2026-044, se encuentra en la nueva función de firma de datos arbitrarios ARC-60. ARC-60 amplía WalletConnect —el protocolo de código QR que permite a una aplicación web conectarse a una billetera y solicitar firmas sin custodiar nunca las claves— para que una DApp conectada pueda pedir una firma de autenticación sobre datos arbitrarios, base de los flujos de inicio de sesión sin contraseña. La billetera muestra el dominio solicitante, el propósito y una previsualización completa de los datos antes de firmar. La auditoría descubrió que la comprobación de vinculación de dominio era autorreferencial: tanto el dominio declarado como el authenticatorData que debía atestiguarlo llegan dentro de la misma solicitud controlada por la DApp y solo se comprueban entre sí, nunca contra el par real de la sesión de WalletConnect. Una DApp maliciosa podría, por tanto, obtener una firma válida vinculada a cualquier dominio que se le antojase nombrar, justo el inicio de sesión suplantado que, según el propio comentario del código de la función, esta evita.
Qué hay en el código actual y qué no está verificado todavía
La corrección se integró el mismo día en que se publicó el informe (commit 0b3947e, 'feat: enhance ARC-60 security and DEX aggregator transaction validation'). Un nuevo helper compartido, assertSwapTransactionSafe, recorre ahora cada transacción antes de que firme cualquiera de los tres agregadores, y rechaza el lote entero si el emisor no coincide con la cuenta conectada o si alguna transacción incluye un campo de rekey o de cierre de cuenta. En el lado de ARC-60, una nueva comprobación domainMatchesSessionOrigin compara el dominio declarado con el nombre de host del par real de la sesión de WalletConnect en lugar de con el propio payload de la solicitud.
La corrección está en master y en la billetera desplegada: los mensajes de rechazo de la guarda aparecen en el paquete JavaScript minificado que sirve a-wallet.net, lo que confirma que el código de validación viaja en lo que los usuarios ejecutan de verdad, y ambos dominios sirven la misma compilación (36221a6, 13 de agosto). Lo que todavía no ha ocurrido es la verificación de la corrección por parte del programa que encontró el fallo. 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 ese mismo día, y en el repositorio no existe ningún informe de auditoría posterior que vuelva a verificar AW-2026-043 y AW-2026-044 como cerrados.
Ese estado sin verificar merece sopesarse frente a lo que el programa es en realidad. Las auditorías las llevan a cabo modelos de IA bajo el encargo permanente del propio proyecto, sin ninguna firma de seguridad independiente mencionada en ninguno de los seis informes, y el repositorio no publica versiones etiquetadas —las compilaciones salen directamente del pipeline de CI/CD—, de modo que no hay ningún paso de certificación de versiones al que agarrarse. El propio informe del 4 de agosto dice explícitamente que sus hallazgos principales se rastrearon en el código fuente estático, no se demostraron contra un despliegue en funcionamiento. Como experimento de transparencia, el programa es genuinamente insólito: la mayoría de las billeteras publican resúmenes de auditoría, no los archivos en bruto de 'esto es lo que hemos encontrado 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 Algorand Foundation y no recibe financiación continuada de ninguna de las dos, según sus preguntas frecuentes, aunque sí ha obtenido becas comunitarias puntuales de xGov. El repositorio de xGov registra 10,000 ALGO para la propia AWallet y 60,000 ALGO para su programador de pagos como Approved; dos propuestas de 2024 —una solicitud retroactiva de 36,912 ALGO y un proyecto de identidad on-chain por 148,999 ALGO— figuran como Final. El propio encuadre del proyecto, en el resumen de la propuesta retroactiva, sostiene que AWallet es 'una de las billeteras más avanzadas de Algorand'.
La huella financiera que respalda esa afirmación es pequeña. La dirección de donaciones publicada tiene 25.6 ALGO y aproximadamente 1.03 USDT on-chain; el Discord del proyecto reúne a 411 miembros, con 7 conectados en el momento de la comprobación; la publicación social reciente más visible sobre la billetera, en Bluesky, tiene un solo 'me gusta'. El desarrollo en sí no está parado: el repositorio recibió pushes el 15 de agosto, acumula 672 estrellas y sus dos colaboradores principales suman 546 y 62 commits respectivamente.
Un punto de concentración que el lector debería sopesar: la pantalla de swap de la billetera pasa por el agregador del propio Biatec junto a los dos routers de terceros, y Biatec también opera el nodo Algorand y la infraestructura de indexación a los que la billetera puede conectarse. Nada de eso es un problema en sí mismo —el diseño no custodial implica que la billetera solo firma lo que el usuario aprueba—, pero la auditoría del 4 de agosto muestra exactamente por qué la capa del agregador es la frontera de confianza que importa, y el router del propio equipo se sitúa justo sobre ella.
La misma empresa eslovaca ha construido un conjunto de herramientas más amplio en torno a Algorand: una pasarela de pagos gratuita y de código abierto que permite a los comercios aceptar ALGO, USDC o USDT directamente en su propia cuenta, sin intermediario financiero y sin necesidad de disponer de una cuenta de billetera; un sistema de votación de código abierto; y el marco de stablecoin nacional Stabilitas, que este medio ya señaló que está paralizado desde 2023. El programa de auditorías de la billetera, con todas sus limitaciones, es la parte de ese catálogo en la que el equipo enseña su trabajo de la forma más inspeccionable.
Fuente
- Biatec Wallet3 (a-wallet.net sirve la misma compilación)
- Repositorio de GitHub scholtz/wallet2 — README, instrucciones de auditoría, registro de riesgos, informes de auditoría, validate.ts, arc60.ts
- Preguntas frecuentes de la billetera6
- Registro de cambios de la billetera7
- Página de donaciones8
- Propuestas xGov 9, 90, 199, 2009
- Biatec Wallet - Algorand Community Wallet10
- Biatec Wallet - Algorand Community Wallet11
- Biatec12
- raw.githubusercontent.com13
- raw.githubusercontent.com14
- raw.githubusercontent.com15
- Historial de src/scripts/aggregators/validate.ts - scholtz/wallet · GitHub16
- Biatec Wallet - Algorand Community Wallet17
- Las mejores billeteras de Algorand en 2026: lugares seguros para hacer staking de ALGO - Coin Bureau18
- Biatec Wallet - Algorand Community Wallet19
3 cifras de esta historia están verificadas.Ver todas las comprobaciones
Fuentes
- 1Biatec biatec.io↩
- 2repositorio público de GitHub github.com↩
- 3wallet.biatec.io wallet.biatec.io↩
- 6Preguntas frecuentes de la billetera a-wallet.net↩
- 7Registro de cambios de la billetera a-wallet.net↩
- 8Página de donaciones a-wallet.net↩
- 9Propuestas xGov 9, 90, 199, 200 github.com↩
- 10Biatec Wallet - Algorand Community Wallet a-wallet.net↩
- 11Biatec Wallet - Algorand Community Wallet wallet.biatec.io↩
- 12Biatec biatec.io↩
- 13raw.githubusercontent.com/scholtz/wallet/master/src/scripts/aggregators/biatec.ts raw.githubusercontent.com↩
- 14raw.githubusercontent.com/scholtz/wallet/master/audits/risk-registry.md raw.githubusercontent.com↩
- 15raw.githubusercontent.com/scholtz/wallet/master/src/scripts/aggregators/types.ts raw.githubusercontent.com↩
- 16Historial de src/scripts/aggregators/validate.ts - scholtz/wallet · GitHub github.com↩
- 17Biatec Wallet - Algorand Community Wallet a-wallet.net↩
- 18Las mejores billeteras de Algorand en 2026: lugares seguros para hacer staking de ALGO - Coin Bureau coinbureau.com↩
- 19Biatec Wallet - Algorand Community Wallet wallet.biatec.io↩