
Co znajdziesz w tym artykule?
- 1 TL;DR
- 2 Krótka definicja techniczna
- 3 Gdzie występuje / przykłady platform
- 4 Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
- 5 Artefakty i logi
- 6 Detekcja (praktyczne reguły)
- 7 Heurystyki / korelacje
- 8 False positives / tuning
- 9 Playbook reagowania (IR)
- 10 Przykłady z kampanii / case studies
- 11 Lab (bezpieczne testy)
- 12 Mapowania (Mitigations, Powiązane techniki)
- 13 Źródła / dalsza literatura
- 14 Checklisty dla SOC / CISO
TL;DR
Krytyczna podatność w Telerik UI for ASP.NET AJAX (do 2019.3.1023) pozwala na zdalne wykonanie kodu poprzez niezabezpieczoną deserializację JSON w komponencie RadAsyncUpload, zwykle w kontekście procesu w3wp.exe. Często wymaga znajomości kluczy szyfrujących (np. MachineKey) — możliwych do pozyskania m.in. przez starsze luki CVE‑2017‑11317/11357 — i jest powszechnie wykorzystywana w łańcuchach ataku (CISA KEV). Zalecenie: aktualizacja co najmniej do R1 2020 (2020.1.114), rotacja kluczy, włączenie WAF oraz proaktywna detekcja ruchu do Telerik.Web.UI.WebResource.axd?type=rau i procesów potomnych w3wp.exe.
Krótka definicja techniczna
CVE‑2019‑18935 to luka typu .NET deserialization w RadAsyncUpload (Telerik UI for ASP.NET AJAX), prowadząca do RCE po dostarczeniu specjalnie przygotowanych danych do endpointu m.in. Telerik.Web.UI.WebResource.axd?type=rau. Od wersji 2020.1.114 domyślne ustawienie łagodzi błąd; w 2019.3.1023 istnieje ustawienie niefabryczne ograniczające wektor. Często wykorzystywana łącznie z CVE‑2017‑11317/11357, które ułatwiają pozyskanie kluczy szyfrujących uploadera.
Gdzie występuje / przykłady platform
- Windows / IIS – typowe środowisko dla aplikacji ASP.NET korzystających z Telerik UI (komponenty front‑end na serwerze).
- Aplikacje firm trzecich (np. platformy CMS/CRM, jak Sitecore w starszych buildach, które pakowały Telerik UI) – ryzyko pośrednie, gdy komponent jest zależnością.
- Chmura (IaaS/PaaS) – instancje IIS za ALB/WAF (AWS) lub Application Gateway/WAF (Azure); sama luka jest aplikacyjna, ale ślady widać w dziennikach WAF/ALB.
Szczegółowy opis techniki (jak działa, cele, dlaczego skuteczna)
- Wektor: żądanie HTTP (zwykle POST) do
/Telerik.Web.UI.WebResource.axd?type=rauz ładunkiem, który po stronie serwera trafia do deserializacji przezJavaScriptSerializer, umożliwiając wstrzyknięcie obiektu prowadzące do RCE. - Warunek sprzyjający: atak jest trivialny, gdy napastnik zna/odzyska klucze szyfrowania uploadera (
MachineKey, parametry RadAsyncUpload) — często poprzez wcześniejsze błędy CVE‑2017‑11317/11357 (słaba kryptografia RAU) lub wyciekweb.config. - Efekt: wykonanie kodu w kontekście IIS Worker Process (
w3wp.exe), często skutkujące uruchomieniemcmd.exe/powershell.exe, zrzutem webshella lub ściągnięciem narzędzi. - Dlaczego skuteczna:
- komponent szeroko rozpowszechniony (często “ukryty” jako zależność),
- endpoint RAU bywa rzadko monitorowany,
- łatwo ukryć się w normalnym ruchu HTTP(S),
- luka jest w KEV, więc aktywnie skanowana/wykorzystywana przez wiele grup.
- Remediacja producenta: w R1 2020 (2020.1.114) dodano bezpieczne domyślne ustawienia, starsze łatki nie wystarczają — zalecana aktualizacja do ≥ 2020.1.114.
Artefakty i logi
| Źródło | Co szukać | Przykłady pól / EID | Uwaga |
|---|---|---|---|
| IIS W3C | Żądania do Telerik.Web.UI.WebResource.axd?type=rau, nietypowe POST z dużym cs-bytes, 4xx/5xx przy próbach | cs-uri-stem, cs-uri-query, cs-method, sc-status, time-taken, c-ip | ACSC wskazuje, że ruch do ...WebResource.axd?type=rau jest wart analizy. |
| Windows Security | Procesy potomne w3wp.exe → cmd.exe/powershell.exe | EID 4688 (Process Creation) | Koreluj z kontem serwisowym aplikacji. |
| Sysmon | Utworzenie podejrzanych plików w webroot (np. *.aspx, *.ashx), potomne procesy w3wp.exe | EID 1 (ProcessCreate), EID 11 (FileCreate) | Szukaj plików w C:\inetpub\wwwroot\ lub App_Data\RadUploadTemp\. |
| WAF/ALB (AWS) | HTTP do ...WebResource.axd z type=rau | WAF logs (httpRequest.uri,httpRequest.args) | CloudTrail nie loguje treści HTTP — analizuj WAF/ALB. |
| Azure WAF / AppGW | Jak wyżej | requestUri_s, requestQuery_s, httpMethod_s | Włącz diagnostykę do Log Analytics. |
| EDR (MDE/Elastic/…) | w3wp.exe spawnuje interpretery | nazwy procesów, dow. rodz. | Wysoka wartość korelacyjna. |
| K8s audit / M365 UAL / ESXi | [nie dotyczy] | – | Aplikacyjna luka .NET na IIS. |
Detekcja (praktyczne reguły)
Sigma (IIS – próby RAU)
title: Telerik RAU Endpoint POST Indicative of CVE-2019-18935
id: 7f2a3e27-2e2c-4b8a-9c9f-rau-iis
status: experimental
description: Wykrywa POST na Telerik.Web.UI.WebResource.axd?type=rau (RadAsyncUpload)
references:
- https://www.cyber.gov.au/.../advisory-2020-004-remote-code-execution... # ACSC
logsource:
category: webserver
product: iis
detection:
sel_uri:
cs-uri-stem|contains: 'Telerik.Web.UI.WebResource.axd'
sel_query:
cs-uri-query|contains: 'type=rau'
sel_method:
cs-method: 'POST'
condition: sel_uri and sel_query and sel_method
fields:
- c-ip
- cs-method
- cs-uri-stem
- cs-uri-query
- sc-status
- time-taken
falsepositives:
- Legalny RadAsyncUpload w aplikacjach używających Telerik (zwłaszcza stare wersje)
level: high
Sigma (Windows – potomne procesy w3wp.exe)
title: Suspicious Interpreter Spawned by w3wp.exe
id: e6b6b494-8c6e-4c22-9e63-w3wp-spawn
status: stable
logsource:
product: windows
category: process_creation
detection:
parent:
ParentImage|endswith: '\w3wp.exe'
child:
Image|endswith:
- '\cmd.exe'
- '\powershell.exe'
- '\mshta.exe'
- '\rundll32.exe'
- '\cscript.exe'
- '\wscript.exe'
condition: parent and child
fields:
- UtcTime
- User
- CommandLine
- ParentCommandLine
- Image
- ParentImage
level: high
Splunk (SPL)
IIS / WAF – próby RAU:
(index=web OR sourcetype=iis* OR sourcetype="aws:waf" OR sourcetype="azure:appgw")
| eval method=coalesce(cs_method, httpMethod_s, httpRequest.httpMethod, method)
| eval uri_stem=coalesce(cs_uri_stem, uri, requestUri_s, httpRequest.uri)
| eval uri_query=coalesce(cs_uri_query, query, requestQuery_s, httpRequest.args)
| search uri_stem="*Telerik.Web.UI.WebResource.axd*" (uri_query="*type=rau*" OR uri_stem="*DialogHandler.aspx*") method=POST
| stats count min(_time) as first max(_time) as last by method uri_stem uri_query src c_ip httpRequest.clientIp sc_status
Windows Security (4688) – potomne interpretery:
source="WinEventLog:Security" EventCode=4688
ParentProcessName="*\\w3wp.exe"
(NewProcessName="*\\cmd.exe" OR NewProcessName="*\\powershell.exe" OR NewProcessName="*\\mshta.exe" OR NewProcessName="*\\rundll32.exe" OR NewProcessName="*\\cscript.exe" OR NewProcessName="*\\wscript.exe")
| stats count by ComputerName, SubjectUserName, ParentProcessName, NewProcessName, CommandLine, ParentCommandLine
KQL (Defender for Endpoint / Azure)
MDE – procesy potomne:
DeviceProcessEvents
| where InitiatingProcessFileName =~ "w3wp.exe"
| where FileName in~ ("cmd.exe","powershell.exe","mshta.exe","rundll32.exe","cscript.exe","wscript.exe")
| project Timestamp, DeviceName, InitiatingProcessAccountName, FileName, ProcessCommandLine, InitiatingProcessCommandLine
Azure WAF / AppGW (Log Analytics):
AzureDiagnostics
| where ResourceType == "APPLICATIONGATEWAYS"
| where requestUri_s has "Telerik.Web.UI.WebResource.axd"
| where requestQuery_s has "type=rau" and httpMethod_s == "POST"
| project TimeGenerated, clientIp_s, httpMethod_s, requestUri_s, requestQuery_s, ruleSetType_s, action_s
CloudTrail / CloudWatch (AWS)
Uwaga: CloudTrail nie rejestruje treści HTTP aplikacji. Do detekcji użyj AWS WAF logs (CloudWatch Logs) lub ALB access logs.
CloudWatch Logs Insights (WAF):
fields @timestamp, httpRequest.clientIp, httpRequest.uri, httpRequest.args, httpRequest.httpMethod, action
| filter httpRequest.uri like /Telerik\.Web\.UI\.WebResource\.axd/
and httpRequest.args like /type=rau/
and httpRequest.httpMethod = "POST"
| sort @timestamp desc
| limit 200
Elastic (KQL/EQL)
HTTP (Elastic APM / ingest):
url.path:"/Telerik.Web.UI.WebResource.axd" and url.query:*type\=rau* and http.request.method:POST
EQL – potomne procesy:
process where process.parent.name == "w3wp.exe" and
process.name in ("cmd.exe","powershell.exe","mshta.exe","rundll32.exe","cscript.exe","wscript.exe")
Heurystyki / korelacje
- Korelacja 1:
IIS RAU POST➜ (±5 min) ➜w3wp.exe -> cmd.exe/powershell.exe➜ (±5 min) ➜ nowe pliki .aspx/.ashx w webroot. - Korelacja 2: Ten sam IP źródłowy generuje wiele 4xx/5xx na RAU i inne ścieżki eksploracyjne.
- Korelacja 3: Nowe połączenia wychodzące z serwera WWW (który normalnie nie inicjuje ruchu) po RAU‑POST.
- Korelacja 4: RAU‑POST + znany User‑Agent skanera + rzadkie geolokalizacje.
- Korelacja 5: W środowiskach z WAF – zdarzenia “allowed but matched rule” dla
WebResource.axd+ POST.
ACSC i CISA opisują użycie CVE‑2019‑18935 w kampaniach, gdzie po eksploatacji dochodziło do dalszych etapów (webshelle, narzędzia).
False positives / tuning
- FP: legalne użycie RadAsyncUpload w Twojej aplikacji (stary Telerik), testy QA.
- Tuning:
- Ogranicz do
method=POST+type=rau. - Biała lista znanych klientów (adresy IP, CIDR) lub kont użytkowników aplikacji.
- Podnieś priorytet, gdy
sc-status∈ {500, 400, 404} lubtime‑taken&cs-bytesnienaturalnie duże. - W procesach – alertuj tylko, gdy rodzicem jest
w3wp.exei dzieckiem interpreter/skryptor.
- Ogranicz do
Playbook reagowania (IR)
- Triage i izolacja: odizoluj host IIS z ruchu wychodzącego (segmentacja/egress filter).
- Zabezpieczenie dowodów:
- zrzut pamięci
w3wp.exei kopia logów IIS/WAF/EDR, - kopia webroot (hashy) i
web.config.
- zrzut pamięci
- Szybka analiza:
- wyszukaj artefakty wg sekcji 6 (procesy potomne, nowe pliki w webroot),
- przejrzyj żądania
...WebResource.axd?type=rau(czas, źródła).
- Eradykacja: usuń webshelle, backdoory, zaplanuj aktualizację Telerik ≥ 2020.1.114, rotację
MachineKey, wymuś redeploy. - Hunting w domenie: sprawdź lateral movement od konta serwisowego aplikacji.
- Hardening:
- WAF reguły na RAU, blokada publicznego dostępu do uploadów,
- minimalne uprawnienia konta aplikacyjnego,
App_Databez exec, - monitoring
w3wp.exe➜ interpretery.
- Zgłoszenie i lessons learned: KEV/CSIRT, aktualizacja runbooków.
Przydatne polecenia (PowerShell, bezpieczne):
# Nowe pliki skryptowe w webroot z ostatnich 7 dni
Get-ChildItem -Recurse "C:\inetpub\wwwroot" -Include *.aspx,*.ashx,*.asmx -ErrorAction SilentlyContinue |
Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-7) } | Select FullName,Length,LastWriteTime
# Procesy potomne w3wp.exe (MDE lub lokalnie)
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688} -MaxEvents 5000 |
Where-Object { $_.Properties[1].Value -like '*\w3wp.exe' } |
Select TimeCreated, @{n='NewProcess';e={$_.Properties[5].Value}}, @{n='Cmd';e={$_.Properties[8].Value}}
Przykłady z kampanii / case studies
- CISA AA23‑074A: aktorzy APT eksploatowali CVE‑2019‑18935 w środowisku rządowym USA (IIS), często łącząc z CVE‑2017‑11317/11357.
- Blue Mockingbird (Red Canary): w logach IIS widoczny RAU; po eksploatacji uruchamiano
cmd.exe/powershell.exe, kończąc na kopaniu kryptowalut. - Raporty 2025 (eSentire): luka nadal popularnym wektorem wejścia do dostarczenia reverse shelli i eskalacji uprawnień.
- ACSC (2020): wskazówki detekcyjne i dowody aktywnej eksploatacji — analiza ruchu do
...WebResource.axd?type=rau.
Lab (bezpieczne testy)
Tylko w odizolowanym środowisku testowym i na załatanych instancjach:
- Symulacja hałasu detekcyjnego (IIS/WAF):
curl -X POST "https://twoj-serwer.test/Telerik.Web.UI.WebResource.axd?type=rau" \ -H "Content-Type: application/x-www-form-urlencoded" \ --data "probe=1"Sprawdź, czy pipeline logów/warnów (IIS/WAF/SIEM) wyłapuje zdarzenie (bez żadnej próby eksploatacji). - Symulacja anomalii procesów:
Uruchom prosty skrypt deployu aplikacji, który nie powinien generowaćw3wp.exe -> cmd.exe. Zweryfikuj, że reguła z 7.2 nie alarmuje (kalibracja FP). - Testy WAF: utwórz regułę blokującą
WebResource.axd+type=rau, potwierdź zadziałanie w logach.
Mapowania (Mitigations, Powiązane techniki)
Technika główna: T1190 Exploit Public‑Facing Application (Initial Access).
Powiązane techniki po eksploatacji:
- T1505.003 – Web Shell (utrwalenie/remote admin przez .aspx).
- T1059.001 – PowerShell.
- T1059.003 – Windows Command Shell.
- T1105 – Ingress Tool Transfer.
Mitigations (ATT&CK):
- M1051 – Update Software (patchowanie komponentu do ≥ 2020.1.114).
- M1050 – Exploit Protection (OS mitigation, hardening, DEP/CFG, itd.).
- M1037 – Filter Network Traffic (WAF; filtrowanie warstwy 7).
- M1047 – Audit (systematyczny przegląd konfiguracji i logów).
Źródła / dalsza literatura
- NVD CVE‑2019‑18935 – opis, wersje, noty o ustawieniach w 2019.3.1023/2020.1.114. (NVD)
- Telerik KB – Allows JavaScriptSerializer Deserialization; Unrestricted File Upload (RAU); rekomendacja upgrade do R1 2020. (Telerik.com)
- CISA AA23‑074A – kampanie wykorzystujące CVE‑2019‑18935 (IIS w agencji FCEB). (CISA)
- ACSC 2020‑004 – wskazówki detekcyjne dla
...WebResource.axd?type=rau. (Cyber.gov.au) - Red Canary (Blue Mockingbird) – wskazówki huntingowe (IIS + potomne procesy). (Red Canary)
- Bishop Fox – przegląd techniczny deserializacji w Telerik UI. (Bishop Fox)
- CISA Top Routinely Exploited Vulns / KEV – kontekst operacyjny i priorytetyzacja. (CISA)
- MITRE ATT&CK v18 – wersjonowanie i matryca Enterprise. (MITRE ATT&CK)
Checklisty dla SOC / CISO
SOC:
- Reguły na
WebResource.axd?type=rau+ POST w IIS/WAF/ALB. - Korelacja:
w3wp.exe→ interpretery (cmd/PowerShell/mshta/rundll32). - Monitoring nowych plików w webroot (rozszerzenia .aspx/.ashx).
- Blokady WAF + alerty “match but allow” dla RAU.
- Threat hunting na źródła z KEV i znane UA skanerów.
CISO / właściciel usługi:
- Upgrade Telerik ≥ 2020.1.114, weryfikacja zależności pośrednich.
- Rotacja
MachineKeyi tajemnic aplikacji po incydencie. - WAF w trybie blokującym dla uploadów; brak exec w katalogach upload.
- Minimalne uprawnienia konta aplikacji IIS.
- Testy regresyjne i skany zewnętrzne po patchu.