Wojciech Ciemski, Autor w serwisie Security Bez Tabu - Strona 426 z 465

OWASP Top 10 (2025 RC1): dwie nowe kategorie ryzyka dla aplikacji webowych

Wprowadzenie do problemu / definicja zmian

OWASP opublikował wersję Release Candidate listy Top 10:2025, która porządkuje najpoważniejsze ryzyka bezpieczeństwa aplikacji webowych. Nowa edycja przynosi dwie nowe kategorie oraz konsolidację (SSRF wchodzi do Broken Access Control). Zestawienie pozostaje „data-informed”, ale nie „data-driven”—autorzy łączą analizę danych z ankietą społeczności, aby wychwycić ryzyka słabo mierzalne narzędziami.


W skrócie

  • Nowe kategorie:
    • A03: Software Supply Chain Failures – rozwinięcie dawnego „Vulnerable and Outdated Components” o pełny łańcuch dostaw: zależności, buildy, dystrybucja.
    • A10: Mishandling of Exceptional Conditions – błędne obchodzenie się ze stanami wyjątkowymi (np. „fail open”, ujawnianie szczegółów błędów, brak rollbacków transakcji).
  • Konsolidacja: SSRF wchodzi do A01: Broken Access Control.
  • Awans: Security Misconfiguration rośnie z #5 (2021) na #2 (2025 RC1).

Kontekst / historia / powiązania

Lista Top 10 to punkt odniesienia dla zespołów AppSec od lat. W 2021 r. największym trzęsieniem ziemi było wyniesienie „Broken Access Control” na #1 oraz wydzielenie „Insecure Design”. W 2025 RC1 zespół OWASP:

  • zwiększa liczbę analizowanych CWE do 589 (vs ~400 w 2021),
  • kładzie nacisk na przyczynę, nie symptom (root cause),
  • korzysta z danych o CVEs/CVSS oraz z ankiety społeczności dla kategorii słabo testowalnych na skalę.

Analiza techniczna / szczegóły

A03: Software Supply Chain Failures (nowa/rozszerzona)

To rozszerzenie dawnego „Vulnerable and Outdated Components” (A06:2021), ale obejmujące cały ekosystem: zależności bezpośrednie i transytywne, narzędzia buildowe, rejestry artefaktów, łańcuch dystrybucji i podpisywanie. Mimo że kategoria ma niewiele CVE (problem z testowalnością), w ankiecie społeczności była najwyżej oceniana; OWASP podkreśla też wysokie średnie wyniki exploit/impact w CVE. Przykłady: SolarWinds czy kampanie uderzające w marketplace’y rozszerzeń.

Ryzyka techniczne (przykłady CWE):

  • CWE-1104: użycie nieutrzymywanych komponentów,
  • CWE-1395: zależność od podatnego komponentu,
  • CWE-1329: komponent nieaktualizowalny.

A10: Mishandling of Exceptional Conditions (nowa)

Nowa kategoria obejmuje 24 CWE związane z obsługą wyjątków, błędami logiki, „fail open”, wyciekami informacji z komunikatów błędów, brakiem reakcji na stany nadzwyczajne czy niejednolitą obsługą wyjątków. To obszar wcześniej traktowany czasem jako „code quality”, ale jego wpływ bezpieczeństwa jest realny: od DoS i eskalacji uprawnień po naruszenia integralności i poufności.

Ryzyka techniczne (przykłady CWE):

  • CWE-209/CWE-550: komunikaty błędów ujawniające dane wrażliwe,
  • CWE-636: brak „failing closed”,
  • CWE-703/754/755: niewłaściwe sprawdzanie/obsługa warunków wyjątkowych.

Inne przetasowania

  • A01 Broken Access Control pozostaje #1 i wchłania SSRF.
  • A02 Security Misconfiguration rośnie do #2 (coraz więcej zachowań aplikacji konfiguruje się, a nie koduje).
  • A04 Cryptographic Failures oraz A05 Injection spadają o dwa miejsca (na #4 i #5).
  • Nazwy doprecyzowano: np. A09 Logging & Alerting Failures (wcześniej „Security Logging and Monitoring Failures”).

Praktyczne konsekwencje / ryzyko

  • Łańcuch dostaw: atak na „narzędzia i metry” (IDE, pluginy, pipeline, rejestry, dependency resolvery) często omija klasyczne testy DAST/SAST. Potrzebna jest ciągła widoczność SBOM, kontrola źródeł i podpisy kryptograficzne artefaktów.
  • Stany wyjątkowe: błahe z pozoru wyjątki (np. brak parametru) mogą stać się prymitywem eksploitacyjnym (leaki w komunikatach, race condition, brak rollbacku transakcji → fraud). W mikrousługach kaskadowe wyjątki kończą się często DoS lub rozjechanym stanem.

Rekomendacje operacyjne / co zrobić teraz

1) Supply chain security w praktyce

Inwentaryzacja i SBOM:

# SBOM (CycloneDX) – syft
syft dir:./ -o cyclonedx-json > sbom.json

# SCA – grype (mapowanie do CVE)
grype sbom:sbom.json --fail-on high

Weryfikacja artefaktów (Sigstore cosign):

# Podpisanie obrazu
cosign sign --key cosign.key registry.example.com/app:1.2.3

# Weryfikacja podpisu
cosign verify --key cosign.pub registry.example.com/app:1.2.3

Kontrola źródeł i wersji:

  • Zezwalaj tylko na oficjalne rejestry i podpisane paczki (npm, PyPI, Maven, NuGet).
  • W CI/CD wymuś pinning wersji i bloker „latest”.
  • Regularnie aktualizuj IDE/plug-iny, runner’y, builder’y; traktuj je jak element produkcji.

Narzędzia OWASP, które warto włączyć:

  • Dependency-Check / Dependency-Track, CycloneDX, ASVS. (Wprost rekomendowane na stronie A03).

2) Obsługa wyjątków „fail closed” + minimalizacja wycieków

Zasady:

  • Zawsze rollback transakcji przy błędach (nie próbuj „naprawiać w locie”).
  • Globalny handler wyjątków + spójna polityka komunikatów (przyjaźnie dla użytkownika, bez danych technicznych).
  • Logowanie + alerting (SRE/SEC) – powtarzalne błędy mogą sygnalizować atak (brute force, fuzzing).

Przykład (Java/Spring) – bezpieczny handler i rollback:

@RestControllerAdvice
public class GlobalExceptionHandler {

  @ExceptionHandler(Exception.class)
  public ResponseEntity<ApiError> handleAny(Exception ex, WebRequest req) {
    // Log szczegółowy trafia do SIEM, nie do użytkownika
    MDC.put("correlationId", UUID.randomUUID().toString());
    log.error("Unhandled exception", ex);

    // Użytkownik dostaje neutralny komunikat
    ApiError safe = new ApiError("Wystąpił błąd. Spróbuj ponownie później.");
    return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(safe);
  }
}

@Service
public class TransferService {
  @Transactional
  public void transferMoney(...) {
    // jeśli cokolwiek rzuci wyjątek -> @Transactional zapewni rollback (fail closed)
    // ...
  }
}

Przykład (Node.js/Express) – brak wycieków w błędach:

app.use((err, req, res, next) => {
  req.log?.error({ err }, "Unhandled error"); // szczegóły do logów
  res.status(500).json({ message: "Wystąpił błąd. Spróbuj ponownie." }); // bez stacktrace
});

Twarde limity i back-pressure (zapobieganie stanom wyjątkowym):

  • Rate limiting (np. NGINX, Envoy) i limity zasobów (CPU, RAM, otwarte pliki).
  • Circuit breaker/time-out/retry-with-jitter między usługami.

3) Misconfiguration hygiene

  • Kontrola konfiguracji jako kodu (GitOps, PR-y + review).
  • Skany konfiguracji (kube-bench, kube-lint, tfsec).
  • Separacja obowiązków w CI/CD; nikt nie powinien samodzielnie przepchnąć kodu do produkcji.

