
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=rau z ładunkiem, który po stronie serwera trafia do deserializacji przez JavaScriptSerializer, 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 wyciek web.config.
- Efekt: wykonanie kodu w kontekście IIS Worker Process (w3wp.exe), często skutkujące uruchomieniem cmd.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
| 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, iż 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: highSigma (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: highSplunk (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_statusWindows 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, ParentCommandLineKQL (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, InitiatingProcessCommandLineAzure 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_sCloudTrail / 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):
Elastic (KQL/EQL)
HTTP (Elastic APM / ingest):
url.path:"/Telerik.Web.UI.WebResource.axd" and url.query:*type\=rau* and http.request.method:POSTEQL – 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} lub time‑taken & cs-bytes nienaturalnie duże.
- W procesach – alertuj tylko, gdy rodzicem jest w3wp.exe i dzieckiem interpreter/skryptor.
Playbook reagowania (IR)
- Triage i izolacja: odizoluj host IIS z ruchu wychodzącego (segmentacja/egress filter).
- Zabezpieczenie dowodów:
- zrzut pamięci w3wp.exe i kopia logów IIS/WAF/EDR,
- kopia webroot (hashy) i web.config.
- 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_Data bez 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 przez cały czas 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, iż 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 MachineKey i 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.














