VERSIONSHINWEISE

Was ist neu in Babel.

Änderungen an der Engine, den Lizenzverwaltungstools und dem Desktop-Arbeitsbereich, aus den Versionshinweisen des Produkts.

Veröffentlicht am 11. Mai 2026

Version 11.7.0.0

Babel Obfuscator

Verbesserungen

  • KI-tauglicher CLI-Modus: Neu ist das globale Flag --format=text|json|ndjson (Standard text). Mit json oder ndjson wird stdout zu einem strukturierten Datenstrom nach dem Schema babel.cli.v1 (versioniert, maschinenlesbar), und Diagnosemeldungen für Menschen gehen auf stderr, damit beide Kanäle sauber bleiben. Die bisherige CLI-Oberfläche bleibt vollständig abwärtskompatibel — bestehende CI-Skripte und Kundenintegrationen müssen nicht angepasst werden.
    • babel --help --format=json und babel --version --format=json geben ein maschinenlesbares Schema aus, das jede Option beschreibt (Name, Aliase, Typ, Container, Negierbarkeit, Beschreibung, Gruppe) bzw. Angaben zu Laufzeit und Plattform macht. Die Textausgabe von --help und --version bleibt unter --format=text unverändert.
    • Das neue Flag --quiet (Alias -q) unterdrückt das Logo-Banner und lässt interaktive Passwortabfragen sofort mit einem eindeutigen Fehler abbrechen, statt auf Eingabe zu blockieren — passend für unbeaufsichtigte Aufrufe und Agenten.
    • Das neue Flag --strict-exit schaltet semantische Exit-Codes ein: 0 Erfolg, 10 ungültige Argumente, 20 Eingabe nicht gefunden, 30 Verschleierungsfehler, 40 Lizenzierungsfehler, 50 Schlüssel- oder Signaturfehler. Ohne dieses Flag gilt weiterhin der bisherige Vertrag 0/1.

Änderungen

  • Enterprise-Lizenz — Einschränkung für NuGet/dotnet verschärft: Enterprise-Lizenzen sind unter .NET (CoreCLR) jetzt vollständig gesperrt. Bisher waren sie nur auf dotnet-Plattformen außerhalb von Windows gesperrt, unter Windows dagegen weiterhin gültig, sodass sie sich über den MSBuild-Task des NuGet-Pakets Babel.Obfuscator nutzen ließen. Enterprise-Lizenzen sind jetzt wie dokumentiert auf babel.exe und Babel UI (NET472) beschränkt.

Fehlerbehebungen

  • Assemblyübergreifende Umbenennung — Schnittstellenmember: Behoben wurde eine Regression, bei der lokale Eigenschaften und Methoden, die einen Schnittstellenmember aus einer externen Assembly implizit implementieren, selbst dann umbenannt wurden, wenn die externe Map-Datei den Schnittstellenmember als ausgeschlossen markierte (Knoten vorhanden, kein Attribut newName). VirtualMembersObfuscatorVisitor.ProcessVirtualMembers berücksichtigt beim Sammeln der Ausschlüsse jetzt die externe MapFileNameStrategy, sodass ein externer Eintrag „nicht umbenennen“ auf den lokal implementierenden Member durchschlägt und der Schnittstellenaufruf zur Laufzeit funktioniert.
  • Umbenennung von Parametern überladener Methoden (.NET Android, .NET 10 SDK 36): Behoben wurden redefinition of argument-Fehler in marshal_methods.*.ll beim Kompilieren von .NET-Android-Assemblies mit den .NET-10-SDK-Tools 36. Die OverloadedParameterStrategy vergab bisher allen Parametern überladener Methoden denselben Namen, was der LLVM-IR-Generator für Marshal-Methoden unter Android nicht zulässt. RenameParameters erzwingt jetzt Eindeutigkeit, indem bei einem erkannten Doppelnamen ein numerisches Suffix angehängt wird, statt die Umbenennung von Überladungen für Android-Assemblies abzuschalten.
  • ExcludeFiles-Regex: Ein überzähliger abschließender $-Anker im Regex-Muster von ExcludeFiles in build.cake wurde entfernt; er führte dazu, dass einige Dateien fälschlich in der Build-Ausgabe verblieben.

