NOTAS DE LA VERSIÓN

Novedades de Babel.

Cambios en el motor, las herramientas de gestión de licencias y el espacio de trabajo de Desktop, según las notas de la versión del producto.

Publicado el 11 de mayo de 2026

Versión 11.7.0.0

Babel Obfuscator

Mejoras

  • Modo de CLI apto para IA: Nuevo indicador global --format=text|json|ndjson (text de forma predeterminada). Con json o ndjson, la salida estándar pasa a ser un flujo estructurado conforme al esquema babel.cli.v1 (versionado y analizable por máquina), y los diagnósticos para personas se envían a la salida de error para que los canales se mantengan limpios. La superficie de CLI ya existente es totalmente compatible con versiones anteriores: los scripts de CI y las integraciones de los clientes no necesitan ningún cambio.
    • babel --help --format=json y babel --version --format=json emiten un esquema legible por máquina que describe todas las opciones (nombre, alias, tipo, contenedor, indicador negable, descripción, grupo) o la información de runtime y plataforma. Las salidas textuales de --help y --version no cambian en --format=text.
    • Nuevo indicador --quiet (alias -q): suprime el banner del logotipo y hace que las peticiones interactivas de contraseña fallen de inmediato con un error explícito en lugar de bloquearse esperando entrada, lo que resulta seguro para invocaciones desatendidas o desde agentes.
    • Nuevo indicador --strict-exit: activa códigos de salida con significado: 0 éxito, 10 argumentos no válidos, 20 entrada no encontrada, 30 fallo de ofuscación, 40 fallo de licencia, 50 fallo de clave o de firma. Sin este indicador se conserva el contrato heredado 0/1.

Cambios

  • Licencia Enterprise — restricción de NuGet/dotnet reforzada: Las licencias Enterprise quedan ahora bloqueadas por completo en .NET (CoreCLR). Antes solo se bloqueaban en plataformas dotnet distintas de Windows, pero se seguían aceptando en Windows, lo que permitía usarlas a través de la tarea de MSBuild del paquete NuGet Babel.Obfuscator. Las licencias Enterprise quedan restringidas a babel.exe y Babel UI (NET472), tal como está documentado.

Correcciones de errores

  • Renombrado entre ensamblados — miembros de interfaz: Se ha corregido una regresión por la que las propiedades y los métodos locales que implementaban implícitamente un miembro de interfaz de un ensamblado externo se seguían renombrando aunque el archivo de mapa externo marcara ese miembro como excluido (nodo presente, sin atributo newName). VirtualMembersObfuscatorVisitor.ProcessVirtualMembers consulta ahora el MapFileNameStrategy externo al recopilar las exclusiones, de modo que una entrada externa de «no renombrar» se propaga al miembro local que la implementa y el despacho de interfaz sigue funcionando en tiempo de ejecución.
  • Renombrado de parámetros sobrecargados (.NET Android, SDK 36 de .NET 10): Se han corregido los errores redefinition of argument en marshal_methods.*.ll al compilar ensamblados .NET Android con las herramientas 36 del SDK de .NET 10. OverloadedParameterStrategy asignaba antes el mismo nombre a todos los parámetros de los métodos sobrecargados, algo que el generador de métodos de marshalling en IR de LLVM de Android no permite. RenameParameters fuerza ahora la unicidad añadiendo un sufijo numérico cuando detecta un nombre duplicado, en lugar de desactivar el renombrado de sobrecargas en los ensamblados de Android.
  • Expresión regular de ExcludeFiles: Se ha eliminado un ancla $ sobrante al final del patrón de expresión regular ExcludeFiles en build.cake, que hacía que algunos archivos se conservaran indebidamente en la salida de compilación.

Seguridad

  • MsilMethodProvider — divulgación de errores de descifrado: Cuando fallaba el descifrado de código, el mensaje de la excepción incluía la contraseña usada en el intento. El mensaje de error se ha reescrito para que la contraseña ya no se filtre en trazas de pila ni en registros.
  • Rotación de las contraseñas internas de firma de licencias: Se han rotado las contraseñas internas de firma incrustadas en Keys/{enterprise,ultimate,server,datacenter,standard,professional}.json[x], que se usan para firmar los derechos de cada edición que consumen Obfuscator.cs y StandardPhaseBuilder.cs. No hace falta que el cliente haga nada, pero conviene volver a generar los ensamblados ofuscados con 11.7.0 para incorporar las nuevas claves.

Babel Licensing

Mejoras

  • Licencia de activación — actualizar la fecha de caducidad: Se ha añadido compatibilidad en la Web API e integración con el editor de licencias de Babel UI para actualizar la fecha de caducidad de las licencias de activación sin reemitir la licencia. El controlador de gestión expone ahora el endpoint correspondiente y hay pruebas de extremo a extremo que cubren el flujo (ActivationLicenseTest, GrpcClientTests, LicensesView).
  • Cifrado del almacenamiento de Babel.Licensing — de DES a AES: Se ha migrado el cifrado del almacenamiento de IsolatedFileDate de DES (56 bits, trivial de romper) a AES-128 con una clave derivada por SHA-256. El cambio es compatible con versiones anteriores: los datos cifrados con DES se siguen leyendo en el primer acceso y se reescriben automáticamente en AES al guardar. Los archivos corruptos o migrados parcialmente se detectan y se validan durante la migración para evitar fallos en tiempo de ejecución.

Seguridad

  • AuthController — se ha eliminado el registro de contraseñas en texto plano: Las credenciales de inicio de sesión enviadas al AuthController del servicio de gestión de licencias se registraban con nivel Information y se guardaban en los destinos de registro de consola, archivo y base de datos. El registro anota ahora únicamente el nombre de usuario. Los operadores deberían rotar cualquier archivo histórico de registros que pueda contener las credenciales registradas anteriormente.
  • Eliminadas las credenciales de administrador predeterminadas y la clave de firma JWT fija: Se han eliminado de appsettings.json la cuenta predeterminada admin/admin y la clave de firma JWT incrustada en el código. El servicio de gestión de licencias genera ahora automáticamente al arrancar una clave de firma aleatoria criptográficamente segura si no hay ninguna configurada. Las implantaciones existentes deben configurar explícitamente una cuenta de administrador en el primer arranque; las credenciales predeterminadas anteriores ya no autenticarán. También se ha eliminado la alternativa heredada que probaba la contraseña como UserKey durante el inicio de sesión con usuario y contraseña, de modo que la ruta de autenticación dedicada a UserKey queda estrictamente separada (sin roles ⇒ sin escalada a administrador).
  • Lista blanca de IP — permitidos frente a exención de límites de peticiones: La lista blanca de IP de IpFilteringMiddleware se comportaba indebidamente como una lista de permitidos exclusiva: en cuanto existía una entrada en la lista, todas las IP no incluidas quedaban bloqueadas del servicio. La semántica de la lista blanca se ha corregido: las IP incluidas quedan ahora exentas de la limitación por fuerza bruta, mientras que el resto de IP siguen accediendo al servicio con normalidad, sujetas a los límites de peticiones habituales.