Versión 11.7.0.0
Babel Obfuscator
Mejoras
- Modo de CLI apto para IA: Nuevo indicador global
--format=text|json|ndjson(textde forma predeterminada). Conjsonondjson, la salida estándar pasa a ser un flujo estructurado conforme al esquemababel.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=jsonybabel --version --format=jsonemiten 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--helpy--versionno 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,10argumentos no válidos,20entrada no encontrada,30fallo de ofuscación,40fallo de licencia,50fallo de clave o de firma. Sin este indicador se conserva el contrato heredado0/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 ababel.exey 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.ProcessVirtualMembersconsulta ahora elMapFileNameStrategyexterno 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 argumentenmarshal_methods.*.llal compilar ensamblados .NET Android con las herramientas 36 del SDK de .NET 10.OverloadedParameterStrategyasignaba 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.RenameParametersfuerza 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 regularExcludeFilesenbuild.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 consumenObfuscator.csyStandardPhaseBuilder.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
IsolatedFileDatede 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
AuthControllerdel servicio de gestión de licencias se registraban con nivelInformationy 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.jsonla cuenta predeterminadaadmin/adminy 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 comoUserKeydurante el inicio de sesión con usuario y contraseña, de modo que la ruta de autenticación dedicada aUserKeyqueda 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
IpFilteringMiddlewarese 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.