Różnice / porównania z innymi przypadkami

  • Względem 2021: z kategorii „komponenty podatne/przestarzałe” wyrósł pełny łańcuch dostaw (A03), co odzwierciedla ataki na ekosystem deweloperski i narzędzia (marketplace’y, rejestry, buildy). SSRF przestało być samotną wyspą—logicznie trafiło do Broken Access Control (#1). Security Misconfiguration rośnie, co dobrze koresponduje z IaC/K8s i „konfiguracją-jako-logiką”.

Podsumowanie / kluczowe wnioski

  1. Myśl łańcuchowo: widoczność SBOM, podpisy, polityka źródeł, hardening pipeline’ów są równie ważne jak testy kodu.
  2. Przewiduj wyjątkowe: ujednolicone, bezpieczne wzorce obsługi błędów, zasada „fail closed”, realny alerting i rollback.
  3. Konfiguracja to kod: traktu­j ją tak samo rygorystycznie (review, testy, skany).
  4. Aktualizuj program szkoleniowy AppSec o nowe kategorie i mapowanie CWE/ATT&CK; przestaw wymagania na root cause zamiast pojedynczych symptomów.

Źródła / bibliografia

  • SecurityWeek: „Two New Web Application Risk Categories Added to OWASP Top 10”, 10 listopada 2025. (SecurityWeek)
  • OWASP Top 10:2025 RC1 – Introduction / What’s changed / Methodology. (OWASP)
  • OWASP Top 10:2025 RC1 – A03 Software Supply Chain Failures (opis, CWE, narzędzia). (OWASP)
  • OWASP Top 10:2025 RC1 – A10 Mishandling of Exceptional Conditions (opis, CWE, zalecenia). (OWASP)

Firefox 145 wprowadza nowe mechanizmy anty-fingerprintingowe. Co to zmienia dla prywatności?

Wprowadzenie do problemu / definicja luki

Browser fingerprinting to technika śledzenia polegająca na zebraniu szeregu pozornie niegroźnych parametrów środowiska (np. strefa czasowa, rozmiar ekranu, zestaw czcionek, liczba rdzeni CPU, możliwości dotyku, drobne różnice w renderingu grafiki czy obliczeniach) i złożeniu ich w względnie unikalny „odcisk palca”. Taki odcisk umożliwia rozpoznanie użytkownika między witrynami i w czasie — nawet po skasowaniu ciasteczek i w trybie prywatnym. Firefox 145 odpowiada na ten problem nową, drugą fazą obrony zmniejszającą odsetek użytkowników możliwych do jednoznacznego odróżnienia.


W skrócie

  • Firefox 145 rozszerza ochronę przed fingerprintingiem i na starcie włącza ją w Trybie Prywatnym oraz przy ETP „Ścisła” (Enhanced Tracking Protection – Strict). Planowane jest szersze domyślne włączenie po okresie obserwacji wpływu na kompatybilność stron.
  • Nowe mechanizmy ograniczają entropię najpopularniejszych sygnałów odcisku (m.in. canvas, czcionki, liczba punktów dotyku, dostępna rozdzielczość ekranu, liczba rdzeni raportowana do JS). Mozilla szacuje, że procent „unikalnych” przeglądarek spada prawie o połowę.
  • Użytkownicy i administratorzy mogą kontrolować poziom ochrony (ETP: Standard/Ścisła/Własna; wyjątki per-witryna). Dokumentacja precyzuje możliwe skutki uboczne i sposób diagnozy.

Kontekst / historia / powiązania

Firefox od lat łączy kilka warstw ochrony prywatności:

  • ETP blokujący znane skrypty śledzące i fingerprintery (listy Disconnect) oraz TCP – Total Cookie Protection izolujący ciasteczka per-witryna. Nowe zabezpieczenia fingerprintingowe są kolejną warstwą tego modelu.
  • Równolegle istnieje tryb Resist Fingerprinting (RFP) – bardzo agresywny, aktywowany w about:config, który silniej „spłaszcza” parametry środowiska, ale częściej psuje strony. Nowa ochrona w 145 celuje w praktyczny kompromis: mniej entropii przy zachowaniu użyteczności.

Analiza techniczna / szczegóły luki

Nowe zabezpieczenia działają na wielu warstwach, redukując zmienność i wprowadzając kontrolowany szum:

  1. Canvas / grafika 2D
    • Gdy witryna odczytuje piksele z elementu <canvas>, Firefox dodaje losowy szum (nie modyfikuje samego renderowania, dopóki nie ma odczytu), co utrudnia odtwarzanie powtarzalnego odcisku.
  2. Czcionki lokalne
    • Zablokowane są czcionki spoza zestawów systemowych; dostępność niektórych czcionek językowych (JP/TH/AR/ZH/KR/HE) zależy od ustawionej lokalizacji, by ograniczyć psucie layoutów i jednocześnie zredukować entropię z enumeracji fontów.
  3. Interfejs dotykowy / wskaźniki
    • navigator.maxTouchPoints przyjmuje ograniczony zbiór wartości (0, 1, albo spłaszczona wartość 5), co utrudnia różnicowanie po egzotycznych konfiguracjach dotyku.
  4. Dostępna rozdzielczość ekranu
    • Raportowane w JS available screen.height/widthzredukowane względem realnych wymiarów (np. odejmowana stała wysokość paska/docka), co wyrównuje różnice między środowiskami.
  5. Liczba rdzeni CPU (hardwareConcurrency)
    • Zamiast dokładnej liczby, Firefox raportuje wartość zredukowaną do koszyka (≤4 → 4, >4 → 8), przez co rzadkie układy przestają być jednoznaczne.
  6. Zasięg i fazowanie
    • Faza 2 uruchomiona w Trybie Prywatnym i przy ETP Ścisła; po potwierdzeniu kompatybilności – cel to włączenie domyślne dla wszystkich. Mozilla wskazuje, że łączne modyfikacje redukują „unikalność” populacji Firefox niemal o połowę (względem braku tych mitygacji).

Uwaga na rozbieżności w doniesieniach medialnych: część serwisów podała inne wartości np. dla rdzeni CPU; wiążące są liczby z aktualnej dokumentacji Mozilli (4 lub 8).


Praktyczne konsekwencje / ryzyko

  • Dla użytkowników indywidualnych: mniejsza szansa bycia jednoznacznie rozpoznanym między witrynami, nawet w sesjach prywatnych. Minimalny wpływ na UX, ale niektóre strony (szczególnie z testami grafiki/efektami, niestandardowymi fontami, zaawansowanymi canvas-operacjami) mogą zachowywać się inaczej albo nieco wolniej.
  • Dla zespołów marketing/analytics: spadek skuteczności technik opartych na odcisku przeglądarki; preferowane metody to mierzenie atrybucji z poszanowaniem prywatności lub dane zagregowane. (Kontekst: wcześniejsze spory wokół metod atrybucji w przeglądarkach).
  • Dla zespołów SecOps/IT: fingerprinting bywa wykorzystywany defensywnie (np. fraud detection, bot management). Po aktualizacji Firefoksa zwiększy się odsetek użytkowników z „wypłaszczonymi” sygnałami, co trzeba uwzględnić w progach heurystyk i modelach ryzyka.

Rekomendacje operacyjne / co zrobić teraz

Dla użytkowników (privacy-conscious)

  1. Włącz ETP: Ścisła lub używaj Trybu Prywatnego, aby aktywować nowe mitygacje. Ustawienia → Prywatność i bezpieczeństwo → Ochrona przed śledzeniem.
  2. Gdy strona psuje się (np. filtry video/greenscreen, odczyt canvas, brak nietypowej czcionki): kliknij tarcza → wyłącz ochronę tylko dla tej domeny, a problem zgłoś przez „Report a broken site”.

Szybki test w konsoli (F12 → Console):

// Przykładowe sygnały odcisku
({
  hw: navigator.hardwareConcurrency,    // oczekuj 4 albo 8 (w PB/ETP-Strict)
  mtp: navigator.maxTouchPoints,        // 0, 1 lub 5
  scr: { w: screen.width, h: screen.height },
  avh: screen.availHeight,
  lang: navigator.language
})

Uruchom w normalnym oknie i w Prywatnym – porównaj wyniki (z ETP: Ścisła).

Dla zespołów IT/Helpdesk (organizacje)

  • Rozważ polityki przedsiębiorstwa (Firefox for Enterprise) wymuszające ETP „Ścisła” w przeglądarkach o podwyższonym profilu ryzyka oraz testy zgodności krytycznych aplikacji.
  • Zaktualizuj playbooki wsparcia o znane skutki uboczne (np. brak niestandardowych fontów, subtelny szum canvas). Dodaj procedurę tymczasowych wyjątków per-domena i zgłaszania błędów.

Dla zespołów bezpieczeństwa / antifraud

  • Zrewiduj reguły i modele wykorzystujące sygnały hardwareConcurrency, maxTouchPoints, dane ekranowe i fingerprinty canvas. Nowe rozkłady wartości spłaszczają entropię – zwiększ udział sygnałów behawioralnych i serwerowych (np. wzorce żądań, weryfikacja sesji, atesty).

Różnice / porównania z innymi przypadkami

  • Resist Fingerprinting (RFP) (Firefox/Tor): maksymalne „uśrednianie” parametrów (np. wymuszony UTC, stałe wymiary okna, 60 fps, modyfikacje eventów wejścia). Dobra ochrona, ale częstsze problemy z kompatybilnością — rekomendowana dla bardzo wymagających profili prywatności.
  • Tor Browser: oparty na Firefoksie z RFP domyślnie, silna unifikacja profilu + trasy sieciowe Tor — najwyższy poziom prywatności kosztem UX/wydajności.
  • Brave / Safari / Chrome: różny zakres mitygacji (blokady znanych fingerprinterów, ograniczenia API, izolacja stanów). Nowości Firefoksa 145 wzmacniają go tam, gdzie dotąd brakowało spójnej normalizacji sygnałów przy zachowaniu wysokiej kompatybilności (poziom pośredni między standardowym trybem a RFP). (Porównawczo-kontekstowe; szczegóły implementacyjne różnią się w czasie).

Podsumowanie / kluczowe wnioski

  • Firefox 145 realnie obniża entropię odcisków – w testach Mozilli odsetek unikalnych profili spada niemal o połowę, a ochrona jest transparentna i domyślnie aktywna w Trybie Prywatnym oraz przy ETP: Ścisła.
  • Największy zysk płynie z normalizacji powszechnych sygnałów: canvas, czcionki, ekran, dotyk, rdzenie CPU. To utrudnia śledzenie bez cookies, ale zachowuje użyteczność.
  • Organizacje powinny przetestować krytyczne aplikacje, dostosować polityki i modele antyfraud do nowej dystrybucji wartości w API przeglądarki.

Źródła / bibliografia

  1. Mozilla Blog: „Firefox expands fingerprint protections: advancing towards a more private web” (informacja o wydaniu 145, zasięgu i redukcji unikalności). (blog.mozilla.org)
  2. Mozilla Support: „Firefox’s protection against fingerprinting” (pełna lista modyfikacji: canvas noise, czcionki, touch points, rozdzielczość, rdzenie CPU; ustawienia ETP; znane skutki uboczne). (Mozilla Support)
  3. Mozilla Support: „Resist Fingerprinting” (różnice między RFP a standardową ochroną; skutki uboczne). (Mozilla Support)
  4. BleepingComputer: „Mozilla Firefox gets new anti-fingerprinting defenses” (materiał prasowy / kontekst rynkowy). (BleepingComputer)

Quantum Route Redirect (QRR): nowa platforma PhaaS do przekierowań, która masowo wykrada dane logowania Microsoft 365

Wprowadzenie do problemu / definicja luki

Badacze opisali nową usługę Phishing-as-a-Service (PhaaS) o nazwie Quantum Route Redirect (QRR), która automatyzuje całą kampanię phishingu – od routingu ruchu po profilowanie ofiar – i uderza w użytkowników Microsoft 365 na całym świecie. Platforma jest dostarczana „pod klucz”, wraz z setkami przygotowanych domen i gotowych szablonów wiadomości (m.in. DocuSign, HR/payroll, płatności, „missed voicemail”, a także QR-code phishing / quishing). Kluczowym elementem QRR jest inteligentne przekierowanie: boty i skanery firmowe trafiają na strony „benign”, a ludzie – na właściwe strony zbierające poświadczenia.


W skrócie

  • Skala: ~1000 domen hostujących QRR, kampanie w 90 krajach, z czego 76% ataków wymierzonych w USA.
  • Wzorzec URL: stały path z /quantum.php oraz charakterystyczne nazewnictwo hostów na zaparkowanych lub skompromitowanych domenach.
  • Omijanie zabezpieczeń: rozróżnianie botów vs. ludzi, przekierowania „czyszczące” dla Secure Email Gateway/ICES, WAF i skanerów URL.
  • Cel: kradzież poświadczeń Microsoft 365 (O365/M365) i przejęcia kont.
  • Trend: rosnąca „platformizacja” phishingu – podobnie do VoidProxy, Darcula, Tycoon2FA.

Kontekst / historia / powiązania

2024–2025 to wyraźna profesjonalizacja PhaaS. Przykładowo:

  • Tycoon2FA upowszechnił AiTM/MFA-bypass poprzez reverse proxy i relaying sesji.
  • Darcula rozwinęła globalną sieć dziesiątek tysięcy domen, celując m.in. w kanały RCS/iMessage i usługi pocztowe na całym świecie.
  • VoidProxy celuje w M365 i Google, również integrując anti-bot oraz obsługę SSO/IdP.

W tym samym czasie dostawcy i organy ścigania dezintegrują wielkie usługi PhaaS – np. RaccoonO365 (przejęto setki domen i kont Cloudflare Workers). To pokazuje, że rynek PhaaS jest dynamiczny: nowi gracze (jak QRR) szybko wypełniają lukę po rozbitych ekosystemach.


Analiza techniczna / szczegóły luki

Łańcuch ataku (TTP)

  1. E-mail phishing z tematami wysokiej konwersji (DocuSign, HR/payroll, płatności, „missed voicemail”, quishing).
  2. Kliknięcie/zeskanowanie prowadzi do centralnego routera QRR.
  3. Korelacja i fingerprinting (m.in. nagłówki, User-Agent, IP/ASN, heurystyki VPN/proxy, timing, headless/browser API).
  4. Rozgałęzienie:
    • Boty/skanery/WAF/SEG/ICESstrony bezpieczne/legit (np. portal firmy), by „udowodnić” nieszkodliwość.
    • Użytkownicylanding phishingowy (M365) z formularzem credential harvesting.
  5. Zbieranie metryk i statystyk w panelu QRR (impressions, wizyty „human” vs. „bot”, geolokacja, przeglądarka/OS).

Wzorce infrastruktury

  • Stały path: obserwowany /quantum.php w ścieżce URL.
  • Hosty: często zaparkowane lub skompromitowane domeny, zwykle z co najmniej dwoma poziomami subdomen. Przykładowy wzorzec (simplified): https://<sub1>.<sub2>.<tld>/<...>/quantum.php?<params> (pełny regex z raportu KnowBe4 obejmuje klastry znaków i krótki TLD).

Dlaczego to działa?

  • Wiele rozwiązań bada URL „at delivery time” – QRR wykorzystuje post-delivery weaponization i dynamiczne redirecty, aby „oczyszczać” link dla silników analitycznych, a ofiary kierować na właściwy cel „time-of-click”.

Praktyczne konsekwencje / ryzyko

  • ATO (Account Takeover) w M365 → dostęp do Exchange/SharePoint/OneDrive, eskalacja do BEC, exfiltracja danych, nadużycia OAuth.
  • Trudniejsza detekcja na warstwie bramki e-mail: pozornie „czyste” linki przy dostarczeniu, realnie szkodliwe przy kliknięciu.
  • Ryzyko reputacyjne i prawne: wycieki PII/PHI, RODO, opóźnienia w procesach (np. HR/finanse).
  • Rosnąca „demokratyzacja” ataku – mniej techniczne grupy osiągają enterprise-grade skuteczność dzięki PhaaS.

Rekomendacje operacyjne / co zrobić teraz

1) Prewencja i twarde policy

  • M365/Defender for Office 365
    • Safe Links z time-of-click i blokowaniem przekierowań.
    • Zasady Anti-Phishing (impersonation prot., mailbox intelligence).
    • MFA odporne na phishing (FIDO2/Windows Hello, Passkeys; unikać OTP/SMS).
  • SEG/ICES/WAF/DNS
    • Włącz analizę łańcucha przekierowań i headless browsing w sandboxie.
    • URL detonation także po dostarczeniu (re-crawl).
    • DNS filtering + bloki na zaparkowane/świeże domeny (kryteria wieku/AS, parking-ASN).
  • Awareness
    • Szkolenia z quishing (skanery QR w telefonach służbowych → open in isolated browser).

