Bring Your Own EDR Attack Turns SentinelOne Into PPL-Protected Trojan Horse to Shield Malware

Bring Your Own EDR Attack Turns SentinelOne Into (TL-2026-2017), also tracked as BYOEDR, is a high-severity software vulnerability, first published 2026-08-14. It has no confirmed attribution, affects SentinelOne SentinelOne Agent (Windows), maps to 9 MITRE ATT&CK techniques (T1027, T1036.005, T1055.002), and is covered by 9 detection rules and 9 indicators of compromise.

Key facts for TL-2026-2017

Threat ID
TL-2026-2017
Also known as
BYOEDR, Bring-Your-Own-EDR
Severity
HIGH
Status
PATCHED
Category
VULNERABILITY
First published
2026-08-14
Last reviewed
2026-08-14
Attribution confidence
LOW
Motivation
UNKNOWN
Detection rules
9
Indicators of compromise
9

Malware and tooling in Bring Your Own EDR Attack Turns SentinelOne Into

Malware and tooling: Custom Python overlay-section patcher, InstEd, PE_TO_SHELLCODE, Procmon, WinDbg

Akamai researcher Shahak Morag disclosed 'Bring Your Own EDR' (BYOEDR) at DEF CON 34: an administrator-level attacker abuses SentinelOne's SentinelHelper COM interface (an unvalidated Dump method), native Windows APIs, and the agent's own installer/tamper-protection logic to dump secrets from Windows Protected Process Light (PPL) processes and execute unsigned code inside Microsoft Defender's (MsMpEng.exe) protected context. SentinelOne fixed the root cause in Agent 26.1.1.

How Bring Your Own EDR Attack Turns SentinelOne Into works

At DEF CON 34 (Las Vegas, August 7, 2026), Akamai security researcher Shahak Morag presented "Bring-Your-Own-EDR – Breaking Windows Process Protection to build EDR-Protected Malware," published the same day as an Akamai blog post, 'Bring Your Own EDR: How to Turn a Commercial EDR into a Trojan Horse.' The research shows that SentinelOne exposes three local COM objects -- SentinelHelper.1, SentinelUI.1, and SentinelAgent.1. SentinelHelper.1 alone exposes a wide method surface: `Dump(uint processId, string userDumpPath, string kernelDumpPath)`, `GetAgentStatusJSON`, `ApplyConfig`, `GetConfig`, `SetConfig`, `SetProtectionState`, `UnprotectPPL`, `Stop`, `GetDumper`, `GetServiceToken`, and `LiveKernelDump`. Of these, `Dump` -- designed for use by the legitimate DiagnosticsCollector.ps1 script -- is the outlier: unlike SentinelHelper's other methods, it checks only that the caller holds administrator privileges, not the caller's file-system location. That gap lets any local-admin process invoke Dump against Windows Protected Process Light (PPL) targets signed at the `PsProtectedSignerAntimalware-Light` signer level, including SentinelOne's own SentinelAgent.exe and Microsoft Defender's MsMpEng.exe.

