Version 11.7.0.0
Babel Obfuscator
Verbesserungen
- KI-tauglicher CLI-Modus: Neu ist das globale Flag
--format=text|json|ndjson(Standardtext). Mitjsonoderndjsonwird stdout zu einem strukturierten Datenstrom nach dem Schemababel.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=jsonundbabel --version --format=jsongeben 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--helpund--versionbleibt unter--format=textunverä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-exitschaltet semantische Exit-Codes ein:0Erfolg,10ungültige Argumente,20Eingabe nicht gefunden,30Verschleierungsfehler,40Lizenzierungsfehler,50Schlüssel- oder Signaturfehler. Ohne dieses Flag gilt weiterhin der bisherige Vertrag0/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.Obfuscatornutzen ließen. Enterprise-Lizenzen sind jetzt wie dokumentiert aufbabel.exeund 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.ProcessVirtualMembersberücksichtigt beim Sammeln der Ausschlüsse jetzt die externeMapFileNameStrategy, 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 inmarshal_methods.*.llbeim Kompilieren von .NET-Android-Assemblies mit den .NET-10-SDK-Tools 36. DieOverloadedParameterStrategyvergab bisher allen Parametern überladener Methoden denselben Namen, was der LLVM-IR-Generator für Marshal-Methoden unter Android nicht zulässt.RenameParameterserzwingt 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 vonExcludeFilesinbuild.cakewurde 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 vonObfuscator.csundStandardPhaseBuilder.csgenutzten 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
IsolatedFileDatewurde 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
AuthControllerdes Licensing-Dienstes gesendet wurden, landeten mit der StufeInformationin 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/adminund der fest hinterlegte JWT-Signaturschlüssel wurden ausappsettings.jsonentfernt. 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 alsUserKeyversuchte, wurde ebenfalls entfernt, sodass der eigeneUserKey-Pfad strikt getrennt bleibt (keine Rollen ⇒ keine Rechteausweitung zum Administrator). - IP-Whitelist — Allowlist gegenüber Ausnahme von der Ratenbegrenzung: Die IP-Whitelist in
IpFilteringMiddlewareverhielt 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.