Szybkie reguły detekcji (przykłady)

Suricata (HTTP) – wykryj charakterystyczną ścieżkę:

alert http any any -> any any (
  msg:"QRR candidate - quantum.php in path";
  http.uri; content:"/quantum.php"; nocase;
  classtype:trojan-activity; sid:24000101; rev:1;
)

Suricata (PCRE: co najmniej 2 subdomeny + quantum.php)

Uwaga: prosty, heurystyczny przykład (ogranicz nadużycia false positive lokalną listą wyjątków).

alert http any any -> any any (
  msg:"QRR candidate - multi-subdomain + quantum.php";
  http.host; pcre:"/^[^.]+\.[^.]+\.[a-z]{2,}$/Ri";
  http.uri; content:"/quantum.php"; nocase;
  classtype:trojan-activity; sid:24000102; rev:1;
)

Exchange Online PowerShell – blokuj wiadomości zawierające quantum.php w linku (Body/Headers):

Connect-ExchangeOnline

New-TransportRule -Name "Block QRR links" `
  -Priority 0 `
  -Mode Enforce `
  -Comments "Heurystyczna blokada QRR" `
  -MessageContainsWords "quantum.php" `
  -SetSCL 9 `
  -RejectMessageReasonText "Blocked: suspected QRR link"

(Rozważ zamianę na Set-Header X-Quarantine:QRR i bezpieczną kwarantannę, jeśli FP są możliwe.)

Microsoft Defender for Endpoint – prosty wskaźnik domeny/path w Custom Indicators:

  • Indicators → URLs/Domains → Add indicator*/quantum.php* → Action: Block → Scope: All devices → Expiry: 30–60 dni (z przeglądem co tydzień).

Zasada proxy/secure web gateway (np. PAC/SWG) – miękka blokada + coaching:

// fragment PAC
if (shExpMatch(url, "*/quantum.php*")) return "PROXY block.example:8080"; // lub direct: return "REJECT";

Threat hunting (KQL, M365/Defender)

Kliknięcia w podejrzane linki:

EmailUrlInfo
| where Url has "/quantum.php"
| summarize clicks=dcount(ClickRecordId), recipients=dcount(RecipientEmailAddress) by Url, bin(Timestamp, 1d)

Nietypowe logowania po kliknięciu:

let suspectUsers = 
    EmailUrlInfo
    | where Url has "/quantum.php"
    | distinct RecipientEmailAddress;
IdentityLogonEvents
| where AccountUpn in (suspectUsers)
| where Application == "Office 365"
| summarize by AccountUpn, IPAddress, AuthenticationRequirement, ResultType, bin(Timestamp, 1h)

IR playbook (skrót)

  1. Containment: reset haseł + zrywanie sesji (Invalidate Refresh Tokens), wymuszenie re-enrollment MFA FIDO/Passkeys.
  2. Scope: sprawdź OAuth consents, skrzynkę (rules/inbox forwarding), Access Review.
  3. Forensics: timeline z Unified Audit Log, exfil (SharePoint/OneDrive access logs).
  4. Notifications: RODO/klienci, TLP:AMBER do partnerów, CERT krajowy.
  5. Hardening: conditional access, step-up auth, geo-fencing, mailbox protections.