Sicherheit

  • MsilMethodProvider — Preisgabe bei Entschlüsselungsfehlern: Schlug die Codeentschlüsselung fehl, enthielt die Ausnahmemeldung das dabei verwendete Passwort. Die Fehlermeldung wurde neu formuliert, sodass das Passwort nicht mehr in Stacktraces oder Protokollen landet.
  • Interne Signaturpasswörter für Lizenzen erneuert: Die internen Signaturpasswörter in Keys/{enterprise,ultimate,server,datacenter,standard,professional}.json[x], mit denen die von Obfuscator.cs und StandardPhaseBuilder.cs genutzten Editionsberechtigungen signiert werden, wurden erneuert. Kunden müssen nichts unternehmen, verschleierte Assemblies sollten aber mit 11.7.0 neu gebaut werden, um die neuen Schlüssel zu übernehmen.

Babel Licensing

Verbesserungen

  • Aktivierungslizenz — Ablaufdatum ändern: Neu sind Web-API-Unterstützung und die Anbindung im Lizenzeditor von Babel UI, um das Ablaufdatum von Aktivierungslizenzen zu ändern, ohne die Lizenz neu auszustellen. Der Management Controller stellt den passenden Endpunkt bereit, und End-to-End-Tests decken den Ablauf ab (ActivationLicenseTest, GrpcClientTests, LicensesView).
  • Babel.Licensing Speicherverschlüsselung — DES → AES: Die Speicherverschlüsselung von IsolatedFileDate wurde von DES (56 Bit, trivial zu brechen) auf AES-128 mit einem aus SHA-256 abgeleiteten Schlüssel umgestellt. Die Änderung ist abwärtskompatibel: Mit DES verschlüsselte Altdaten bleiben beim ersten Zugriff lesbar und werden beim nächsten Speichern automatisch als AES neu geschrieben. Beschädigte oder halb migrierte Dateien werden während der Migration erkannt und geprüft, um Laufzeitfehler zu vermeiden.

Sicherheit

  • AuthController — Protokollierung von Passwörtern im Klartext entfernt: Anmeldedaten, die an den AuthController des Licensing-Dienstes gesendet wurden, landeten mit der Stufe Information in den Protokollsenken für Konsole, Datei und Datenbank. Protokolliert wird jetzt nur noch der Benutzername. Betreiber sollten alle Protokollarchive rotieren, die zuvor protokollierte Anmeldedaten enthalten könnten.
  • Standard-Administratorkonto und fest einkompilierter JWT-Signaturschlüssel entfernt: Das Standardkonto admin/admin und der fest hinterlegte JWT-Signaturschlüssel wurden aus appsettings.json entfernt. Der Licensing-Dienst erzeugt beim Start jetzt automatisch einen kryptografisch sicheren Zufallsschlüssel, wenn keiner konfiguriert ist. Bestehende Installationen müssen beim ersten Start ausdrücklich ein Administratorkonto einrichten; die bisherigen Standardanmeldedaten funktionieren nicht mehr. Der alte Ersatzweg, der das Passwort bei der Anmeldung mit Benutzername und Passwort zusätzlich als UserKey versuchte, wurde ebenfalls entfernt, sodass der eigene UserKey-Pfad strikt getrennt bleibt (keine Rollen ⇒ keine Rechteausweitung zum Administrator).
  • IP-Whitelist — Allowlist gegenüber Ausnahme von der Ratenbegrenzung: Die IP-Whitelist in IpFilteringMiddleware verhielt sich fälschlich wie eine ausschließende Allowlist: Sobald ein einziger Eintrag vorhanden war, wurden alle nicht gelisteten IP-Adressen vom Dienst ausgesperrt. Die Bedeutung der Whitelist wurde korrigiert — gelistete IP-Adressen sind jetzt von der Brute-Force-Ratenbegrenzung ausgenommen, während alle übrigen IP-Adressen den Dienst wie gewohnt und unter den üblichen Ratenbegrenzungen erreichen.