
TL;DR
CVE‑2019‑11510 to krytyczna podatność typu pre‑auth arbitrary file read w Ivanti/Pulse Connect Secure (PCS). Umożliwia niezalogowanemu napastnikowi odczyt plików z urządzenia VPN poprzez specjalnie przygotowane żądanie HTTP, co w praktyce prowadzi do kradzieży konfiguracji, kluczy i tokenów sesji oraz dalszych włamań z pominięciem MFA. Z punktu widzenia ATT&CK odpowiada to T1190 (Initial Access), a po eksfiltracji sekretów typowo obserwujemy *T1552. (Unsecured Credentials)**, T1539 (Steal Web Session Cookie) i później T1078 (Valid Accounts). Patching do wersji naprawiających (np. 8.2R12.1, 8.3R7.1, 9.0R3.4 i nowsze) jest obowiązkowy, a urządzenia należy weryfikować narzędziem Integrity Checker Tool (ICT) oraz logami WAF/ALB.
Krótka definicja techniczna
CVE‑2019‑11510: w Pulse Connect Secure (PCS) do wersji 8.2<8.2R12.1, 8.3<8.3R7.1 i 9.0<9.0R3.4 błąd w walidacji ścieżek umożliwia nieuwierzytelniony odczyt dowolnych plików poprzez spreparowany URI. CVSS v3.1 = 10.0 (CRITICAL).
Gdzie występuje / przykłady platform
- Network/Appliance: Ivanti/Pulse Connect Secure (sprzęt/VM) — wektor pierwotny.
- Windows / AD: po wycieku haseł/kluczy możliwy dalszy dostęp i lateral movement (T1078).
- AWS: ślady/ochrona w AWS WAF (logi httpRequest.*) i ALB access logs.
- Azure: Application Gateway WAF / Front Door — telemetryka wbicia i blokad. [brak oficjalnego cytatu — ogólna praktyka]
- GCP: Cloud Armor / Chronicle parser dla Pulse Secure (syslog).
- K8s / ESXi / M365: nie dotyczy bezpośrednio (pośredni wpływ poprzez kompromitację tożsamości).
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
Błąd pre‑auth file read umożliwia z poziomu Internetu pobieranie plików z urządzenia PCS. Atakujący używa spreparowanego żądania HTTP (z elementami przechodzenia po katalogach), aby ominąć autoryzację i uzyskać dostęp do zasobów urządzenia. Następnie eksfiltruje m.in. pliki konfiguracyjne, klucze i artefakty sesji, które mogą pozwolić na przejęcie aktywnych sesji, logowanie jak legalni użytkownicy (T1078) lub dalszą penetrację sieci. Podatność była szeroko wykorzystywana (CISA KEV), a technicznie wpisuje się w ATT&CK T1190.
Artefakty i logi
| Pulse Secure syslog (Events/User/Admin) | log message / URI | nietypowe żądania do endpointów HTML5 + sekwencje traversal | Upewnij się, iż eksportujesz syslog (WELF/Custom). |
| Reverse proxy / WAF | URI, query, status, UA, src IP | obecność wzorców path traversal, słowa‑klucze związane z HTML5 gateway | Dobre miejsce do korelacji i rate‑limitu. |
| AWS WAF (CloudWatch Logs) | httpRequest.uri, action, terminatingRuleId | żądania z ../ i słowami kluczowymi; akcja ALLOW/BLOCK | Pola wg dokumentacji AWS WAF. |
| ALB Access Logs (S3) | request, elb_status_code, target_status_code | 200/206 dla nietypowych żądań | W połączeniu z WAF daje pełny obraz. |
| SIEM parsers (Chronicle/QRadar/itd.) | Normalizowane pola URL | dopasowania na tokenach ścieżki i traversal | Przykłady konfiguracji dla PCS. |
| ICT (Integrity Checker Tool) | wynik skanu | nowe/zmodyfikowane pliki na urządzeniu | Do potwierdzenia kompromitacji obrazu urządzenia. |
| EID / K8s audit / M365 | — | n/d | Podatność dotyczy appliance, nie tych źródeł. |
Detekcja (praktyczne reguły)
Sigma (web / reverse proxy / WAF)
title: Pulse Connect Secure — CVE-2019-11510 Attempt (Guacamole + Traversal) id: 1c6d2c1a-7a4e-4b6c-9f0b-3a2c2f7a9f10 status: experimental logsource: category: webserver product: proxy detection: sel_dana: request|contains: - "/dana" - "dana-na" sel_guac: request|contains: "guacamole" sel_trav: request|contains: - "../" - "..%2f" - "%2e%2e" condition: sel_dana and sel_guac and sel_trav falsepositives: - Ruch HTML5 gateway bez traversal (powinien nie zawierać '../') level: high tags: - attack.t1190 - cve.2019-11510Wzorzec „Guacamole” oraz traversal jest wskazywany w publicznych regułach Sigma dla CVE‑2019‑11510.
Splunk (SPL)
(index=web OR index=proxy OR index=waf OR sourcetype=pulse* OR sourcetype=aws:waf) | eval uri=coalesce(cs_uri_stem, request, uri_path, url), q=coalesce(cs_uri_query, uri_query, query_string) | where (like(uri, "%/dana%") OR like(uri, "%dana-na%")) AND (like(uri, "%guacamole%") OR like(q, "%guacamole%")) AND (like(uri, "%../%") OR like(q, "%../%") OR like(uri, "%..%2F%") OR like(q, "%..%2F%")) | stats count dc(src) AS src_ips values(user) AS users by uri, q, user_agent, dest | where count > 0KQL (Microsoft Sentinel / Log Analytics)
let IOCUri = dynamic(["/dana", "dana-na"]); let Kw = "guacamole"; (union isfuzzy=true CommonSecurityLog | extend uri = coalesce(RequestURL, RequestURI, concat(URL, URLQuery)), src = SourceIP, ua = RequestClientApplication , AzureDiagnostics | where Category has "ApplicationGatewayFirewallLog" | extend uri = requestUri_s, src = clientIp_s, ua = userAgent_s ) | where uri has_any (IOCUri) and uri contains Kw and (uri contains "../" or uri contains "..%2F") | summarize cnt=count(), make_set(src), make_set(ua) by bin(TimeGenerated, 5m), tostring(uri)AWS CloudWatch Logs Insights (AWS WAF)
# Log Group: /aws/waf/<twoj-webacl> fields @timestamp, httpRequest.clientIp, httpRequest.method, httpRequest.uri, action, terminatingRuleId | filter httpRequest.uri like /dana/ and httpRequest.uri like /\.\./ and httpRequest.uri like /guacamole/ | stats count() as hits by httpRequest.clientIp, action, terminatingRuleId, httpRequest.uri | sort hits descPola httpRequest.*, action, terminatingRuleId pochodzą z oficjalnego schematu logów AWS WAF.
Elastic (KQL + EQL)
KQL (http logs / ecs):
url.path:/dana* AND url.path:*guacamole* AND (url.path:*../* OR url.query:*..%2F*)EQL (sieć/HTTP):
network where network.protocol == "http" and wildcard(url.path, "/dana*") and stringcontains(url.path, "guacamole") and (stringcontains(url.path, "../") or stringcontains(url.query, "..%2F"))Heurystyki / korelacje
- URI + traversal + słowo‑klucz (HTML5 gateway) + HTTP 200/206 ⇒ wysoka pewność.
- Seria prób z różnych IP/ASN + wspólny UA (skaner) ⇒ obniż priorytet lub taguj jako „scanner/bot”.
- Po próbach: nowe sesje VPN z nieznanych ASN, nietypowa geografia (impossible travel), zmiana fingerprintu TLS → koreluj z logowaniem do AD/VPN. (CISA wskazywała takie objawy przy kampaniach na PCS.)
False positives / tuning
- Legalny ruch HTML5 (Guacamole) bez traversal powinien być akceptowany — warunek na ../ / %2e%2e jest kluczowy.
- Skany bezpieczeństwa / bug‑bounty generują podobne wzorce — whitelistuj znane zakresy.
- Deduplikuj zdarzenia na 5–10 min, grupując po srcIP + UA + URI.
Playbook reagowania
- Triaż i izolacja: jeżeli reguły z §7 wskazują udane trafienia (200/206), natychmiast odetnij dostęp administracyjny do PCS / wstaw przed nim regułę WAF blokującą wzorce traversal.
- Weryfikacja stanu PCS: uruchom Ivanti Integrity Checker Tool (ICT) (wbudowany lub zewnętrzny) i zarchiwizuj wynik.
- Forensyka: zgraj logi (Events/User/Admin), eksport syslog z SIEM, logi WAF/ALB. (Dokumentacja logowania PCS.)
- Patching / remediacja: zaktualizuj PCS do wersji naprawiających CVE‑2019‑11510 (≥8.2R12.1, ≥8.3R7.1, ≥9.0R3.4). Jeśli ICT wykrył modyfikacje — rozważ reinstalację obrazu i rotację kluczy/certyfikatów.
- Reset/rotacja: wymuś reset haseł VPN/AD, rotuj certyfikaty/klucze używane przez PCS, unieważnij aktywne sesje. (Powiązanie z T1552.*).
- Hunting post‑exploitation: szukaj logowań z nowych ASN, użycia skradzionych ciasteczek/tokens (T1539), nietypowych mapowań ról.
- Twardnienie: stałe reguły WAF blokujące traversal, MFA wszędzie, segmentacja i ograniczenie dostępu do konsoli administracyjnej PCS.
- Zgłoszenia i KEV: traktuj jako KEV i raportuj zgodnie z procesem (CISA KEV).
Przykłady z kampanii / case studies
- REvil/Sodinokibi (2019–2020) — raporty łączyły wątki ransomware z wykorzystaniem PCS w wektorze wejścia.
- „Fox Kitten” (APT z Iranu, 2019–2020) — szeroka eksploatacja VPN (w tym Pulse) jako początkowego dostępu; utrzymywanie backdoorów.
- CISA alerty (2020+) — ostrzeżenia o kontynuowanej eksploatacji niezałatanych PCS; zalecenia aktualizacji i hardeningu.
Lab (bezpieczne testy) — przykładowe komendy
Tylko w odizolowanym labie. Celem jest wytworzenie logów do weryfikacji reguł, bez uderzania w realny PCS.
- Symulacja logów na NGINX (Docker)
- Weryfikacja detekcji — załaduj logi access.log do SIEM i uruchom reguły z §7.
- Test WAF — utwórz regułę blokującą sekwencje traversal i sprawdź, czy zapisy AWS WAF rejestrują akcję BLOCK oraz terminatingRuleId.
Mapowania (Mitigations, powiązane techniki)
Mitigations (ATT&CK Enterprise):
- M1051 — Update Software (regularne aktualizacje/łaty).
- M1016 — Vulnerability Scanning (ciągłe skanowanie i priorytetyzacja).
- M1036 — Account Use Policies (zasady użycia kont, blokady, sesje).
- M1031/M1037 — Network Intrusion Prevention / Filter Network Traffic (WAF/IPS przed PCS).
Powiązane techniki:
- T1552.001 — Credentials in Files (wyciek haseł z plików).
- T1552.004 — Private Keys (eksfiltracja kluczy).
- T1539 — Steal Web Session Cookie (przejęcie sesji).
- T1078 — Valid Accounts (logowanie prawdziwymi poświadczeniami).
Źródła / dalsza literatura
- NVD: szczegóły CVE‑2019‑11510, wersje naprawiające, CVSS, wpis KEV. (NVD)
- CISA Alert AA20‑010A/AA20‑107A: kontynuowana eksploatacja PCS. (CISA)
- MITRE ATT&CK T1190: Exploit Public‑Facing Application (mapowanie i przykłady użycia przez grupy). (MITRE ATT&CK)
- SigmaHQ: detekcja „Guacamole” dla CVE‑2019‑11510. (detection.fyi)
- Ivanti (PCS/ICS) — logowanie i monitoring; syslog/filtry. (Ivanti Help)
- AWS WAF — pola logów (httpRequest.*, action, terminatingRuleId). (AWS Documentation)
- JPCERT/CC: podsumowanie kampanii na Pulse Connect Secure. (JPCERT/CC Eyes)
- IBM X‑Force / Sophos: REvil/Sodinokibi a wektory VPN. (IBM)
- Ivanti/CISA — Integrity Checker Tool (ICT) i użycie w dochodzeniach. (CISA)
Checklisty dla SOC / CISO
SOC (operacyjne):
- Włączony eksport logów PCS (Events/User/Admin) do SIEM.
- Reguły detekcji z §7 aktywne w web/WAF/ALB.
- Korelacje: traversal + 200/206 + „Guacamole” + nowe logowania VPN.
- Lista zaufanych skanerów/ASN w allowlist (redukcja FP).
- Dashboard „PCS Exploit Attempts” (źródła, URI, status, ASN).
CISO (strategiczne):
- Potwierdzony patch level PCS ≥ wersje naprawiające.
- Procedura ICT po każdym incydencie/aktualizacji.
- Polityka rotacji kluczy/certyfikatów i tokenów SSO przy incydencie (T1552.*).
- WAF/IPS z regułami traversal przed PCS; dostęp admin tylko z sieci uprzywilejowanej.
- Regularny VA/PT urządzeń brzegowych (M1016).
