Metalama pozwala na lokalne wykonanie kodu poprzez DLL planting we współdzielonych katalogach tymczasowych
Podsumowanie
Metalama ładowała i wykonywała zestawy czasu kompilacji, pomocnicze narzędzia wykonywalne oraz wbudowane zestawy pomocnicze z przewidywalnych katalogów tymczasowych. W systemach Linux i macOS domyślną lokalizacją pamięci podręcznej był ogólnodostępny do zapisu systemowy katalog tymczasowy (Path.GetTempPath(), czyli /tmp), a wcześniej wygenerowane artefakty były uznawane za zaufane na podstawie obecności pliku znacznika/wartownika .completed, bez jakiejkolwiek weryfikacji integralności.
Lokalny użytkownik bez uprawnień na współdzielonej maszynie lub agencie CI/build może wstępnie utworzyć deterministyczną strukturę katalogów pamięci podręcznej i umieścić złośliwą bibliotekę DLL wraz z pasującym plikiem znacznika. Gdy użytkownik o wyższych uprawnieniach (bądź konto kompilacji/usługowe) uruchomi później proces budowania, Metalama odnajduje znacznik, pomija ponowne generowanie oraz ładuje i wykonuje dostarczony przez atakującego zestaw wewnątrz procesu kompilatora, IDE lub MSBuild.
Ścieżki ładowania i wykonywania podatne na atak:
- pamięć podręczna zestawów czasu kompilacji generowanych przez Metalama na podstawie aspektów;
- pomocnicze narzędzia wykonywalne, które Metalama rozpakowuje do lokalnego katalogu, a następnie uruchamia;
- wbudowane zestawy pomocnicze .NET, które Metalama rozpakowuje do lokalnego katalogu i ładuje do procesu budowania lub IDE.
Wpływ
Wykonanie dowolnego kodu w kontekście bezpieczeństwa kompilującego użytkownika — czyli lokalna eskalacja uprawnień między kontami użytkowników na współdzielonych systemach POSIX (wieloużytkownikowe maszyny programistyczne, agenci CI/build). Atakujący uzyskuje wykonanie kodu jako ofiara bez posiadania jej uprawnień, co pozwala na odczyt kodu źródłowego/tajemnic, modyfikację wyników kompilacji (supply-chain injection) lub zakłócanie procesów budowania.
Konfiguracje objęte podatnością
- Linux i macOS, konfiguracja domyślna — podatne. Domyślna konfiguracja korzysta z systemowego katalogu tymczasowego z prawem zapisu dla wszystkich.
- Windows, konfiguracja domyślna — niepodatne. Domyślny katalog tymczasowy danego użytkownika jest chroniony przez systemowe listy kontroli dostępu (ACL), co uniemożliwia podrzucanie plików między użytkownikami.
- Zmienna środowiskowa
METALAMA_TEMPstanowi mechanizm nadpisania kontrolowany przez wdrażającego i pozostaje poza zakresem: wskazanie w niej niebezpiecznej lokalizacji (np. z prawem zapisu dla każdego lub kontrolowanej przez atakującego) jest błędem konfiguracji wdrożenia, a nie wadą oprogramowania.
Poziom zagrożenia
CVSS v3.1: AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H = 8.2 (High) dla podatnej domyślnej konfiguracji POSIX (wartość Scope:Changed odzwierciedla eskalację uprawnień między użytkownikami).
Porównanie z CVSS v4.0: 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), co bardziej szczegółowo przypisuje niski wpływ do samej pamięci podręcznej i wysoki wpływ do późniejszego procesu kompilacji. Rzeczywisty zakres mieści się zatem w przedziale Medium-High w zależności od modelu oceny i platformy.
Osłabienia
- CWE-377: Insecure Temporary File
- CWE-427: Uncontrolled Search Path Element
Pakiety objęte podatnością
- Metalama.Framework < 2026.1.19,
- Metalama.Tool < 2026.1.19
Wewnętrzny identyfikator: metalama/Metalama#1650.
Co trzeba zrobić
Pamięci podręczne i katalogi rozpakowywania zostały przeniesione z ogólnodostępnego do zapisu systemowego katalogu tymczasowego do lokalizacji danych aplikacji per-użytkownik ($XDG_CACHE_HOME / ~/.cache/Metalama w systemach POSIX), wykorzystując uprawnienia własności systemu operacyjnego jako granicę zaufania. Poprawiono w 2026.1.19.
Czego dotyczy
Kliknij technologię, aby zobaczyć wszystkie dotyczące jej podatności.
| Platforma | Paczka | Podatne wersje | Poprawka w wersji |
|---|---|---|---|
| .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 |
Odnośniki
- 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
- Wektor CVSS
CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H- Słabość (CWE)
CWE-377, CWE-427- Platforma
- .NET (NuGet)
- Paczka
Metalama.Framework, Metalama.Tool- Ujawniono
- 14.10.2026
- Aktualizacja
- 19.10.2026 08:00
Źródła i licencje · Redakcja lub tłumaczenie: DockRay. Zachowano prawa źródeł i obowiązujące licencje.
OSV / GitHub Advisory Database - GHSA-m6wq-39m7-9xpp - CC BY 4.0
Historia podatności: Metalama.Framework
Wszystkie opisane podatności tej paczki (.NET (NuGet)), od najnowszej. Widać, czy to jednorazowa wpadka, czy paczka, której trzeba pilnować.
To jedyna znana podatność tej paczki.
Dowiedz się, które podatności dotyczą Twojej aplikacji
Po podłączeniu integracji DockRay i włączeniu raportowania oprogramowania DockRay porównuje zgłoszone wersje komponentów ze znanymi podatnościami i powiadamia o potwierdzonych dopasowaniach. Zakres zależy od obsługiwanej technologii i dostępnych biuletynów.