Detect CVE-2021-26828: OpenPLC ScadaBR Unrestricted File Upload RCE in CrowdStrike LogScale
Detects exploitation of CVE-2021-26828, an unrestricted file upload vulnerability in OpenPLC ScadaBR that allows authenticated attackers to upload files with dangerous types (e.g., JSP, PHP, WAR) to the server, leading to remote code execution. ScadaBR is a SCADA/HMI web application widely used in industrial control systems. This vulnerability is actively exploited in the wild and listed in CISA KEV.
MITRE ATT&CK
- Tactic
- Initial Access Execution Persistence
LogScale Detection Query
#event_simpleName IN (FileCreateInfo, ProcessRollup2, NetworkConnectIP4)
| $target_process_name = ProcessImageFileName
| $parent_process_name = ParentBaseFileName
// Detect web shell file creation in SCADA directories
| case {
$event_simpleName = "FileCreateInfo"
AND (TargetFileName LIKE "%scadabr%" OR TargetFileName LIKE "%openplc%" OR TargetFileName LIKE "%tomcat%webapps%")
AND (TargetFileName LIKE "%.jsp" OR TargetFileName LIKE "%.jspx" OR TargetFileName LIKE "%.php" OR TargetFileName LIKE "%.war" OR TargetFileName LIKE "%.sh" OR TargetFileName LIKE "%.aspx")
=> $detection = "WebShell Upload to SCADA Directory";
// Detect Java process spawning shells
$event_simpleName = "ProcessRollup2"
AND ($parent_process_name LIKE "%java%" OR $parent_process_name LIKE "%catalina%")
AND ($target_process_name IN ("cmd.exe", "powershell.exe", "bash", "sh", "python", "python3", "nc", "ncat", "wget", "curl", "whoami", "id"))
=> $detection = "Shell Spawned From Java SCADA Process";
// Detect suspicious outbound from Java processes (reverse shell)
$event_simpleName = "NetworkConnectIP4"
AND ($target_process_name LIKE "%java%")
AND RemotePort NOT IN ("80", "443", "8080", "8443", "1099")
=> $detection = "Suspicious Java Outbound Connection (Possible Reverse Shell)";
}
| $detection != null
| groupby([aid, ComputerName, UserName, $detection, TargetFileName, $target_process_name, $parent_process_name, RemoteAddressIP4, RemotePort])
| sort(timestamp, order=desc) CrowdStrike Falcon query detecting web shell uploads to ScadaBR/Tomcat directories, Java processes spawning command interpreters, and suspicious outbound connections from Java processes indicating reverse shell activity following CVE-2021-26828 exploitation.
Data Sources
Required Tables
False Positives & Tuning
- Authorized deployment of WAR applications to Tomcat by operations teams during change windows
- Legitimate ScadaBR customizations where engineers deploy custom JSP graphic views
- Java-based monitoring or agent software making outbound connections to non-standard ports for telemetry
- Automated update mechanisms for OpenPLC or ScadaBR that download and deploy new versions
Other platforms for CVE-2021-26828
Testing Methodology
Validate this detection against 4 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.
- Test 1Upload JSP Web Shell to ScadaBR Upload Endpoint
Expected signal: HTTP POST to /ScadaBR/upload.shtm with multipart form data containing .jsp file; Tomcat access log shows 200 response; file creation event for .jsp file in webapps directory
- Test 2Execute OS Command via Uploaded JSP Web Shell
Expected signal: Java process (Tomcat JVM) spawning child process for id, whoami, cat commands; Sysmon Event ID 1 with ParentImage containing java; process command line containing /etc/passwd
- Test 3Establish Reverse Shell from ScadaBR Server via Web Shell
Expected signal: Java process spawning bash with /dev/tcp redirect; outbound TCP connection from ScadaBR host to ATTACKER_IP:4444; network flow event with non-standard destination port from Java process
- Test 4Upload PHP Web Shell as Image File Bypass
Expected signal: POST request to upload endpoint with PHP file disguised as image; file creation event showing PHP content in webapps directory; Content-Type mismatch between declared image/jpeg and actual PHP content
Unlock Pro Content
Get the full detection package for CVE-2021-26828 including response playbook, investigation guide, and atomic red team tests.