Skip to main content
Meet us at Black Hat USA 2026— Las Vegas, August 1–6Book a Meeting
Mallory
CriticalCISA KEVExploited in the wildPublic exploit

Pre-auth OS Command Injection RCE in BeyondTrust Remote Support and Privileged Remote Access

IdentifiersCVE-2026-1731CWE-78· Improper Neutralization of Special…

CVE-2026-1731 is a critical pre-authentication remote code execution vulnerability in BeyondTrust Remote Support (RS) and certain older versions of BeyondTrust Privileged Remote Access (PRA). The flaw is described as an operating system command injection issue that can be triggered by sending specially crafted requests to the affected application, allowing arbitrary OS command execution in the context of the site user. No authentication or user interaction is required. Reported affected versions include BeyondTrust Remote Support 25.3.1 and earlier and Privileged Remote Access 24.3.4 and earlier. The issue was disclosed on 2026-02-06, and public reporting indicates it is a variant of CVE-2024-12356.

Share:
For your environment

Are you exposed to this one?

Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.

ANALYST BRIEF

Impact, mitigation & remediation

What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.

Impact

What an attacker gets, and what they’ve been doing with it.

Successful exploitation allows an unauthenticated remote attacker to execute arbitrary operating system commands on the vulnerable RS/PRA server as the site user. Given the role of these products as remote support and privileged access infrastructure, compromise can lead to full control of the affected appliance or host, unauthorized access, data theft, service disruption, deployment of backdoors or additional remote management tools, and in observed cases follow-on ransomware activity. Reporting also notes downstream risk to managed customer environments where the compromised BeyondTrust instance is trusted to administer endpoints.

Mitigation

If you can’t patch tonight, do this now.

If immediate patching is not possible, isolate or temporarily take affected RS/PRA portals offline, restrict access to trusted internal IP ranges or VPN-only access, and place the service behind compensating controls such as a WAF. Reporting specifically mentions monitoring and filtering traffic to the portal's /nw endpoint and related WebSocket traffic where feasible. Increase monitoring for suspicious child processes, unexpected admin account creation, unauthorized RMM tool deployment, and other indicators of compromise. Mitigation reduces exposure but does not remove the vulnerability or remediate prior compromise.

Remediation

Patch, then assume compromise.

Apply BeyondTrust's security fixes immediately. Reported fixed versions/patch paths include Remote Support 25.3.2 and later via patch BT26-02-RS, and Privileged Remote Access 25.1.1 and later via patch BT26-02-PRA. Systems on older unsupported branches should first be upgraded to a supported release and then patched. SaaS/cloud environments were reportedly remediated by BeyondTrust on 2026-02-02, but self-hosted/on-premises deployments require administrator action, especially where automatic updates are not enabled. Because exploitation has been observed in the wild, patching should be paired with compromise assessment and incident response review.
PUBLIC EXPLOITS

Exploits

4 valid exploits after Mallory filtered fakes, detection scripts, and README-only repos (6 hidden).

VALID 4 / 10 TOTALView more in app
CVE-2026-1731-PoCMaturityPoCVerified exploit

This repository is a small Python proof-of-concept exploit for BeyondTrust Remote Support CVE-2026-1731, described in the README as a pre-auth RCE. The repository contains only two files: a README with usage notes and a single executable script, poc.py, which is the main entry point. The exploit workflow is straightforward: it loads target hosts from d0mains.txt, queries each host at /get_portal_info over HTTPS first and HTTP second, and parses the returned content for a company identifier using the regex company=([^;]+). That extracted value is then inserted into an X-Ns-Company header for a WebSocket connection to wss://<target>:443/nw. The script uses an external websocat binary, launched through /bin/bash, to send a crafted multi-line message containing hax[$(<payload>)] where the default payload is nslookup XXXXXXXXXXXXXXXXXXX.oast.fun. This indicates the exploit is attempting command injection leading to pre-auth remote code execution, with success verified through an out-of-band DNS lookup. Structurally, the code is minimal but functional: start_audit() orchestrates target iteration, get_meta() performs endpoint discovery, grab_id() extracts the organization/company token, trigger_ws() builds and sends the malicious WebSocket request, and load_list() reads the target file. The script disables TLS verification warnings and uses requests for HTTP(S) discovery, asyncio for orchestration, and subprocess to invoke websocat. Because it includes an actual command payload and performs exploitation rather than mere detection, it is best classified as an operational PoC rather than a simple scanner.

zensheIIDisclosed Mar 22, 2026pythonmarkdownnetworkwebsocket
CVE-2026-1731MaturityPoCVerified exploit

