Version 11.7.0.0
Babel Obfuscator
Améliorations
- Mode CLI adapté à l'IA : Nouvel indicateur global
--format=text|json|ndjson(textpar défaut). Avecjsonoundjson, la sortie standard devient un flux structuré conforme au schémababel.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=jsonetbabel --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--helpet--versionsont 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-exitactive des codes de sortie sémantiques :0succès,10arguments invalides,20entrée introuvable,30échec d'obfuscation,40échec de licence,50échec de clé ou de signature. Sans cet indicateur, le contrat historique0/1est 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.exeet à 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.ProcessVirtualMembersconsulte désormais leMapFileNameStrategyexterne 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 argumentdansmarshal_methods.*.lllors de la compilation d'assemblies .NET Android avec les outils 36 du SDK .NET 10.OverloadedParameterStrategyattribuait 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.RenameParametersimpose 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èreExcludeFilesdansbuild.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 parObfuscator.csetStandardPhaseBuilder.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
IsolatedFileDatede 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'
AuthControllerdu service de licences étaient journalisés au niveauInformationet 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/adminpar défaut et de la clé de signature JWT codée en dur dansappsettings.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 commeUserKeylors 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é parUserKey(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'
IpFilteringMiddlewarese 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.

