
Telerik RadAsyncUpload Exploit Chain Allows Remote Code Execution
Public exploit chain for Telerik RadAsyncUpload enables unauthenticated remote code execution in non-default configurations; patched in July.
Security researchers at TantoSec have published a working exploit chain for the Telerik UI for ASP.NET AJAX web development toolkit that can allow an unauthenticated attacker to run arbitrary code on a hosting server. The attack targets the RadAsyncUpload file-upload control, and Progress Software, which owns Telerik, patched the underlying flaws in version 2026.2.708 on July 8. The public release on September 7 includes a detailed technical write-up, a command-line tool named telerik-rau-exploit, and two payload files, putting a complete attack path into public hands for the first time. However, the chain only works against applications that meet two specific non-default conditions, and there are no confirmed reports of active exploitation in the wild as of September 7.
The vulnerable versions are 2010.1.309 through 2026.2.519, according to Progress's advisory. Simply running an affected version is not enough to be exploitable. TantoSec says the chain has preconditions that are not met by a default installation. First, a page must render a RadAsyncUpload control whose server-side handler reads the upload result. Second, the application must be configured with an explicit, non-default encryption key for the control. That second condition is awkward because Telerik actually recommends setting a custom encryption key as a hardening measure, meaning some well-intentioned configurations may be vulnerable. When both conditions are present, the payoff is code execution with the privileges of the IIS application pool, which is the part of Microsoft's web server software that runs the website's code.
The entry point is a padding oracle, tracked as CVE-2026-13182. The control encrypts its client-side state using AES-CBC, a common encryption method, but does not add an integrity check. As a result, the server responds differently to tampered data depending on whether the decrypted bytes have valid padding or merely fail to parse as JSON. An attacker can use that difference to decrypt the upload configuration and, using a technique TantoSec built around the control's fixed encryption seed, forge it without ever learning the encryption key. The forged configuration then lets the attacker name an arbitrary .NET type. Because the control resolves that type without an allowlist, the flaw CVE-2026-13181 carries a CVSS score of 8.1, which is in the high severity range. The resolved type deserializes into a gadget that loads a DLL from a location the attacker controls. That uploaded DLL is a mixed-mode assembly, meaning it contains both managed .NET code and native machine code, and it runs the native code as soon as it loads.
TantoSec's end-to-end demonstration took roughly 127,000 oracle requests, which took about an hour against a lab target and longer against a rate-limited server. If the application hides detailed error messages, the padding oracle can still be read through response timing, a variant tracked as CVE-2026-13183. The two released payloads show different goals: one writes a web shell to disk, and one runs entirely in memory. A web shell is a small file placed on a server that gives an attacker a backdoor control panel through a web browser. The in-memory version leaves no file behind in that location.
Progress has seen no confirmed reports of these 2026 flaws being exploited in the wild, and none appears in the U.S. Cybersecurity and Infrastructure Security Agency's Known Exploited Vulnerabilities catalog as of September 7. One attack-surface-management vendor, IONIX, states on its website that it is tracking ongoing exploitation attempts, but it gives no dates, volumes, or other specifics and does not distinguish exploitation from ordinary internet scanning of the handler. The component itself has a long history of real-world attacks, but through older bugs, not these. A 2019 deserialization flaw in the same handler, CVE-2019-18935, was chained with a 2017 encryption weakness and exploited by ransomware crews and nation-state actors, including in a 2022 breach of a U.S. federal agency, and was still being exploited as recently as 2025. That track record is why an unauthenticated code-execution path in this handler draws attention, even though the new bugs have no confirmed exploitation.
Progress's July bulletin actually covers two separate attack chains. The RadAsyncUpload chain TantoSec detailed is one. The other is a distinct remote-code-execution chain in the RadPersistenceManager and RadDockLayout components, tracked as CVE-2026-13185, CVE-2026-13186, and CVE-2026-13190, credited to CODE WHITE's Markus Wulftange and Progress. No public exploit has been released for that second chain. Within the RadAsyncUpload chain, a fourth bug involving a predictable default key, CVE-2026-13184, applies only to an alternative attack mode that the released demonstration did not use.
The primary fix is to upgrade to Telerik UI for ASP.NET AJAX 2026.2.708 (2026 Q2 SP1) or later, which replaces the flawed AES-CBC scheme with authenticated encryption and closes the entire chain. Progress calls upgrading its only official recommendation and warns that a stronger custom key does not help, because the oracle never needs the key. For sites that cannot upgrade immediately, Progress lists several interim steps. Setting customErrors to RemoteOnly or On forces an attacker onto the slower timing-based variant. Disabling the upload handler entirely by setting Telerik.Web.DisableAsyncUploadHandler to true is appropriate if RadAsyncUpload is not required. Removing any custom encryption key makes the control fall back to the ASP.NET machine key with AES and HMAC, or administrators can generate strong machine keys manually rather than at runtime.
Because successful exploitation does not leave obvious traces in standard ASP.NET error logs, defenders should hunt behaviorally rather than for error signatures. That means looking for the IIS worker process (w3wp.exe) spawning cmd.exe, a new or unexpected .aspx file in the web root, or a mixed-mode DLL written under the upload control's temporary folder or App_Data.
For organizations running older .NET web applications, a security-first IT and consulting partner such as AEU-I can help inventory affected Telerik controls and plan a safe upgrade, but the official Progress patch remains the only complete fix.
TantoSec reported the issues to Progress on May 22; the fix shipped on July 8, and the CVEs followed on July 22. Almeida credited colleague Justin Steven for the timing-oracle variant.
How to Protect Yourself
- If your website runs Telerik UI for ASP.NET AJAX, have your web developer update it to version 2026.2.708 or newer immediately, because that version fixes the flaw.
- If an immediate update is not possible, turn on your web server's custom error mode so attackers have to use a slower timing-based trick instead of reading error messages.
- If your site does not actually need the RadAsyncUpload file-upload feature, disable it by setting a server option called Telerik.Web.DisableAsyncUploadHandler to true.
- Remove any custom encryption key you may have set for the upload control, so the control uses the built-in ASP.NET secure key with integrity protection, or generate strong machine keys manually instead of letting the server guess them.
- Check your web folder for new or unexpected .aspx files and monitor whether the IIS worker process (w3wp.exe) ever starts a command prompt, as these can indicate the exploit ran.
Vulnerabilities & Fixes
- CVE-2019-18935 An older 2019 deserialization flaw in the same handler that was chained with a 2017 encryption weakness; exploited in past attacks. View the fix & details →
- CVE-2026-13181 An unguarded type-resolution flaw in RadAsyncUpload with CVSS 8.1; fixed in Telerik UI for ASP.NET AJAX 2026.2.708. View the fix & details →
- CVE-2026-13182 A padding oracle in RadAsyncUpload's AES-CBC encrypted client-side state; fixed by authenticated encryption in 2026.2.708. View the fix & details →
- CVE-2026-13183 A timing-based variant of the padding oracle; fixed in 2026.2.708. View the fix & details →
- CVE-2026-13184 A predictable default key flaw that applies only to an alternative attack mode; fixed in 2026.2.708. View the fix & details →
- CVE-2026-13185 Part of a distinct remote-code-execution chain in RadPersistenceManager and RadDockLayout; fixed in the same July bulletin. View the fix & details →
Terms Explained
- padding oracle A weakness in encryption that lets an attacker learn secret information by observing whether a server accepts or rejects tampered data.
- AES-CBC A common way to encrypt data where each block is mixed with the previous one, but it needs extra protection to prevent tampering.
- remote code execution (RCE) A security flaw that lets an attacker run their own commands or programs on a server from far away.
- CVSS A scoring system from 0 to 10 that rates how severe a security vulnerability is.
- IIS application pool The part of Microsoft's web server software that runs a website's code, with its own permissions.
- mixed-mode DLL A software component that contains both managed .NET code and native machine code, allowing it to run lower-level operations.
- web shell A small file placed on a server that gives an attacker a backdoor control panel through a web browser.
- machine key A secret setting in ASP.NET web applications used to protect sensitive data like login sessions.