Różnice / porównania z innymi przypadkami

  • QRR vs. Tycoon2FA: Tycoon2FA słynie z AiTM/MFA-bypass (kradzież cookies/sesji). QRR koncentruje się na inteligentnym routingu i maskowaniu przed kontrolami bezpieczeństwa; nie wyklucza to jednak integracji z AiTM w kolejnych iteracjach.
  • QRR vs. Darcula: Darcula skaluje się przez ogrom ekosystemu domen i szablonów (także RCS/iMessage). QRR skaluje się przez centralny router + pre-baked domeny i profiling, aby „wybielić” link dla botów.
  • QRR vs. VoidProxy: oba celują w M365; VoidProxy akcentuje wszechstronny target (także Google/SSO) i mechanizmy anti-bot. QRR wyróżnia powtarzalny wzorzec URL i masowe wykorzystanie zaparkowanych/skompromitowanych domen.

Podsumowanie / kluczowe wnioski

  • QRR to kolejny krok w „produktowej” ewolucji PhaaS: łatwość użycia dla przestępców, trudniejsze życie dla bramek i skanerów.
  • Najszybsze wygrane dla Blue Teamu: time-of-click, detonacja redirectów, reguły na /quantum.php, DNS/WAF heurystyki oraz szkolenia z quishingu.
  • Traktuj pojedyncze IOC (np. path) jako heurystykę, nie „srebrną kulę” – utrzymuj ciągły re-crawl i threat intel sync.
  • Zakładaj, że QRR (i kolejne klony) będą aktywnie ewoluować – w tym w kierunku AiTM/MFA-bypass.

Źródła / bibliografia

  • BleepingComputer: Quantum Route Redirect PhaaS targets Microsoft 365 users worldwide (10 listopada 2025). (BleepingComputer)
  • KnowBe4 Threat Lab: Quantum Route Redirect: Anonymous Tool Streamlining Global Phishing Attack (10 listopada 2025). (blog.knowbe4.com)
  • BleepingComputer: New VoidProxy phishing service targets Microsoft 365, Google accounts (14 września 2025). (BleepingComputer)
  • Proofpoint: Tycoon 2FA: Phishing Kit Being Used to Bypass MFA (9 maja 2024). (Proofpoint)
  • Netcraft: ‘Darcula’ Phishing-as-a-Service… (27 marca 2024). (netcraft.com)

CVE‑2014‑6271 — “Shellshock”

TL;DR

Shellshock (CVE‑2014‑6271) to krytyczna podatność RCE w GNU Bash (do 4.3 włącznie), która pozwala na wykonanie komend podczas parsowania zmiennych środowiskowych zawierających definicje funkcji. W praktyce była nadużywana głównie przez wektory HTTP/CGI (np. mod_cgi), ale także przez OpenSSH ForceCommand, klientów DHCP i inne komponenty, w których Bash jest odpalany po przekazaniu środowiska. Z perspektywy ATT&CK najlepiej mapuje się na T1190 (Initial Access), a dalsze uruchamianie komend — na T1059.004 (Unix Shell).


Krótka definicja techniczna

CVE‑2014‑6271 wynika z błędu w sposobie, w jaki Bash importuje funkcje ze środowiska: trailing‑string po definicji funkcji może zostać zinterpretowany jako komenda i wykonany w nowym procesie powłoki. Jeśli napastnik kontroluje wartości nagłówków/parametrów (np. przez CGI), osiąga zdalne wykonanie kodu (RCE) bez uwierzytelnienia.


Gdzie występuje / przykładowe platformy

  • Linux/UNIX (w tym macOS): serwery WWW z CGI (mod_cgi, mod_cgid), skrypty powłoki, usługi systemowe.
  • OpenSSH (ForceCommand): możliwość wstrzyknięcia przez SSH_ORIGINAL_COMMAND przy logowaniu do powłoki Bash.
  • Klienci DHCP (np. dhclient): złośliwe opcje DHCP jako nośnik.
  • Aplikacje/appliance’y sieciowe i środowiska kontenerowe: skrypty entrypoint, obrazy z podatnym Bashem; jeśli endpoint jest publiczny → T1190.
  • ESXi/appliance’y: niektóre systemy oparte o BusyBox/Bash (rzadziej), ale T1190 obejmuje też urządzenia brzegowe.
  • Chmury (AWS/Azure/GCP): po RCE na serwerze/pojemniku często obserwuje się dostęp do IMDS (169.254.169.254) w celu kradzieży poświadczeń — dalsze fazy.
  • AD/M365: brak typowych wektorów dla Shellshock — wpływ pośredni po uzyskaniu przyczółka na hostach Linux.

Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)

Bash umożliwia „eksport” funkcji przez zmienne środowiskowe. W podatnych wersjach parser Basha wykonywał łańcuchy znaków następujące po definicji funkcji, co otwierało drogę do RCE, jeśli napastnik mógł wstrzyknąć zawartość środowiska (np. przez nagłówki HTTP obsługiwane przez CGI). Pierwsza łatka okazała się niepełna (CVE‑2014‑7169), co dodatkowo zwiększyło okno ryzyka. Skuteczność ataku wynikała z: (1) powszechności Basha, (2) prostoty ładunku, (3) wielu wektorów przekazania środowiska przez granicę zaufania (HTTP, SSH, DHCP). W efekcie w ciągu godzin od ujawnienia obserwowano zautomatyzowane skanowanie i budowanie botnetów DDoS.


Artefakty i logi

WarstwaŹródłoPole / EIDWskaźnik / wzorzecNotatki
Aplikacja WWWApache/nginx access/errorUser-Agent, Referer, URI, statusWzorzec funkcji Basha w nagłówkach/parametrach (np. sekwencja funkcja+trailing)Często wzrost 4xx/5xx przed właściwym RCE
System (Linux)auditdtype=EXECVERodzic: httpd/apache2/nginx/cgi-fcgi → dziecko: /bin/bash -c …Łańcuch procesów po RCE
System (Linux)syslog/journaldkomunikaty serwisu WWW/CGINagłe spawny powłoki, błędy CGIKoreluj z access logami
EDR/telemetriaProcesy/siećbash uruchomiony przez konto serwisu WWW + wyjścia do InternetuW tym wywołania narzędzi typu curl/wget
Chmura AWSCloudTrailuserAgent, sourceIPAddress, eventNamePo RCE — nagłe API (np. ListBuckets, GetCallerIdentity, AssumeRole) z roli instancji / nietypowe UACzęsto po próbie dostępu do 169.254.169.254 (IMDS) z hosta ofiary.
K8sAudit logverb, objectRef, userAgentNiespodziewane create pods/exec/attach z SA serwisu WWW; enumeracja secretsEfekt wtórny po RCE w podzie
M365Unified Audit Log[brak bezpośredniego wektora]Koreluj tylko, gdy atak przechodzi w chmurę SaaS

Detekcja (praktyczne reguły)

Sigma (HTTP/CGI — próby Shellshock)

title: Possible Shellshock Attempt in HTTP Headers
id: 6b7e2d8d-2a0e-4b6b-9c5f-3d7a5f2d1b01
status: experimental
description: Wykrywa klasyczne wzorce importu funkcji Bash w nagłówkach/URI (np. wzorzec funkcja + trailing), charakterystyczne dla Shellshock.
author: Badacz CVE
date: 2025/11/08
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2014-6271
tags:
  - attack.T1190
  - cve.2014-6271
logsource:
  category: webserver
detection:
  sel_any_header:
    c-uri|contains:
      - "(){"
      - "%28%29%7B"    # URL‑encoded
    cs-user-agent|contains:
      - "(){"
      - "%28%29%7B"
    cs-referer|contains:
      - "(){"
      - "%28%29%7B"
  condition: sel_any_header
fields:
  - src_ip
  - http.request_referrer
  - http.user_agent
  - url
  - status
falsepositives:
  - Skany bezpieczeństwa/WAF test strings
level: high

Splunk (web access → wzorzec + łańcuch procesów)

(index=web OR index=proxy) (sourcetype=apache:* OR sourcetype=nginx:* OR sourcetype=haproxy*)
| eval raw=coalesce(cs_User_Agent," ") . " " . coalesce(cs_Referer," ") . " " . coalesce(uri," ") . " " . coalesce(query," ")
| where match(raw, "\\(\\)\\s*\\{\\s*:\\s*;\\s*\\}")
| stats count earliest(_time) as first latest(_time) as last by src_ip, cs_User_Agent, uri, status

Korelacja (Splunk) — procesy na hoście Linux (jeśli zbierasz dzienniki systemowe/EDR):

index=os_linux (sourcetype=auditd OR sourcetype=sysmon_linux OR sourcetype=edr*)
| where (parent_process IN ("httpd","apache2","nginx","lighttpd","cgi-fcgi") AND process IN ("bash","sh") )
| stats values(process_cmdline) as cmd by host, parent_process, user, process

KQL (Defender for Endpoint / Azure)

// RCE → bash uruchomiony przez proces WWW
DeviceProcessEvents
| where OSPlatform in ("Linux","macOS")
| where InitiatingProcessFileName in~ ("httpd","apache2","nginx","lighttpd","cgi-fcgi")
| where FileName in~ ("bash","sh")
| extend suspicious = iif(ProcessCommandLine has_any ("() {","%28%29%7B"), 1, 0)
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, suspicious

CloudTrail (CloudWatch Logs Insights) – post‑exploitation z roli instancji

