NOTES DE VERSION

Les nouveautés de Babel.

Modifications apportées au moteur, aux outils de gestion des licences et à l’espace de travail Desktop, extraites des notes de version du produit.

Publié le 11 mai 2026

Version 11.7.0.0

Babel Obfuscator

Améliorations

  • Mode CLI adapté à l'IA : Nouvel indicateur global --format=text|json|ndjson (text par défaut). Avec json ou ndjson, la sortie standard devient un flux structuré conforme au schéma babel.cli.v1 (versionné, analysable par une machine), et les diagnostics destinés aux humains sont dirigés vers la sortie d'erreur afin que les canaux restent propres. La surface CLI préexistante est entièrement rétrocompatible : les scripts d'intégration continue et les intégrations clients existants n'exigent aucune modification.
    • babel --help --format=json et babel --version --format=json émettent un schéma exploitable par une machine décrivant chaque option (nom, alias, type, conteneur, indicateur négatif, description, groupe) ou les informations de runtime et de plateforme. Les sorties textuelles de --help et --version sont inchangées en --format=text.
    • Le nouvel indicateur --quiet (alias -q) supprime la bannière du logo et fait échouer immédiatement les invites de mot de passe interactives avec une erreur explicite, au lieu de bloquer sur une saisie — ce qui convient aux invocations sans surveillance ou par un agent.
    • Le nouvel indicateur --strict-exit active des codes de sortie sémantiques : 0 succès, 10 arguments invalides, 20 entrée introuvable, 30 échec d'obfuscation, 40 échec de licence, 50 échec de clé ou de signature. Sans cet indicateur, le contrat historique 0/1 est préservé.

Modifications

  • Licence Enterprise — restriction NuGet/dotnet durcie : Les licences Enterprise sont désormais entièrement bloquées sur .NET (CoreCLR). Auparavant, elles n'étaient bloquées que sur les plateformes dotnet autres que Windows mais restaient acceptées sous Windows, ce qui permettait de les utiliser via la tâche MSBuild NuGet Babel.Obfuscator. Les licences Enterprise sont désormais limitées à babel.exe et à Babel UI (NET472), comme documenté.

Corrections de bugs

  • Renommage inter-assemblies — membres d'interface : Correction d'une régression où des propriétés ou méthodes locales implémentant implicitement un membre d'interface issu d'un assembly externe étaient toujours renommées, alors même que le fichier de mappage externe marquait ce membre d'interface comme exclu (nœud présent, sans attribut newName). VirtualMembersObfuscatorVisitor.ProcessVirtualMembers consulte désormais le MapFileNameStrategy externe lors de la collecte des exclusions, de sorte qu'une entrée externe « ne pas renommer » se propage au membre local qui l'implémente et que la répartition d'interface continue de fonctionner à l'exécution.
  • Renommage des paramètres surchargés (.NET Android, SDK .NET 10 36) : Correction des erreurs redefinition of argument dans marshal_methods.*.ll lors de la compilation d'assemblies .NET Android avec les outils 36 du SDK .NET 10. OverloadedParameterStrategy attribuait auparavant le même nom à tous les paramètres des méthodes surchargées, ce que le générateur de méthodes de marshalage en IR LLVM d'Android n'autorise pas. RenameParameters impose désormais l'unicité en ajoutant un suffixe numérique lorsqu'un nom en double est détecté, au lieu de désactiver le renommage des surcharges pour les assemblies Android.
  • Expression régulière ExcludeFiles : Suppression d'une ancre $ parasite en fin de l'expression régulière ExcludeFiles dans build.cake, qui conduisait à conserver à tort certains fichiers dans la sortie de compilation.

Sécurité

  • MsilMethodProvider — divulgation d'erreur de déchiffrement : Lorsque le déchiffrement du code échouait, le message d'exception contenait le mot de passe utilisé pour la tentative. Le message d'erreur a été réécrit afin que le mot de passe ne fuite plus dans les traces de pile ni dans les journaux.
  • Rotation des mots de passe internes de signature de licence : Rotation des mots de passe de signature internes intégrés dans Keys/{enterprise,ultimate,server,datacenter,standard,professional}.json[x], utilisés pour signer les droits d'édition consommés par Obfuscator.cs et StandardPhaseBuilder.cs. Aucune action n'est requise de la part des clients, mais les assemblies obfusqués devraient être régénérés avec la 11.7.0 afin de reprendre les nouvelles clés.

Babel Licensing

Améliorations

  • Licence d'activation — mise à jour de la date d'expiration : Ajout de la prise en charge par l'API web et de l'intégration à l'éditeur de licences de Babel UI pour mettre à jour la date d'expiration des licences d'activation sans réémettre la licence. Le contrôleur de gestion expose désormais le point de terminaison correspondant et des tests de bout en bout couvrent le flux (ActivationLicenseTest, GrpcClientTests, LicensesView).
  • Chiffrement du stockage Babel.Licensing — DES → AES : Migration du chiffrement du stockage IsolatedFileDate de DES (56 bits, cassable sans difficulté) vers AES-128 avec une clé dérivée par SHA-256. Le changement est rétrocompatible : les données historiques chiffrées en DES restent lisibles au premier accès et sont automatiquement réécrites en AES à l'enregistrement suivant. Les fichiers corrompus ou partiellement migrés sont détectés et validés pendant la migration afin d'éviter les échecs à l'exécution.

Sécurité

  • AuthController — suppression de la journalisation des mots de passe en clair : Les identifiants de connexion soumis à l'AuthController du service de licences étaient journalisés au niveau Information et conservés dans les cibles de journalisation console, fichier et base de données. La journalisation ne consigne plus que le nom d'utilisateur. Les exploitants devraient faire tourner toute archive de journaux antérieure susceptible de contenir les identifiants ainsi journalisés.
  • Suppression des identifiants administrateur par défaut et de la clé de signature JWT codée en dur : Suppression du compte admin/admin par défaut et de la clé de signature JWT codée en dur dans appsettings.json. Le service de licences génère désormais automatiquement au démarrage une clé de signature aléatoire cryptographiquement sûre si aucune n'est configurée. Les déploiements existants doivent configurer explicitement un compte administrateur au premier démarrage ; les anciens identifiants par défaut ne permettront plus de s'authentifier. Le repli historique qui essayait le mot de passe comme UserKey lors d'une connexion par utilisateur et mot de passe a également été supprimé, ce qui maintient strictement séparé le chemin d'authentification dédié par UserKey (pas de rôles ⇒ pas d'élévation vers administrateur).
  • Liste blanche d'adresses IP — liste d'autorisation ou exemption de limitation : La liste blanche d'adresses IP d'IpFilteringMiddleware se comportait à tort comme une liste d'autorisation exclusive : dès qu'une entrée y figurait, toutes les adresses IP absentes de la liste étaient bloquées. La sémantique de la liste blanche a été corrigée : les adresses IP listées sont désormais exemptées de la limitation contre la force brute, tandis que toutes les autres continuent d'accéder normalement au service, dans les limites de débit habituelles.