This repository is a small standalone Python exploit project with 2 files: a README and a single executable script, exploit.py. It targets CVE-2026-1731, described as a pre-auth command injection / RCE issue in BeyondTrust Remote Support and Privileged Remote Access. The exploit is not part of a larger framework. Repository structure and purpose: - README.md: documents the vulnerability, affected versions, setup steps, example payloads, and expected usage flow. - exploit.py: main exploit implementation and likely sole entry point. Exploit workflow in the Python script: 1. Checks local dependencies, especially the presence of the external websocat binary and the requests Python module. 2. Reads targets from domains.txt. 3. For each target, probes both HTTPS and HTTP versions of /get_portal_info. 4. Parses the response body to extract a company identifier using regex patterns. 5. Performs a quick vulnerability check (the code is truncated, but the script clearly includes such a step). 6. Launches a WebSocket-based exploitation action using asyncio and websocat to deliver the attacker-controlled command. 7. Processes multiple targets concurrently with a ThreadPoolExecutor. Main exploit capabilities: - Unauthenticated network targeting of multiple hosts. - Automatic target probing over HTTP/HTTPS. - Extraction of target-specific metadata needed for exploitation. - WebSocket-driven command execution path. - Configurable payload via the CMD variable. - Supports blind OOB verification, exfiltration, or reverse shell style commands depending on operator customization. Notable implementation details: - SSL verification is disabled, which helps against self-signed appliance certificates. - Default payload is a DNS lookup to an OAST domain, indicating the author expects blind RCE validation. - The script includes operator confirmation before launching attacks and basic colored console output. - Because exploitation depends on an external binary and target-specific WebSocket behavior, this is best classified as an operational PoC rather than a highly polished weaponized tool. Overall, this is a real exploit script intended to achieve pre-auth remote command execution against vulnerable BeyondTrust RS/PRA deployments, not merely a detector or README-only repository.

LutfifakeeXoneDisclosed Mar 20, 2026pythonmarkdownnetworkwebsocketpre-auth remote command injection
CVE-2026-1731MaturityPoCVerified exploit

Repository is a Rust-based, concurrent “Blind RCE PoC” for CVE-2026-1731 targeting BeyondTrust Privileged Remote Access (<= 24.3.4) and BeyondTrust Remote Support (<= 25.3.1) per README. Structure: - Cargo.toml: Rust project config; uses tokio async runtime, reqwest for HTTP, tokio-tungstenite for WebSockets, native-tls for TLS, clap for CLI, tracing for logging. - src/main.rs: CLI parsing and orchestration. Reads targets from a file (default `targets.txt`), normalizes to https:// if no scheme, deduplicates by scheme/host/port, and runs exploitation concurrently (default 50). Initializes a reqwest client with invalid certs accepted and a fixed 10s timeout. - src/target.rs: Implements Target logic. 1) Recon/priming step: HTTP GET to `/get_portal_info` and regex extraction of `company=([^;]+)` from the response body. This “company” value is stored and used as a required identifier. 2) Exploitation step: Opens a raw TCP connection to host:port (TLS-wrapped if scheme is https), performs a manual WebSocket handshake to `GET /nw` including headers `X-Ns-Company: <company>` and `Sec-WebSocket-Protocol: ingredi support desk customer thin`. After receiving `101 Switching Protocols`, it sends a crafted binary WebSocket message containing `hax[$(<command>)]...` which is intended to trigger command execution on the server via command substitution. The tool then reads and prints any returned WebSocket data until close/error. Overall capability: network-based remote command execution against vulnerable servers, with a preliminary HTTP request used to extract a required tenant/company identifier before sending the WebSocket payload.

jakubie07Disclosed Feb 18, 2026rustnetwork
CVE-2026-1731MaturityPoCVerified exploit

Repository purpose: a Python proof-of-concept exploit for CVE-2026-1731 (BeyondTrust RS/PRA) achieving pre-auth remote command execution via a WebSocket-reachable endpoint. Structure: - README.md: explains the vulnerability mechanism (bash arithmetic/expression evaluation on attacker-controlled remoteVersion during WebSocket handshake), setup steps, and how to set the command payload. - DISCLAIMER.md: legal/ethical use disclaimer. - exploit.py: the actual exploit automation. Exploit flow (exploit.py): 1) Reads targets from `domains.txt`. 2) For each domain, requests `/get_portal_info` over HTTP then HTTPS (3s timeout, TLS verification disabled) and, on HTTP 200, parses `company=...` from the response. 3) Builds a command string that pipes a crafted multi-line payload into `websocat` connecting to `wss://<domain>:443/nw` using the subprotocol string `ingredi support desk customer thin` and header `X-Ns-Company: <company>`. 4) The crafted payload embeds `hax[$(CMD)]0`-style bash expression injection (implemented as `hax[\$({CMD})]`) intended to trigger command execution on the server during evaluation. 5) Runs the websocat invocation via `bash -c` and prints stdout/stderr. Key capabilities: - Pre-auth RCE against the BeyondTrust WebSocket service. - Batch targeting via a domains list. - OAST-friendly verification by default (nslookup to an oast.fun domain), with user-configurable command via the `CMD` constant. Notable operational details/risks: - Uses `subprocess.Popen(["bash","-c", ...])` to run a shell pipeline locally; `CMD` is interpolated into that string (intended for operator control). - Requires `websocat` present locally (either in the same directory as `./websocat` or adjusted by the user). - The script is exploitative (not merely detection) because it actively sends the injection payload to the WebSocket endpoint.

win3zzDisclosed Feb 11, 2026pythonmarkdownnetwork
EXPOSURE SURFACE

Affected products & vendors

Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.

VendorProductType
BeyondtrustPrivileged Remote Accessapplication
BeyondtrustRemote Supportapplication

Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.

What this page doesn’t show

The version that knows your environment.

This page is what’s public. Mallory adds the parts that aren’t: which of your assets are affected, which adversaries are exploiting it right now, which detections to deploy, and what to do tonight.
Exposure mapping

Query your assets running an affected version, and investigate the blast radius.

Threat actor evidence10

Every observed campaign linking this CVE to a named adversary.

Associated malware34

Malware families riding this exploit, with evidence and IOCs.

Detection signatures2

YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.

Vendor-by-vendor mapping

Cross-references every affected SKU, including bundled OEM variants.

Social activity157

Community discussion across Reddit, Mastodon, and other social sources.