fields @timestamp, eventSource, eventName, userAgent, sourceIPAddress, awsRegion
| filter eventCategory="Management"
| filter userAgent like /aws-cli|Boto|Go-http-client|curl|wget|python-requests/i
| filter eventName in ("GetCallerIdentity","AssumeRole","ListBuckets","GetObject","DescribeInstances","ListAccessKeys")
| sort @timestamp desc
| limit 200

Uzasadnienie: po RCE atakujący często odczytuje IMDS 169.254.169.254 i zaczyna wykonywać API przy użyciu roli instancji. Monitorowanie userAgent i nietypowej sekwencji API pomaga to wyłapać.

Elastic EQL (host Linux — łańcuch WWW → powłoka)

process where host.os.type == "linux" and
  process.name in ("bash","sh") and
  process.parent.name in ("httpd","apache2","nginx","lighttpd","cgi-fcgi")

Heurystyki / korelacje (co łączyć)

  1. Anomalia HTTP → 4xx/5xx/niestandardowe metody/URI → spawn powłoki przez proces WWW → wyjście sieciowe lub IMDS 169.254.169.254aktywność API w CloudTrail.
  2. Jednorodny UA/źródła IP atakujące wiele hostów + identyczne wzorce nagłówków = kampania skanowania.
  3. Po RCE: zapis webshella (T1505.003) lub pobranie binarek (T1105) — koreluj z tworzeniem nietypowych plików w katalogach serwisu WWW.

False positives / tuning

  • Skany bezpieczeństwa/WAF test strings — przepuść przez allow‑listy znanych skanerów i Twoich narzędzi QA.
  • Zaszyfrowane/URL‑encoded warianty — rozszerz regex (np. %28%29%7B).
  • Reverse proxy — upewnij się, że widoczny jest oryginalny UA i IP (X‑Forwarded‑For).
  • Systemy bez CGI — same ślady w logach HTTP ≠ RCE: szukaj łańcucha procesów (rodzic WWW → bash).

Playbook reagowania (IR)

  1. Blokada na brzegu: reguły WAF/IPS dla wzorca funkcji Basha; tymczasowe ograniczenie dozwolonych metod/ścieżek.
  2. Izolacja hosta (serwer/Pod) + snapshot dysku/pamięci.
  3. Triage artefaktów: access/error logs, auditd, łańcuch procesów, nowe pliki w docroot, klucze/sekrety.
  4. Weryfikacja IMDS/poświadczeń: sprawdź ruch do 169.254.169.254 i następujące wpisy w CloudTrail; rotacja kluczy/rol.
  5. Patching Bash do wersji załatanej (dystrybucyjny update), weryfikacja wyłączenia/ograniczenia CGI.
  6. Hunting w SIEM: zapytania z sekcji 7 na całą flotę.
  7. Hardening: wymuś IMDSv2, segmentację DMZ, least‑privilege dla kont serwisów.

Przykłady z kampanii / case studies

  • Szybka weaponizacja (2014): w ciągu doby od ujawnienia powstały botnety DDoS; liczne ataki obserwowali m.in. Kaspersky i media branżowe.
  • Raporty vendorów/CSIRT: Cisco Talos dokumentował masowe próby eksploatacji w sieci; Akamai opisywał rekrutację hostów do botnetów.

Lab — przykładowe kroki

Cel: przetestować detekcje bez wykonywania exploita. Wykorzystujemy syntetyczne dane i odizolowane środowisko testowe.

  1. Symulacja logów HTTP: wygeneruj sztuczne wpisy access.log zawierające charakterystyczny wzorzec funkcji Basha w formie zanonimizowanej (bez komend), np. () { :; }; <marker>; wgraj plik do SIEM i uruchom reguły z pkt 7.
  2. Symulacja łańcucha procesów: w kontenerze testowym uruchom skrypt, który (lokalnie) tworzy proces bash jako dziecko procesu o nazwie „httpd” (np. wrapper), tak aby telemetria EDR/auditd wygenerowała ślad parent=apache2 -> bashbez wykonywania zewnętrznych komend.
  3. Symulacja post‑exploitation w chmurze: używając konta testowego z rolą instancji, wykonaj bezpieczne GetCallerIdentity i ListBuckets, aby sprawdzić reguły CloudTrail (CloudWatch Logs Insights) — wyłącznie w środowisku testowym.

Uwaga: celem jest walidacja detekcji i playbooków IR zgodnie z zasadami bezpieczeństwa.


Mapowania (Mitigations, powiązane techniki)

Mitigacje ATT&CK:

  • M1051 – Update Software: szybkie łatanie Basha/aplikacji publicznych.
  • M1031 – Network Intrusion Prevention: sygnatury na brzegach/WAF/IPS dla typowych wzorców Shellshock.
  • M1030 – Network Segmentation: separacja DMZ i serwerów publicznych.
  • M1040 – Behavior Prevention on Endpoint: blokowanie podejrzanych łańcuchów procesów (WWW→bash).
  • M1016 – Vulnerability Scanning: regularne skany z szybkim SLA na krytyczne ujawnienia.

Powiązane techniki:

  • T1059.004 – Unix Shell (wykonanie komend po RCE).
  • T1505.003 – Web Shell (utrwalenie po pierwszym włamaniu).
  • T1105 – Ingress Tool Transfer (dociągnięcie narzędzi po uzyskaniu RCE).
  • T1190 – Exploit Public‑Facing Application (wektor wejścia).

Źródła / dalsza literatura

  • NVD: opis, CVSS 9.8/10.0 i wektory (Apache CGI, ForceCommand, DHCP). (NVD)
  • CVE.org: rekord CVE‑2014‑6271. (CVE)
  • Red Hat: strona podatności Shellshock (jak działa, zalecenia). (Red Hat Customer Portal)
  • CERT/CC VU#252743: nota o wykonaniu komend przez eksport funkcji. (kb.cert.org)
  • CISA/US‑CERT: alerty o rodzinie błędów Bash (CVE‑2014‑7169 i pokrewne). (CISA)
  • MITRE ATT&CK: T1190 (Initial Access) i T1059.004 (Unix Shell). (MITRE ATT&CK)
  • Przykłady „in‑the‑wild”: Wired (botnety), Cisco Talos, Akamai. (WIRED)
  • IMDS (AWS/Azure): dokumentacja i wskazówki detekcyjne. (AWS Documentation)

Checklisty dla SOC / CISO

SOC (operacyjne):

  • WAF/IPS: aktywne sygnatury na wzorce Shellshock (w tym URL‑encoded).
  • Reguły SIEM: HTTP wzorce + łańcuch WWW → bash + próby IMDS + CloudTrail sekwencje z roli instancji.
  • Hunting: poszukaj procesów bash z rodzicem httpd/apache2/nginx w całej flocie.
  • Telemetria: włącz auditd/EDR na hostach Linux oraz pełne access/error logs.
  • Kwarantanna + rotacja kluczy po wykryciu nadużyć API.

CISO (strategiczne):

  • Polityka patch management dla komponentów publicznych (SLA dla krytycznych CVE).
  • Segmentacja DMZ i minimalne uprawnienia kont serwisowych.
  • IMDSv2 tylko + kontrola egress do 169.254.169.254 z usług WWW.
  • Testy podatności i testy regresji detekcji (syntetyczne dane, bez exploitów).
  • Przeglądy architektury: unikać CGI/Bash w ścieżkach request‑handling.

CVE-2014-4114 — Windows OLE RCE „Sandworm”

TL;DR

CVE‑2014‑4114 to podatność w Windows OLE wykorzystywana m.in. przez Sandworm do zdalnego uruchamiania kodu po otwarciu spreparowanego pliku Office (najczęściej PPSX/PowerPoint). Sztuczka polega na pobraniu zdalnego .INF i wykonaniu go przez rundll32 -> setupapi.dll,InstallHinfSection lub advpack.dll,LaunchINFSection, co inicjuje uruchomienie docelowego droppera. Detekcja: łańcuch POWERPNT.EXE → rundll32.exe z argumentami InstallHinfSection/LaunchINFSection, pobrania po SMB/WebDAV, ślady w setupapi.app.log. Łatanie: MS14‑060 (KB3000869); tymczasowe obejścia: wyłączenie WebClient, blokada TCP 139/445, usunięcie „Install” verb dla .INF.


Krótka definicja techniczna

CVE‑2014‑4114 to błąd w obsłudze obiektów OLE w Windows pozwalający na zdalne wykonanie kodu po otwarciu pliku Office zawierającego specjalnie przygotowany obiekt OLE odwołujący się do zasobu INF/EXE w nieufnej lokalizacji (UNC/WebDAV). Otwarcie dokumentu inicjuje pobranie i wykonanie instrukcji z INF bez dodatkowych promptów, prowadząc do uruchomienia droppera w kontekście bieżącego użytkownika.


Gdzie występuje / przykłady platform

  • Windows: Vista SP2, 7 SP1, 8/8.1; Server 2008/2008 R2/2012/2012 R2; także RT (wg MS14‑060/NVD).
  • Active Directory: stacje członkowskie domeny (otwieranie załączników w środowisku korporacyjnym).
  • M365: poczta (spearphishing attachment), logi Defender for Office/Endpoint.
  • Chmury (AWS/Azure/GCP): dotyczy Windows VM/VDI/WorkSpaces – podatna jest gościnna warstwa OS, nie IaaS; telemetria może trafiać do CloudWatch/Log Analytics/SIEM.
  • Kubernetes/ESXi: brak bezpośredniego wpływu na control plane; dotyczy gości Windows w VM.

