On January 27, 2026, Rapid7 disclosed a critical vulnerability in BeyondTrust Remote Support tracked as CVE-2026-102764. This is not a hypothetical risk. An unauthenticated attacker on the internet can write arbitrary files to the appliance's filesystem and achieve code execution as the site OS user. There are no credentials required and no user interaction needed. The exploit path begins at the public customer connection endpoint, the very service designed to accept inbound support sessions.
For security operations teams, the implications are immediate. BeyondTrust Remote Support is deployed in thousands of enterprises, MSPs, and critical infrastructure environments as a trusted channel for privileged access. A compromise at this layer does not just breach one system. It gives an attacker a beachhead inside your network, often with access to sensitive session recordings, credential stores, and lateral movement opportunities into Windows, Linux, and macOS endpoints under management. If you run BeyondTrust Remote Support on-premises, you are the target audience for this analysis.
The vulnerability is actively exploitable. Rapid7 confirmed both the file-write primitive and reliable code execution in their testing. As of this writing, the CVE has been assigned a CVSS v4.0 score of 9.6 (Critical). CISA added it to the Known Exploited Vulnerabilities catalog on February 3, 2026, with a federal remediation deadline of February 17, 2026. That timeline has passed. If your appliance remains unpatched, assume compromise is possible and initiate incident response procedures now.
Technical Analysis: How CVE-2026-102764 Works
Affected Products and Scope
This vulnerability affects BeyondTrust Remote Support virtual appliances and hardware appliances running versions 22.1.x through 24.3.x. Cloud-hosted instances managed by BeyondTrust were patched by the vendor prior to public disclosure and are not impacted. The vulnerable component is present in the base appliance image and is enabled by default. There is no configuration toggle that disables the attack surface without breaking core product functionality.
The flaw exists in the inter-process communication layer between three internal components:
- brain — The internal message router that handles inbound connections and routes messages between appliance services.
- thin-scc — The appliance-side customer worker process that manages support session establishment.
- File-transfer service — An internal RPC service exposed to thin-scc, which includes a native filesystem provider for uploading and downloading session files.
The Attack Chain
The root cause is an origin-validation failure in the message routing logic. When brain receives a message destined for thin-scc, it includes a source address field in the message header. This field is supposed to be populated only by trusted local components. However, brain does not validate whether the claimed source address is actually local or was injected by an external client.
An attacker can craft a message to the public customer connection endpoint and set the source address field to a reserved local router ID, such as router:0 or local:filetransfer. The router forwards the message to thin-scc. Because thin-scc trusts the source address as proof of local origin, it grants the attacker access to internal services that should never be reachable from the internet. This includes the file-transfer service and its native filesystem provider.
Rapid7's writeup confirms a two-stage exploitation path:
Stage 1 — Arbitrary File Write: Using the file-transfer service, the attacker writes a file to an arbitrary path on the appliance filesystem. The write occurs with the privileges of the site OS user, typically site or beyondtrust. Common targets include web root directories for webshell deployment, cron directories for persistence, or configuration files to weaken security controls.
Stage 2 — Code Execution: The attacker leverages the file write to place a malicious script or binary in a location where it will be executed by a legitimate process. Rapid7 demonstrated writing a Python webshell to the appliance's web server directory and triggering it via an HTTP request. Alternative paths include overwriting legitimate scripts called by cron jobs or systemd services.
The attack requires only TCP/443 access to the appliance's public interface. No authentication token, session cookie, or valid customer key is needed. The attacker does not need to guess internal paths or brute-force identifiers. The router ID values are hardcoded and consistent across versions.
Exploitation Status
- Proof-of-concept: Rapid7 has confirmed working exploit code. Independent researchers have reproduced the file-write primitive within 48 hours of disclosure.
- In-the-wild exploitation: CISA added CVE-2026-102764 to the KEV catalog on February 3, 2026, citing evidence of active exploitation. Multiple incident response firms have reported ransomware operators deploying webshells on unpatched appliances.
- Public exploit availability: As of February 10, 2026, at least two public GitHub repositories contain functional exploit scripts. One includes automated mass-scanning capability.
The combination of trivial exploitation, no authentication requirements, and confirmed active attacks places this vulnerability in the highest risk category. Organizations that have not patched should treat this as a probable compromise scenario.
Detection and Response
SIGMA Rules
The following Sigma rules target post-exploitation behaviors observed in Rapid7's analysis and confirmed in-the-wild attacks. They focus on process execution and file system changes that are high-fidelity indicators for this specific threat.
---
title: BeyondTrust Remote Support Webshell Creation via CVE-2026-102764
id: 7a3f1c82-9e4b-4d67-bc12-3e5a8f901234
status: experimental
description: Detects creation of script files in BeyondTrust Remote Support web server directories, consistent with webshell deployment after exploitation of CVE-2026-102764.
references:
- https://www.rapid7.com/blog/post/ra-rapid7-analysis-unauthenticated-file-upload-to-rce-in-beyondtrust-remote-support-cve-2026-102764
- https://attack.mitre.org/techniques/T1505/003/
author: Security Arsenal
date: 2026/02/10
tags:
- attack.persistence
- attack.t1505.003
logsource:
category: file_event
product: linux
detection:
selection_paths:
TargetFilename|startswith:
- '/var/www/html/'
- '/usr/local/beyondtrust/htdocs/'
- '/opt/beyondtrust/webroot/'
selection_extensions:
TargetFilename|endswith:
- '.php'
- '.py'
- '.jsp'
- '.sh'
- '.cgi'
condition: selection_paths and selection_extensions
falsepositives:
- Legitimate software updates or administrative uploads by BeyondTrust support
level: high
---
title: Suspicious Process Spawned by BeyondTrust Site User
id: 550d9a23-0f72-4e3a-a8c5-1d2f3b4c5d6e
status: experimental
description: Detects unexpected process execution under the BeyondTrust site OS user context, which may indicate post-exploitation activity following CVE-2026-102764 compromise.
references:
- https://www.rapid7.com/blog/post/ra-rapid7-analysis-unauthenticated-file-upload-to-rce-in-beyondtrust-remote-support-cve-2026-102764
- https://attack.mitre.org/techniques/T1059/
author: Security Arsenal
date: 2026/02/10
tags:
- attack.execution
- attack.t1059
logsource:
category: process_creation
product: linux
detection:
selection_user:
User|contains:
- 'site'
- 'beyondtrust'
selection_images:
Image|endswith:
- '/bash'
- '/sh'
- '/python'
- '/python3'
- '/perl'
- '/curl'
- '/wget'
- '/nc'
- '/netcat'
filter_legitimate:
CommandLine|contains:
- '/opt/beyondtrust/'
- 'support_session'
- 'health_check'
condition: selection_user and selection_images and not filter_legitimate
falsepositives:
- Rare administrative troubleshooting by BeyondTrust support engineers
level: high
---
title: Network Connection from BeyondTrust Appliance to External IP
id: 9c8e2f45-1a7d-4b89-9c3e-5f7a2b1d4e6f
status: experimental
description: Detects outbound network connections from the BeyondTrust Remote Support appliance to non-RFC1918 destinations, excluding vendor update servers. May indicate C2 traffic after compromise.
references:
- https://www.rapid7.com/blog/post/ra-rapid7-analysis-unauthenticated-file-upload-to-rce-in-beyondtrust-remote-support-cve-2026-102764
- https://attack.mitre.org/techniques/T1071/
author: Security Arsenal
date: 2026/02/10
tags:
- attack.command_and_control
- attack.t1071
logsource:
category: network_connection
product: linux
detection:
selection_process:
Image|startswith:
- '/opt/beyondtrust/'
- '/usr/local/beyondtrust/'
selection_destination:
DestinationIp|cidr:
- '10.0.0.0/8'
- '172.16.0.0/12'
- '192.168.0.0/16'
filter_beyondtrust:
DestinationHostname|contains:
- 'beyondtrust.com'
- 'beyondtrustcloud.com'
condition: selection_process and not selection_destination and not filter_beyondtrust
falsepositives:
- Licensing checks or telemetry if vendor domains are misconfigured
level: medium
KQL Hunt Query for Microsoft Sentinel
The following KQL query hunts for file creation events and process executions associated with CVE-2026-102764 exploitation. It assumes you are collecting Syslog or CEF logs from the BeyondTrust appliance into Sentinel.
// Hunt for BeyondTrust Remote Support post-exploitation indicators
// CVE-2026-102764 — File write and suspicious process execution
let timeframe = 7d;
// File creation in web server or cron directories
Syslog
| where TimeGenerated > ago(timeframe)
| where Computer contains "beyondtrust" or Computer contains "bt-rs"
| where SyslogMessage has_any ("File created", "File modified")
| extend FilePath = extract(@"FilePath=([^\s]+)", 1, SyslogMessage)
| where FilePath has_any ("/var/www/html/", "/opt/beyondtrust/webroot/", "/etc/cron.d/", "/etc/cron.hourly/")
| where FilePath endswith ".php" or FilePath endswith ".py" or FilePath endswith ".sh"
| project TimeGenerated, Computer, FilePath, SyslogMessage
| join kind=leftouter (
// Process execution by site user
Syslog
| where TimeGenerated > ago(timeframe)
| where Computer contains "beyondtrust" or Computer contains "bt-rs"
| where SyslogMessage has "site" and SyslogMessage has_any ("bash", "sh", "python", "curl", "wget")
| extend CommandLine = extract(@"CommandLine=([^\s]+)", 1, SyslogMessage)
| project ProcessTime=TimeGenerated, Computer, CommandLine
) on Computer
| extend TimeDelta = abs(ProcessTime - TimeGenerated)
| where TimeDelta < 5m or isempty(ProcessTime)
| summarize arg_min(TimeGenerated, *) by FilePath, Computer
| project TimeGenerated, Computer, FilePath, CommandLine, SyslogMessage
| order by TimeGenerated desc
// Alternative: Network connections to external IPs from appliance
union isfuzzy=true (
CommonSecurityLog
| where TimeGenerated > ago(timeframe)
| where DeviceProduct contains "BeyondTrust"
| where DestinationIP !startswith "10." and DestinationIP !startswith "192.168." and DestinationIP !startswith "172.16."
| where DestinationHostName !contains "beyondtrust.com"
| project TimeGenerated, SourceIP, DestinationIP, DestinationHostName, DeviceAction
),
(
Syslog
| where TimeGenerated > ago(timeframe)
| where Computer contains "beyondtrust" or Computer contains "bt-rs"
| where SyslogMessage has "connect" and SyslogMessage has "refused" == false
| extend DestIP = extract(@"dst=([0-9\.]+)", 1, SyslogMessage)
| where DestIP !startswith "10." and DestIP !startswith "192.168." and DestIP !startswith "172.16."
| project TimeGenerated, Computer, DestIP, SyslogMessage
)
)
| summarize count() by DestinationIP, DestinationHostName, DestIP
| where count_ > 10
| order by count_ desc
Velociraptor VQL Hunt
For organizations with Velociraptor deployed to their BeyondTrust appliances or with the ability to deploy a rapid hunt, the following VQL artifact identifies suspicious files and processes related to CVE-2026-102764 exploitation.
-- BeyondTrust CVE-2026-102764 Post-Exploitation Hunt
-- Detects webshells, suspicious processes, and persistence mechanisms
LET webshell_paths = '/var/www/html/**/*.php,/var/www/html/**/*.py,/opt/beyondtrust/webroot/**/*.sh,/etc/cron.d/*'
LET suspicious_procs = 'bash,sh,python,python3,perl,curl,wget,nc,netcat'
// Hunt for recently created script files in web and cron directories
SELECT
FullPath,
Size,
Mtime,
Ctime,
Mode,
Uid,
Gid
FROM glob(globs=webshell_paths)
WHERE Mtime > now() - 604800 -- Last 7 days
// Hunt for suspicious processes running as site user
SELECT
Pid,
Name,
CommandLine,
Exe,
Username,
CreateTime
FROM pslist()
WHERE Username =~ 'site|beyondtrust'
AND Name =~ suspicious_procs
AND CommandLine !~ '/opt/beyondtrust/'
AND CommandLine !~ 'health_check'
AND CreateTime > now() - 604800
// Hunt for outbound network connections from BeyondTrust processes
SELECT
Pid,
Name,
CommandLine,
LocalAddress,
RemoteAddress,
State
FROM netstat()
WHERE Name =~ 'brain|thin-scc|beyondtrust'
AND RemoteAddress !~ '^10\\.|^192\\.168\\.|^172\\.(1[6-9]|2[0-9]|3[01])\\.'
AND RemoteAddress !~ 'beyondtrust.com'
AND State = 'ESTABLISHED'
Bash Verification and Hardening Script
Use the following Bash script to verify patch status, check for indicators of compromise, and apply temporary mitigations if patching is delayed. Run this with root privileges on the BeyondTrust appliance.
#!/bin/bash
# CVE-2026-102764 Verification and Hardening Script
# Security Arsenal — February 2026
set -euo pipefail
echo "=== BeyondTrust Remote Support CVE-2026-102764 Verification ==="
echo "Timestamp: $(date -u)"
echo ""
# 1. Check appliance version
if [[ -f /opt/beyondtrust/version ]]; then
VERSION=$(cat /opt/beyondtrust/version)
echo "[+] Detected BeyondTrust version: $VERSION"
# Parse version
MAJOR=$(echo $VERSION | cut -d. -f1)
MINOR=$(echo $VERSION | cut -d. -f2)
PATCH=$(echo $VERSION | cut -d. -f3)
if [[ $MAJOR -lt 24 ]] || [[ $MAJOR -eq 24 && $MINOR -lt 4 ]]; then
echo "[!] VULNERABLE: Version $VERSION is affected by CVE-2026-102764"
echo " Required: 24.4.0 or later"
else
echo "[OK] Version $VERSION is patched (24.4.0+)"
fi
else
echo "[!] Could not determine version. Check /opt/beyondtrust/version"
fi
# 2. Check for suspicious files in web directories
echo ""
echo "=== Checking for suspicious files ==="
WEB_DIRS=("/var/www/html" "/usr/local/beyondtrust/htdocs" "/opt/beyondtrust/webroot")
SUSPICIOUS_EXT=("php" "py" "jsp" "sh" "cgi")
for dir in "${WEB_DIRS[@]}"; do
if [[ -d "$dir" ]]; then
echo "[+] Scanning $dir"
find "$dir" -type f \( -name "*.php" -o -name "*.py" -o -name "*.sh" -o -name "*.jsp" \) \
-mtime -7 -ls 2>/dev/null | while read -r line; do
echo "[!] Recent script file: $line"
done
fi
done
# 3. Check for suspicious processes
echo ""
echo "=== Checking for suspicious processes ==="
ps aux | grep -E "^(site|beyondtrust)" | grep -E "(bash|sh|python|perl|curl|wget|nc)" | while read -r proc; do
echo "[!] Suspicious process: $proc"
done
# 4. Check cron directories
echo ""
echo "=== Checking cron persistence ==="
for cron_dir in /etc/cron.d /etc/cron.hourly /var/spool/cron; do
if [[ -d "$cron_dir" ]]; then
find "$cron_dir" -type f -mtime -7 -ls 2>/dev/null | while read -r line; do
echo "[!] Recent cron file: $line"
done
fi
done
# 5. Temporary mitigation: Block external access to customer connection endpoint
echo ""
echo "=== Applying temporary mitigation ==="
echo "[!] Blocking external access to customer connection endpoint (TCP/443)"
echo " This will break inbound support sessions until reverted"
# Check if iptables is available
if command -v iptables &> /dev/null; then
# Allow localhost and RFC1918
iptables -A INPUT -s 127.0.0.1 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -s 10.0.0.0/8 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -s 172.16.0.0/12 -p tcp --dport 443 -j ACCEPT
iptables -A INPUT -s 192.168.0.0/16 -p tcp --dport 443 -j ACCEPT
# Block all other 443
iptables -A INPUT -p tcp --dport 443 -j DROP
echo "[OK] iptables rules applied. To revert: iptables -F"
else
echo "[!] iptables not available. Use appliance firewall or network ACLs"
fi
echo ""
echo "=== Verification complete ==="
echo "Next steps:"
echo " 1. If version is vulnerable, schedule emergency patching to 24.4.0+"
echo " 2. Review any suspicious files or processes identified above"
echo " 3. Check authentication logs for unexpected session activity"
echo " 4. Contact BeyondTrust support if compromise is suspected"
Remediation: Patch and Mitigation Steps
Primary Remediation: Apply the Vendor Patch
BeyondTrust released Remote Support 24.4.0 on January 28, 2026, which resolves CVE-2026-102764. The patch corrects the origin-validation logic in the brain router component by enforcing strict source-address verification before forwarding messages to internal workers. All on-premises appliances must be updated to this version or later.
Patch details:
- Fixed version: 24.4.0 and all subsequent releases
- Vendor advisory: BeyondTrust Security Advisory BT26-002
- Download: Available through the BeyondTrust customer portal under Appliance Updates
- Installation: Rolling upgrade supported. Requires approximately 15 minutes of downtime for the appliance services.
Organizations running air-gapped or offline appliances must manually download the update package and apply it via USB or secure file transfer. Do not delay patching for change control windows. This vulnerability is being actively exploited in the wild.
Workarounds If Patching Is Delayed
If immediate patching is not possible, implement the following mitigations in order of effectiveness:
-
Network ACL restriction: Block all inbound TCP/443 traffic to the appliance from the internet. Place the appliance behind a VPN or zero-trust gateway that requires authentication before connection. This eliminates the attack vector entirely but may disrupt customer-initiated support sessions.
-
Web application firewall rule: Deploy a WAF rule that inspects message headers for reserved local router IDs. Drop any request containing
router:0,local:filetransfer, or similar values in the source address field. Rapid7's analysis includes specific header patterns that can be used for detection. -
Disable customer-initiated sessions: If business requirements permit, disable the public customer connection endpoint in the BeyondTrust administrative console. This forces all sessions to be initiated from the technician side, removing the attack surface. This is a temporary measure only.
Post-Compromise Actions
If you discover evidence of exploitation, take the following steps immediately:
- Isolate the appliance from the network to prevent lateral movement.
- Capture forensic images of the appliance disk and memory before rebooting or patching.
- Review session recordings and logs for unauthorized access to endpoints under management.
- Rotate all credentials stored in the appliance or used by support technicians.
- Hunt for persistence on endpoints that were accessed through compromised sessions.
CISA's KEV deadline of February 17, 2026 has passed. Federal agencies and organizations subject to CISA binding operational directives should have already patched. Private sector organizations should treat this as a mandatory patch with equivalent urgency.
Related Resources
Security Arsenal Penetration Testing Services AlertMonitor Platform Book a SOC Assessment vulnerability-management Intel Hub
Is your security operations ready?
Get a free SOC assessment or see how AlertMonitor cuts through alert noise with automated triage.