Metalama ermöglicht lokale Codeausführung durch DLL-Planting in gemeinsam genutzten temporären Verzeichnissen
Zusammenfassung
Metalama lud und führte Compile-Time-Assemblies, zusätzliche ausführbare Tools und eingebettete Helper-Assemblies aus vorhersagbaren temporären Verzeichnissen aus. Unter Linux und macOS war der standardmäßige Cache-Speicherort das allgemein beschreibbare temporäre Systemverzeichnis (Path.GetTempPath(), d. h. /tmp). Zuvor generierte Artefakte wurden basierend auf dem Vorhandensein einer Sentinel- bzw. .completed-Markerdatei ohne jegliche Integritätsprüfung als vertrauenswürdig eingestuft.
Ein lokaler Benutzer ohne erweiterte Rechte auf einem gemeinsam genutzten System oder CI-/Build-Agenten kann die deterministische Cache-Verzeichnisstruktur vorab anlegen und eine bösartige DLL zusammen mit der passenden Sentinel-Datei platzieren. Führt danach ein Benutzer mit höheren Rechten (oder ein Build-/Dienstkonto) einen Build durch, erkennt Metalama die Sentinel-Datei, überspringt die Neuerstellung und lädt sowie führt die vom Angreifer bereitgestellte Assembly innerhalb des Compiler-, IDE- oder MSBuild-Prozesses aus.
Betroffene Lade- und Ausführungspfade:
- der Cache von Compile-Time-Assemblies, die Metalama aus Aspekten generiert;
- zusätzliche ausführbare Tools, die Metalama in ein lokales Verzeichnis extrahiert und anschließend startet;
- eingebettete .NET-Helper-Assemblies, die Metalama in ein lokales Verzeichnis extrahiert und in den Build- bzw. IDE-Prozess lädt.
Auswirkungen
Beliebige Codeausführung im Sicherheitskontext des ausführenden Benutzers – d. h. eine lokale Rechteausweitung über Benutzerkonten hinweg auf gemeinsam genutzten POSIX-Systemen (Mehrbenutzer-Entwicklungsrechner, CI-/Build-Agenten). Angreifer erlangen Codeausführung als das Opfer, ohne dessen Berechtigungen zu besitzen, und können Quellcode bzw. Geheimnisse einsehen, Build-Ergebnisse manipulieren (Supply-Chain-Injection) oder Builds stören.
Betroffene Konfigurationen
- Linux und macOS, Standardkonfiguration — betroffen. Die Standardkonfiguration nutzt das allgemein beschreibbare temporäre Systemverzeichnis.
- Windows, Standardkonfiguration — nicht betroffen. Das standardmäßige temporäre Verzeichnis pro Benutzer ist durch Betriebssystem-ACLs geschützt, sodass ein benutzerübergreifendes Ablegen von Dateien nicht möglich ist.
- Die Umgebungsvariable
METALAMA_TEMPdient als benutzerdefinierte Überschreibung und ist außerhalb des Rahmens (out of scope): Das Verweisen auf einen unsicheren (z. B. allgemein beschreibbaren oder von einem Angreifer kontrollierten) Pfad stellt eine Fehlkonfiguration bei der Bereitstellung dar und keinen Produktfehler.
Schweregrad
CVSS v3.1: AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H = 8.2 (High) für die betroffene POSIX-Standardkonfiguration (Scope:Changed bildet die benutzerübergreifende Rechteausweitung ab).
CVSS v4.0-Gegenprüfung: CVSS:4.0/AV:L/AC:L/AT:P/PR:L/UI:P/VC:L/VI:H/VA:L/SC:L/SI:H/SA:H = 6.0 (Medium), was geringe Auswirkungen auf den Cache selbst und hohe Auswirkungen auf den nachfolgenden Build-Prozess differenzierter bewertet. Die Spanne liegt daher je nach Bewertungsmodell und Plattform zwischen Medium und High.
Schwachstellen
- CWE-377: Insecure Temporary File
- CWE-427: Uncontrolled Search Path Element
Betroffene Pakete
- Metalama.Framework < 2026.1.19
- Metalama.Tool < 2026.1.19
Interne Nachverfolgung: metalama/Metalama#1650.
Was zu tun ist
Caches und Extraktionsverzeichnisse wurden aus dem allgemein beschreibbaren temporären Systemverzeichnis in benutzerspezifische Anwendungsdatenpfade verlegt ($XDG_CACHE_HOME / ~/.cache/Metalama auf POSIX-Systemen), wodurch die vom Betriebssystem erzwungenen Benutzerrechte als Vertrauensgrenze dienen. Behoben in 2026.1.19.
Betroffene Software
Klicken Sie auf eine Technologie, um alle zugehörigen Schwachstellen anzuzeigen.
| Plattform | Paket | Anfällige Versionen | Behoben in |
|---|---|---|---|
| .NET (NuGet) | Metalama.Framework | >= 2026.1.0-preview, < 2026.1.19, < 2025.1.18, >= 2026.0.0-preview, < 2026.0.25 | 2026.1.19, 2025.1.18, 2026.0.25 |
| .NET (NuGet) | Metalama.Tool | >= 2026.1.0-preview, < 2026.1.19, < 2025.1.18, >= 2026.0.0-preview, < 2026.0.25 | 2026.1.19, 2025.1.18, 2026.0.25 |
Verweise
- https://github.com/metalama/Metalama/security/advisories/GHSA-m6wq-39m7-9xpp
- https://github.com/metalama/Metalama/pull/1719
- https://github.com/metalama/Metalama/commit/09911349a916e82194b1cfaa6d0a38acad928fc9
- https://github.com/metalama/Metalama/commit/92c4feecfce86d18fcb007ab6d3a1b4383326a2e
- https://github.com/metalama/Metalama/commit/ab9407263203c66d7c5680a34c28dba31f9951c9
- https://github.com/metalama/Metalama
- CVSS-Vektor
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H- Schwäche (CWE)
CWE-377, CWE-427- Plattform
- .NET (NuGet)
- Paket
Metalama.Framework, Metalama.Tool- Veröffentlicht
- 14.10.2026
- Aktualisiert
- 19.10.2026 08:00
Quellen und Lizenzen · Von DockRay bearbeitet oder übersetzt; Rechte und Lizenzen der Quellen bleiben erhalten.
OSV / GitHub Advisory Database - GHSA-m6wq-39m7-9xpp - CC BY 4.0
Schwachstellenhistorie: Metalama.Framework
Alle veröffentlichten Schwachstellen dieses Pakets (.NET (NuGet)), neueste zuerst. Zeigt, ob es ein einmaliger Ausrutscher ist oder ein Paket, das man im Auge behalten muss.
Dies ist die einzige bekannte Schwachstelle dieses Pakets.
Erkennen Sie Schwachstellen in Ihrer Anwendung
Mit der DockRay-Integration und aktivierter Softwareinventarisierung prüft DockRay gemeldete Komponentenversionen auf bekannte Schwachstellen und benachrichtigt Sie über bestätigte Treffer. Die Abdeckung hängt von der unterstützten Technologie und den verfügbaren Meldungen ab.