Szczegółowy opis techniki (jak działa, cele, skuteczność)

Kampanie z 2014 r. wykorzystywały PPSX z dwoma osadzonymi obiektami OLE o ścieżkach zdalnych: np. slide1.gif (faktycznie EXE) i slides.inf. PowerPoint pobierał oba pliki z udziału UNC/WebDAV bez ostrzeżeń; .INF zmieniał nazwę pliku na .exe i go uruchamiał (dropper BlackEnergy). Mechanizm aktywacji bazował na wywołaniu rundll32.exe z setupapi.dll,InstallHinfSection lub advpack.dll,LaunchINFSection. Skuteczność: wysoki poziom soc‑eng (pliki show), minimalna interakcja, obejście promptów UAC dla .PPSX odnotowane przez Microsoft.


Artefakty i logi (co zbierać)

ŹródłoID / poleWskaźnik / wzorzecUwagi
Windows Security4688 (Process Creation)ParentImage=*\POWERPNT.EXEImage=*\\rundll32.exe z CommandLine zawierającą setupapi.dll,InstallHinfSection lub advpack.dll,LaunchINFSectionKluczowy łańcuch egzekucji.
Sysmon1/ProcCreate, 3/NetConnect, 11/FileCreate, 22/DNSPołączenia do \\host\share\... / WebDAV (Microsoft-WebDAV-MiniRedir), tworzenie *.inf/*.gif.exe w %TEMP%Wzorce WebDAV/SMB.
SetupAPI log%windir%\inf\setupapi.app.logWpisy z instalacji aplikacyjnej/INF (po włączeniu logowania)Domyślnie wyłączone; można włączyć przez LogLevel.
M365 Defender (AH)EmailEvents / EmailAttachmentInfoZałącznik PPS/PPSX od nadawcy zewn., motyw soc‑engDla fazy dostarczenia.
MDE/Defender AVWykrycie: Exploit:Win32/CVE-2014-4114Alerty/exclusionsHistoryczne sygnatury.
Firewall/ProxyHTTP/WebDAV, SMB (139/445)Pobranie slides.inf / *.gif z zewnętrznych hostówBlokady portów ograniczają wektor.

Detekcja (praktyczne reguły)

Sigma (Windows / process_creation)

title: Office -> Rundll32 INF Execution (CVE-2014-4114 Sandworm)
id: 7c9f9d4a-b0c6-4f7f-9e5b-b2c3d1e0c414
status: experimental
logsource:
  product: windows
  category: process_creation
detection:
  parent_office:
    ParentImage|endswith:
      - \POWERPNT.EXE
      - \WINWORD.EXE
      - \EXCEL.EXE
  child_rundll:
    Image|endswith: \rundll32.exe
  cli_inf:
    CommandLine|contains:
      - 'setupapi.dll,InstallHinfSection'
      - 'advpack.dll,LaunchINFSection'
  condition: parent_office and child_rundll and cli_inf
fields:
  - UtcTime
  - User
  - ParentImage
  - Image
  - CommandLine
falsepositives:
  - Rzadkie instalacje driverów/INF wywołane z Office (bardzo mało prawdopodobne)
level: high
tags:
  - attack.T1203
  - attack.T1204.002
  - attack.T1566.001
  - cve.2014-4114

Splunk (Security 4688 / Sysmon 1)

(index=win* (sourcetype="WinEventLog:Security" EventCode=4688) OR (sourcetype="XmlWinEventLog:Microsoft-Windows-Sysmon/Operational" EventCode=1))
| eval parent=coalesce(ParentProcessName, ParentImage), img=coalesce(NewProcessName, Image)
| search parent="*\\POWERPNT.EXE" OR parent="*\\WINWORD.EXE" OR parent="*\\EXCEL.EXE"
| search img="*\\rundll32.exe"
| search CommandLine="*setupapi.dll,InstallHinfSection*" OR CommandLine="*advpack.dll,LaunchINFSection*"
| table _time host user parent img CommandLine
| sort - _time

KQL (Microsoft 365 Defender – Advanced Hunting)

DeviceProcessEvents
| where InitiatingProcessFileName in~ ("POWERPNT.EXE","WINWORD.EXE","EXCEL.EXE")
| where FileName =~ "rundll32.exe"
| where ProcessCommandLine has_any ("setupapi.dll,InstallHinfSection","advpack.dll,LaunchINFSection")
| project Timestamp, DeviceName, InitiatingProcessFileName, FileName, ProcessCommandLine, InitiatingProcessVersionInfoCompanyName
| order by Timestamp desc

AWS CloudWatch Logs Insights (Windows Event Forwarding do CWL)

fields @timestamp, Computer, EventID, @message
| filter EventID=4688
| filter like(@message, /rundll32\.exe/) 
  and (like(@message, /setupapi\.dll,InstallHinfSection/) or like(@message, /advpack\.dll,LaunchINFSection/))
| sort @timestamp desc

Elastic (EQL)

sequence by host.id with maxspan=2m
  [process where process.name : ("POWERPNT.EXE","WINWORD.EXE","EXCEL.EXE")]
  [process where process.name : "rundll32.exe" and
           process.command_line : ("*setupapi.dll,InstallHinfSection*","*advpack.dll,LaunchINFSection*")]

Heurystyki / korelacje

  • Łańcuch procesu: Office (POWERPNT/WINWORD) → rundll32.exe → (ew. dalsze) cmd.exe/msiexec.exe/regsvr32.exe.
  • Sieć: pobrania z UNC/WebDAV (user‑agent Microsoft-WebDAV-MiniRedir) w bliskim czasie od otwarcia dokumentu.
  • Pliki tymczasowe: *.inf / pseudo‑obraz *.gif → późniejszy *.exe w %TEMP%.
  • Logi SetupAPI: ślady w setupapi.app.log (po włączeniu).
  • Poczta: korelacja EmailEvents z kliknięciem/otwarciem załącznika i telemetrią endpoint.

False positives / tuning

  • Instalacje sterowników/oprogramowania wyzwalające InstallHinfSection/LaunchINFSection, ale zwykle nie z rodzicem Office.
  • Drivery producentów (podpisane, ścieżki C:\Windows\INF\*): wykluczyć po wydawcy, ścieżce, hashu.
  • Tuning: wymagaj rodzica Office, zdalnej ścieżki (UNC/WebDAV), nietypowych INF w %TEMP%, braku podpisu lub nietypowych domen.

Playbook reagowania (IR)

  1. Triaging & Containment: izoluj host; zablokuj domenę/UNC/WebDAV wskazany w artefaktach (FW/DNS/Proxy).
  2. Hunting szeroki (24–72 h): zapytania z sekcji 7 (AH/SIEM). Zidentyfikuj wszystkie hosty z łańcuchem Office→rundll32/INF.
  3. Forensics szybkie:
    • Zabezpiecz pliki z %TEMP% i %WINDIR%\INF\setupapi.app.log.
    • Zrzut listy procesów/połączeń (tasklist /v, netstat -ano), timeline plików.
  4. Eradykacja: usuń droppery, zabroń WebDAV/SMB egress do Internetu; wdroż KB3000869 jeśli dotyczy dziedzictwa.
  5. Recovery: weryfikacja integralności, rotacja poświadczeń, obserwacja anomalii.
  6. Lessons Learned: reguły detekcyjne do stałego monitoringu; wymuś blokady z pkt 11 (workarounds).

Przykłady z kampanii / case studies

  • BlackEnergy/Sandworm (2014): PPSX zawierał dwa obiekty OLE (zdalne): slide1.gif (dropper, faktycznie EXE) i slides.inf. INF zmieniał nazwę i uruchamiał droppera — bez dodatkowych promptów PowerPoint.
  • Sandworm Team (G0034): wykorzystywał CVE‑2014‑4114 w PowerPoint (OLE) oraz CVE‑2013‑3906 (TIFF/Word). Cele: NATO, UE, sektor energii/telekom.

Lab (bezpieczne testy)

Celem jest generacja artefaktów/detekcji, nie eksploatacja.

A. Symulacja INF (ADVPACK) – bezpieczne uruchomienie Notepad

  1. Zapisz plik test.inf (np. C:\Temp\test.inf):
[Version]
Signature="$Windows NT$"

[DefaultInstall]
RunPreSetupCommands=DoRun

[DoRun]
%11%\\notepad.exe
  1. Uruchom:
rundll32.exe advpack.dll,LaunchINFSection C:\Temp\test.inf,DefaultInstall

Powinno wygenerować proces rundll32.exe z LaunchINFSection (detekcje z sekcji 7).

B. Artefakty SetupAPI
Włącz logowanie SetupAPI (na czas testu), następnie uruchom test z pkt A i sprawdź %windir%\inf\setupapi.app.log.


Mapowania (Mitigations, powiązane techniki)

Mitigations (ATT&CK):

  • M1051 – Update Software: zastosuj MS14‑060/KB3000869 na hostach dziedzicznych.
  • M1037 – Filter Network Traffic / M1035 – Limit Access to Resource Over Network: blokuj SMB 139/445 egress, ogranicz WebDAV (usługa WebClient).
  • M1042 – Disable or Remove Feature or Program: usuń „Install” verb dla .INF (tymczasowe obejście).
  • M1017 – User Training: phishing awareness (załączniki PPSX).

Powiązane techniki ATT&CK:

  • T1566.001 – Spearphishing Attachment (wektor wejścia)
  • T1204.002 – User Execution: Malicious File (akcja użytkownika)
  • T1105 – Ingress Tool Transfer (transfer droppera)
  • T1027 – Obfuscated/Compressed Files (kamuflaż plików, np. „gif.exe”)

Źródła / dalsza literatura

  • Microsoft: MS14‑060 – Vulnerability in Windows OLE (KB3000869), obejścia (WebClient/SMB/INF) i lista systemów. (Microsoft Learn)
  • ESET (WeLiveSecurity): szczegóły kampanii PPSX + slides.inf + slide1.gif (BlackEnergy). (We Live Security)
  • MITRE ATT&CK: T1203 – Exploitation for Client Execution, w tym odniesienie do CVE‑2014‑4114/Sandworm. (MITRE ATT&CK)
  • MITRE ATT&CK – Sandworm Team (G0034). (MITRE ATT&CK)
  • NVD: wpis CVE‑2014‑4114 (zakres i opis). (NVD)
  • Microsoft Docs: InstallHinfSection (SetupAPI) i log setupapi.app.log. (Microsoft Learn)
  • IE/ADVPACK: LaunchINFSection (przykłady użycia). (Microsoft Learn)
  • Palo Alto Unit42: kontekst OLE/PowerPoint i ryzyko zdalnych zasobów. (Unit 42)

Uwaga dot. łat: tuż po MS14‑060 zgłaszano obejścia prowadzące do kolejnych CVE; w środowiskach legacy sprawdź też późniejsze uaktualnienia.


Checklisty dla SOC / CISO

SOC (operacyjne):

  • Włącz/zweryfikuj reguły: Office→rundll32 InstallHinfSection/LaunchINFSection.
  • Monitoruj WebDAV/SMB egress oraz setupapi.app.log.
  • Koreluj EmailEvents ↔ DeviceProcessEvents (M365).
  • Hunt retro (90 dni) za łańcuchem POWERPNT/WINWORD → rundll32.
  • Utrzymuj allow‑list INF/sterowników; alertuj INF z %TEMP%.

CISO (strategiczne):

  • Polityka: blokady SMB i WebDAV na brzegu/na hostach.
  • Wymuszenie łat (M1051) na hostach z Windows 7/8/8.1/2008/2012.
  • Program szkoleniowy phishing + polityki załączników (PPSX).
  • Testy tabletop IR dla scenariusza „złośliwy INF/Office”.

CVE-2014-0160 — „Heartbleed” (OpenSSL TLS/DTLS Heartbeat memory disclosure)

TL;DR

Heartbleed to krytyczna luka w OpenSSL 1.0.1–1.0.1f (oraz 1.0.2‑beta/beta1), w implementacji rozszerzenia TLS/DTLS Heartbeat (RFC 6520). Błędny brak kontroli długości powoduje odczyt do 64 KB pamięci procesu na żądanie, co umożliwia wyciek kluczy prywatnych, haseł, tokenów i ciasteczek sesyjnych — bez śladów w standardowych logach. Naprawa: OpenSSL 1.0.1g lub kompilacja z -DOPENSSL_NO_HEARTBEATS, plus rotacja kluczy/certyfikatów i reset sesji/haseł. CVSS v3.1: 7.5 (HIGH).


Krótka definicja techniczna

CVE‑2014‑0160 to buffer over-read w funkcjach przetwarzających komunikaty Heartbeat w OpenSSL (TLS i DTLS). Złośliwy pakiet żąda odesłania większej liczby bajtów niż faktyczny payload, co skutkuje ujawnieniem fragmentu pamięci procesu serwera/klienta. Błąd dotyczy OpenSSL 1.0.1 (do 1.0.1f włącznie) i został naprawiony w 1.0.1g (07.04.2014).


Gdzie występuje / przykłady platform

  • Linux/Unix: usługi HTTPS (Apache/Nginx), proxy, poczta (IMAPS/POP3S/SMTPS), VPN (np. OpenVPN), serwery aplikacyjne — jeśli linkują do OpenSSL 1.0.1*. Przykładowe dystrybucje z podatnymi pakietami: Debian Wheezy, Ubuntu 12.04.4, CentOS 6.5, FreeBSD 10.0 itd.
  • Urządzenia/IoT/appliance: część routerów/telefonów VoIP/przełączników używających OpenSSL 1.0.1* (stan historyczny).
  • Windows/AD: IIS/Schannel nie były podatne; ryzyko dotyczy aplikacji na Windows, które samodzielnie używały podatnego OpenSSL.
  • Chmury: własne instancje/obrazy z OpenSSL 1.0.1*, komponenty kontenerowe; w AWS/Azure/GCP po stronie klientów/serwerów, a także wszędzie tam, gdzie terminacja TLS odbywa się na oprogramowaniu z OpenSSL 1.0.1*. (Do detekcji przydają się logi IDS oraz logi operacji na certyfikatach, np. ACM/CloudTrail).

Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)

Rozszerzenie TLS/DTLS Heartbeat (RFC 6520) pozwala okresowo „pingować” drugą stronę bez renegocjacji. W podatnych wersjach OpenSSL błędnie ufano deklarowanej długości payloadu. Napastnik wysyła HeartbeatRequest z małym payloadem i zawyżoną długością; OpenSSL odsyła żądaną liczbę bajtów, dogaszając brakujące bajty z pamięci procesu (do 64 KB na żądanie). Atak można wykonywać wielokrotnie, aż do pozyskania wartościowych artefaktów (klucze prywatne X.509, hasła, tokeny sesji). Naprawa w 1.0.1g dodała kontrolę zakresu i odrzucanie niepoprawnych żądań. Skuteczność ataku wynika z: (1) prostoty (brak uwierzytelnienia), (2) braku śladów w typowych logach aplikacji, (3) wysokiej wartości wycieku (tajemnice kryptograficzne).


Artefakty i logi (SOC)

Źródło/logPole/artefaktWzorzec/anomaliaUwagi
IDS (Suricata/Snort)alert.signature / event.signature„Heartbleed” / „OpenSSL TLS heartbeat read overrun” / „CVE‑2014‑0160”SIDs Snort VRT: 30510–30517 (GID 1). Najpewniejszy sygnał.
Zeeknotice / skrypt ssl/heartbleedAlerty dot. niepoprawnych rekordów HeartbeatWsparcie dodane 2014‑04‑08.
ALB/ELB (AWS) – Connection/Access LogsTLS pola: protokół, cipher, status/connection_statusPiki błędów/nieudanych handshake (pośrednio); korelować z alarmami IDSDo analizy zmian wzorców TLS, nie wykrywa samego Heartbleed.
CloudTrail (AWS ACM/IAM/ACM‑PCA)eventNameImportCertificate, RequestCertificate, UpdateServerCertificate, DeleteServerCertificateŚlad rotacji certyfikatów po łataniu/kompromitacji.
Web serwer (Apache/Nginx)error/accessNietypowe resety połączeń, wzrost 4xx/5xx (wtórnie)Korelacja pomocnicza; zapis TLS payloadu brak. [Uzupełniające]
Windows EIDSchannel/IIS niepodatne; brak natywnych EID dla samej luki. [N/D]
K8s auditpatch/update na Deployment/PodRolling update obrazów po aktualizacji OpenSSLArtefakt zmian remediacyjnych, nie wykrycia. [Ogólne]

Detekcja (praktyczne reguły)

Sigma (IDS → SIEM)

title: Heartbleed (CVE-2014-0160) Detected by IDS
id: 1e1a5bb3-9e6f-45f0-9d7e-ids-heartbleed
status: stable
description: Alerty IDS/IPS wskazujące na próby/wykrycia ataku Heartbleed.
references:
  - https://nvd.nist.gov/vuln/detail/CVE-2014-0160
  - https://blog.snort.org/2014/04/sourcefire-vrt-certified-snort-rules_8.html
  - https://zeek.org/2014/04/detecting-the-heartbleed-bug-using-bro/
logsource:
  product: network
  service: ids
detection:
  selection:
    signature|contains:
      - 'Heartbleed'
      - 'heartbeat read overrun'
      - 'CVE-2014-0160'
    # alternatywnie dla Suricata EVE:
    alert.signature|contains:
      - 'Heartbleed'
      - 'heartbeat read overrun'
  condition: selection
fields:
  - src_ip
  - dest_ip
  - dest_port
  - signature
  - classification
falsepositives:
  - Rzadkie; możliwe skanery audytowe (np. nmap ssl-heartbleed)
level: high
tags:
  - attack.T1190
  - attack.T1212

(Źródła reguł i nazewnictwa sygnatur: Snort VRT SIDs 30510–30517; Zeek script ssl/heartbleed.)

Splunk (SPL)

(index=ids (sourcetype=suricata OR sourcetype=snort) OR source="*eve.json")
| spath
| eval sig=coalesce('alert.signature','signature')
| search sig="*Heartbleed*" OR sig="*heartbeat read overrun*" OR sig="*CVE-2014-0160*"
| stats earliest(_time) as first latest(_time) as last values(dest_port) count by src_ip dest_ip sig
| convert ctime(first) ctime(last)

KQL (Microsoft Sentinel / Log Analytics)

Opcja A – CommonSecurityLog (appliance IDS):

CommonSecurityLog
| where DeviceVendor in~ ("Snort","Suricata")
| where Message has_any ("Heartbleed","heartbeat read overrun","CVE-2014-0160")
| summarize cnt=count(), first=min(TimeGenerated), last=max(TimeGenerated) by SourceIP, DestinationIP, DestinationPort, Message

Opcja B – własna tabela SuricataEve_CL:

SuricataEve_CL
| where event_type_s == "alert"
| where alert_signature_s has_any ("Heartbleed","heartbeat read overrun","CVE-2014-0160")
| summarize cnt=count(), first=min(TimeGenerated), last=max(TimeGenerated) by src_ip_s, dest_ip_s, dest_port_d, alert_signature_s

CloudTrail Lake (AWS) — ślad rotacji certyfikatów po incydencie

SELECT eventTime, eventSource, eventName,
       userIdentity.accountId AS account, userIdentity.type AS actorType,
       requestParameters.certificateArn AS certArn
FROM   aws_cloudtrail_logs
WHERE  eventSource IN ('acm.amazonaws.com','iam.amazonaws.com','acm-pca.amazonaws.com')
  AND  eventName   IN ('ImportCertificate','RequestCertificate','UpdateServerCertificate','DeleteServerCertificate')
  AND  eventTime BETWEEN from_iso8601_timestamp('2025-11-01T00:00:00Z') AND from_iso8601_timestamp('2025-11-08T23:59:59Z')
ORDER BY eventTime DESC;

(Dokumentacja CloudTrail/ACM potwierdza logowanie tych akcji.)

Elastic / EQL / Kibana KQL

EQL:

network where event.module == "suricata" and event.kind == "alert" and
 (suricata.eve.alert.signature : "*Heartbleed*" or
  suricata.eve.alert.signature : "*heartbeat read overrun*")

Kibana KQL:

event.module:"suricata" and event.kind:"alert" and suricata.eve.alert.signature:("*Heartbleed*" OR "*heartbeat read overrun*" OR "*CVE-2014-0160*")

Heurystyki / korelacje (co łączyć)

  • Korelacja IDS ↔ rotacja certyfikatów: alerty Heartbleed na IP serwera + w ciągu 24–72 h zdarzenia ImportCertificate/UpdateServerCertificate (CloudTrail) ⇒ potwierdzenie remediacji lub panic‑rotacji.
  • Anomalie ruchu TLS: wzrost krótkich połączeń do 443/IMAPS/SMTPS z tej samej klasy adresów podczas skanów/eksfiltracji. [wspierające]
  • Ryzyko wtórne: po wycieku klucza prywatnego — podszywanie się (MITM) i odszyfrowanie zarejestrowanego ruchu bez PFS; korelować z wymianą certyfikatów i wymuszaniem PFS.

False positives / tuning

  • Fałszywe pozytywy są rzadkie — sygnatury na poziomie TLS są precyzyjne. Najczęstsze przypadki: testy nmap ssl-heartbleed lub skanery zgodności. Whitelistuj źródła skanerów.
  • Brak alertu ≠ brak ataku — historycznie ataki nie musiały zostawiać śladów w logach aplikacyjnych; rely na IDS/Zeek.

Playbook reagowania (IR)

  1. Izolacja & inwentarz: zidentyfikuj hosty z OpenSSL 1.0.1–1.0.1f/1.0.2‑beta*.
  2. Łatowanie: aktualizacja do OpenSSL 1.0.1g lub nowszej gałęzi; alternatywnie rekompilacja z -DOPENSSL_NO_HEARTBEATS (krótkoterminowo).
  3. Rotacja kryptografii: wygeneruj nowe klucze prywatne, ponownie wydaj certyfikaty, unieważnij stare (CRL/OCSP); w chmurze weryfikuj ślad w CloudTrail (ACM/IAM/ACM‑PCA).
  4. Unieważnienie sesji: wymuś re‑logowanie użytkowników, rotuj tokeny/cookies.
  5. Reset haseł: jeśli wyciek dotyczył serwisów z authem — wymuś zmianę.
  6. Hunting: przeszukaj IDS/Zeek pod kątem wzorców Heartbleed i anomalii TLS; koreluj ze zmianami certyfikatów.
  7. Komunikacja: zgodnie z wymogami regulacyjnymi (np. healthcare — przykłady incydentów niżej).

Przykłady z kampanii / case studies

  • Canada Revenue Agency (CRA) — kradzież 900 numerów SIN w oknie 6h tuż po ujawnieniu luki; zatrzymano podejrzanego.
  • Mumsnet (UK) — reset ~1,5 mln haseł po incydencie powiązanym z Heartbleed.
  • Community Health Systems (USA) — wyciek danych 4,5 mln pacjentów; wektor przypisano exploitacji Heartbleed.
  • Konsekwencje systemowe — Heartbleed przyspieszył powstanie Core Infrastructure Initiative (funding krytycznych OSS).

Lab — przykładowe komendy

Wyłącznie w kontrolowanym środowisku i na własnych hostach.
Celem jest weryfikacja detekcji, nie ofensywa.

Uruchomienie podatnego serwisu (Docker):

# przykładowy obraz demo (podatny OpenSSL)
docker run -d --name hb -p 8443:443 vulnerables/cve-2014-0160

Test wykrycia (Nmap NSE – bezpieczne sprawdzenie):

nmap -p 8443 --script ssl-heartbleed 127.0.0.1

(Nmap skrypt ssl-heartbleed jednoznacznie wskazuje podatność.)

IDS/Zeek:

  • Włącz reguły ET/Suricata lub Snort VRT (SIDs 30510–30517).
  • Zeek: załaduj skrypt policy/protocols/ssl/heartbleed.bro (obecnie w master).

Mapowania (Mitigations, powiązane techniki)

Mitigations (ATT&CK Enterprise):

  • M1051 Update Software — szybkie łatowanie (OpenSSL ≥1.0.1g).
  • M1031 Network Intrusion Prevention — IDS/IPS z sygnaturami Heartbleed.
  • (Dodatkowo) M1048 Application Isolation and Sandboxing, M1050 Exploit Protection — ograniczenie skutków.

Powiązane techniki ATT&CK:

  • T1190 Exploit Public-Facing Application — wektor wejścia.
  • T1212 Exploitation for Credential Access — pozyskanie sekretów.
  • T1210 Exploitation of Remote Services — ruch boczny po kompromitacji.

Źródła / dalsza lektura

  • NVD — opis i CVSS v3.1: 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N). (NVD)
  • Heartbleed.com — zakres wersji i kontekst operacyjny. (heartbleed.com)
  • RFC 6520 — TLS/DTLS Heartbeat Extension. (RFC Editor)
  • OpenSSL 1.0.1g — release notes (fix CVE‑2014‑0160). (slackware.cs.utah.edu)
  • CISA alert — charakterystyka luki i wyciek porcji 64 KB. (CISA)
  • Snort/Suricata — sygnatury wykrywające Heartbleed (SIDs 30510–30517) + dokumentacja aktualizacji reguł. (Snort Blog)
  • Zeek — detekcja Heartbleed. (Zeek)
  • AWS — CloudTrail/ACM (logowanie operacji na certyfikatach) i Connection Logs ALB. (AWS Documentation)
  • Case studies: CRA, CHS, Mumsnet. (TIME)

Checklisty dla SOC / CISO

SOC (operacyjnie):

  • Włączone reguły IDS/IPS na „Heartbleed” (Snort/Suricata/Zeek).
  • Dashbord/alert: korelacja IDS HeartbleedCloudTrail Import/UpdateServerCertificate.
  • Monitoring anomalii TLS (krótkie połączenia, skoki błędów).
  • Procedura natychmiastowej rotacji certyfikatów/kluczy i unieważniania sesji.

CISO (strategicznie):

  • Potwierdzona eliminacja OpenSSL 1.0.1* w środowisku (obrazy bazowe/kontenery).
  • Wymuszenie PFS i polityki silnych zestawów szyfrów.
  • Testy podatności (skan nmap NSE) — wyłącznie autoryzowane.
  • Plan komunikacji i notyfikacji (zgodność regulacyjna); lekcje z incydentów (CRA/CHS).

Uwaga końcowa: Heartbleed to historyczna luka, ale nadal pojawia się w długowiecznych obrazach/urządzeniach. Minimalna obrona to łatanie (M1051), IDS/IPS (M1031) oraz rotacja kryptografii po każdym podejrzeniu ekspozycji.

Wykrywanie Honeypotów – Metody, Narzędzia, Obrona

Honeypoty też mają odciski palców

Honeypoty (komputerowe wabiki) są potężnym narzędziem obrony – przyciągają atakujących niczym cyber-pułapki, dając wgląd w ich techniki. Nic dziwnego, że agresorzy starają się je wykrywać i omijać. W tym artykule przyjrzymy się technikom honeypot detection, czyli metodom rozpoznawania czy dany system to prawdziwy cel, czy sprytnie zastawiona pułapka. Omówimy fingerprinting aktywny i pasywny, zdradliwe sygnały (banery, błędy protokołów, cechy stosu TCP/IP, certyfikaty TLS), narzędzia wykorzystywane zarówno przez red team (atakujących) jak i blue team (obrońców) oraz metody obrony honeypotów przed dekonspiracją. Przygotujcie się na techniczne szczegóły, przykłady z narzędzi w stylu curl/nmap oraz konkretne porady gotowe do wdrożenia w labie i produkcji.

Czytaj dalej „Wykrywanie Honeypotów – Metody, Narzędzia, Obrona”