The full exploit chain has four phases. First, the attacker dumps a PPL process's memory via SentinelHelper.Dump, using `CoSetProxyBlanket` to configure the COM security/impersonation level needed to make the call succeed. Second, the dump is analyzed in WinDbg to recover process-specific COM secrets -- `combase!CProcessSecret::s_guidOle32Secret` (observed by Akamai as `{6c8844c0-0cd1-7a62-6f72-57d03fe54d6a}` in their proof-of-concept run) and the `g_pMTAEmptyCtx` pointer -- which, combined with the `CStdStubBuffer_AddRef` primitive, grant an arbitrary memory-read/injection primitive inside the PPL address space. This step builds directly on Slowerzs' prior PPLSystem research (github.com/Slowerzs/PPLSystem, blog.slowerzs.net/posts/pplsystem/, May 2024), which had already shown how to extract a PPL process's COM secret and context to remotely invoke `IRundown::DoCallback` inside the process, but stopped short of achieving arbitrary code execution; Akamai's contribution is extending that primitive into full shellcode execution. Third, the attacker reflectively maps an unsigned payload into the protected process using `NtMapViewOfSection`, working around several practical obstacles: the mapped entry page defaults to PAGE_READONLY (fixed via `NtProtectVirtualMemory`, flipping it to PAGE_EXECUTE_READWRITE), the PE-to-shellcode conversion tool (PE_TO_SHELLCODE) places its relocation-fixing code outside the mapped PE sections (worked around with a custom Python script that adds a `.overlay` section as an 8th PE section carrying the relocation shellcode), and relocation requires all sections to be marked RWX (characteristics `0xE0000020`, verified copy-on-write via WinDbg's `!vprot`) so the fixup code can rewrite them before the loader flips permissions back. The payload is statically compiled so it does not pull in unsigned runtime DLLs (e.g., vcruntime140.dll), which PPL rejects. Fourth, `NtCreateThreadEx` starts a thread at the mapped shellcode, achieving unsigned code execution inside the PPL boundary -- effectively subverting the code-signing enforcement PPL exists to guarantee.

Akamai also documented two complementary, non-memory-corruption abuses of SentinelOne's own installer and self-protection logic. The Windows MSI installer's registration flow can be tricked into completing a non-functional install: the installer extracts a temporary validation DLL, calls it, and deletes it, and Akamai used WinDbg plus Process Monitor to intercept that DLL and reverse-engineer the Base64-encoded JSON site-token format it expects (`{"url": "http://127.0.0.1:8888/", "site_key": "abc123xyz"}`), without any real management server; newer versions add a check against a `/api/v1.6/gw-overall-status` HTTP endpoint that a mock loopback server can also satisfy. The resulting agent reports a 'SECURE' status while providing no real protection. Separately, an attacker can run `sentinelctl.exe unprotect` to disable tamper protection, stage malware inside SentinelOne's own install directory, and re-run `sentinelctl.exe protect` (SetProtectionState/UnprotectPPL are the corresponding COM-exposed equivalents), causing the malware to inherit both PPL and SentinelOne's anti-tamper protection -- including a `PROCESS_QUERY_LIMITED_INFORMATION`-only access restriction against later tampering attempts -- turning the trusted EDR into a shield for the very payload it should detect. Akamai also queried the SentinelAgent COM object's `GetAgentStatusJSON` method to learn the configured management hostname, then redirected it to 127.0.0.1 via the local hosts file, silently cutting off cloud telemetry while the console still shows a protected status. Akamai explicitly linked the installer-abuse pattern to SafeBreach researcher Shmuel Cohen's 2023/2024 Black Hat Asia research weaponizing Palo Alto Networks Cortex XDR (safebreach.com/blog/dark-side-of-edr-offensive-tool/ and the Cortex-specific bypass writeup), which showed the same class of trusted-installer/self-protection abuse against a different EDR vendor.

Exploitation requires existing local administrator access -- no kernel exploit, signed vulnerable driver, or memory-corruption vulnerability against SentinelOne itself is needed. No CVE has been assigned. SentinelOne shipped Agent 26.1.1, which addresses the reported caller-validation gap in SentinelHelper.Dump, following Akamai's responsible disclosure; vulnerable versions run through 26.1.0, and the fix was already generally available at the time of public disclosure.

MITRE ATT&CK techniques used in TL-2026-2017

Defense Evasion

T1027 Obfuscated Files or Information; T1036.005 Match Legitimate Resource Name or Location; T1055.002 Process Injection: Portable Executable Injection; T1620 Reflective Code Loading

Discovery

T1057 Process Discovery; T1518.001 Software Discovery: Security Software Discovery

Execution

T1106 Native API

defense-impairment

T1553.006 Subvert Trust Controls: Code Signing Policy Modification; T1685 Disable or Modify Tools

Affected products and versions in Bring Your Own EDR Attack Turns SentinelOne Into

  • SentinelOne — SentinelOne Agent (Windows)
    Vulnerable versions: through 26.1.0
    Fixed in: 26.1.1 and later

Remediation for Bring Your Own EDR Attack Turns SentinelOne Into

Patches

  • SentinelOne Agent 26.1.1

Immediate actions

  • Upgrade SentinelOne Agent to version 26.1.1 or later on all endpoints (vulnerable range: through 26.1.0)
  • Restrict and tightly audit local administrator rights on endpoints running SentinelOne, since the entire chain requires existing admin access
  • Alert on sentinelctl.exe unprotect / sentinelctl.exe protect tamper-protection toggles outside change windows, and on the equivalent SentinelHelper COM calls (SetProtectionState, UnprotectPPL)
  • Monitor for anomalous local activation of the SentinelHelper.1, SentinelUI.1, and SentinelAgent.1 COM objects by non-SentinelOne processes, particularly calls to Dump, GetDumper, LiveKernelDump, and GetServiceToken

Workarounds

  • Restrict local administrator rights on SentinelOne-protected endpoints until upgraded to Agent 26.1.1

Longer-term hardening

  • Deploy monitoring for native API (Nt*) call sequences consistent with reflective code loading (NtMapViewOfSection + NtProtectVirtualMemory + NtCreateThreadEx) against protected/PPL processes
  • Enforce least-privilege and just-in-time administrative access to shrink the standing local-admin abuse surface this technique depends on
  • Monitor local hosts-file modifications and unexpected redirection of EDR/AV management-console hostnames
  • Review EDR installer registration flows for validation gaps that allow fabricated management-server tokens to complete installation, and validate COM interface callers by binary path/signature, not privilege level alone

Weaknesses (CWE) in Bring Your Own EDR Attack Turns SentinelOne Into

CWE-346, CWE-269, CWE-345

Timeline of Bring Your Own EDR Attack Turns SentinelOne Into

  • Researcher Slowerzs published PPLSystem, demonstrating extraction of a PPL process's COM secret/context to remotely invoke IRundown::DoCallback inside the process -- the foundational primitive Akamai's BYOEDR research later extended into full unsigned code execution.
  • SentinelOne Agent 26.1.1, which remediates the SentinelHelper.Dump caller-validation gap, was already generally available at the time of public disclosure per Akamai's responsible-disclosure timeline.
  • The PoC chain was demonstrated executing unsigned code inside Microsoft Defender's PPL-protected MsMpEng.exe process (and SentinelOne's own SentinelAgent.exe) using NtMapViewOfSection, NtProtectVirtualMemory, and NtCreateThreadEx to reflectively map and run a statically-linked payload, after extracting a live COM secret (observed value {6c8844c0-0cd1-7a62-6f72-57d03fe54d6a}) via WinDbg.
  • Akamai published the technical write-up "Bring Your Own EDR: How to Turn a Commercial EDR into a Trojan Horse," detailing the SentinelHelper COM abuse, PPL injection chain, and installer/tamper-protection abuse.
  • Akamai researcher Shahak Morag presented "Bring-Your-Own-EDR – Breaking Windows Process Protection to build EDR-Protected Malware" at DEF CON 34 (LVCC, Las Vegas), publicly demonstrating the full SentinelOne PPL-bypass chain.
  • Akamai researchers identified three exposed SentinelOne COM objects (SentinelHelper.1, SentinelUI.1, SentinelAgent.1); SentinelHelper's Dump method was found to lack the caller-path validation enforced on its other methods (ApplyConfig, GetConfig, SetConfig, SetProtectionState, UnprotectPPL, Stop, GetDumper, GetServiceToken, LiveKernelDump).
  • GBHackers independently corroborated the Akamai research, confirming the SentinelOne Agent 26.1.1 fix and the DEF CON 34 attribution.
  • Cyber Security News published coverage of the BYOEDR research, corroborating the SentinelHelper Dump abuse and PPL bypass chain.

Sources cited for Bring Your Own EDR Attack Turns SentinelOne Into

More in vulnerability

Detection coverage for TL-2026-2017

As of 2026-08-14, Threadlinqs Intelligence publishes 9 detection rule(s) for TL-2026-2017 across Splunk SPL, Microsoft KQL and Sigma, covering 9 indicator(s) of compromise. The whole corpus is readable without an account; a free account unlocks full detection query text in Splunk SPL, Microsoft KQL and Sigma; paid tiers add raw indicator values, correlation and the MCP server. Threadlinqs MCP server · View plans.

Threadlinqs Intelligence — Real-Time Threat Detection Platform

[ 0 threats ] [ 0 det ] [ CRIT: 0 ] [ HIGH: 0 ]
// threat_feed
$ sort --newest
Showing all threats

Latest Threats