CVE-2026-70387: OnePlus OxygenOS arbitrary command execution in olc2 logging HAL

CVE-2026-70387 · Severity: info · Published 2026-10-21

OnePlus OxygenOS contains a logging service (olc2 HAL) that runs system commands with root privileges. An unprivileged app can chain two vulnerabilities together to gain complete device control: first exploiting an audio debug service to achieve uid-0 execution, then calling the logging service to run arbitrary commands as root with all Linux capabilities. An attacker can fully compromise the device without user interaction or special permissions.

Technologies: Oneplus Oxygenos. Vendors: Oneplus.

Quick answers

Is CVE-2026-70387 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2026-70387 being exploited in the wild.
How severe is CVE-2026-70387?
Informational severity, published 21 October 2026.
Which products and versions are affected?
Oneplus Oxygenos 16.1.0 before 16.1.10.500, 16.0.0 before 16.0.5.1200, 15.0.0 before 15.0.0.2000.
Is there a fix for CVE-2026-70387?
Yes: fixed in OxygenOS 16.0.10.500 (EX01) and later versions per vendor patches. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2026-70387 attacked?
It is attacked with local access, in an operating system.
Am I affected by CVE-2026-70387?
Check whether you run Oneplus Oxygenos at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • Fixed in: OxygenOS 16.0.10.500 (EX01) and later versions per vendor patches

Technical details

The olc2 logging HAL exposes a binder method doShell() that fork()s and calls execl("/vendor/bin/sh", "sh", "-c", cmd, NULL) with a caller-supplied command string, protected only by a check that getCallingUid() == 0. An unprivileged app (untrusted_app domain) can first exploit CVE-2026-70388 in the AtlasService audio debug feature to achieve uid-0 execution in the dumpstate SELinux domain, which has binder access to the olc2 HAL. Once uid-0, the app calls doShell() to execute arbitrary commands, with the spawned shell running in the u:r:vendor_qti_init_shell:s0 context holding all Linux capabilities. The vulnerability exists in OxygenOS 16.1.0–16.1.10.500, 16.0.0–16.0.5.1200, and 15.0.0–15.0.0.2000.

Affected products

  • OnePlus OxygenOS 16.1.0 before 16.1.10.500, 16.0.0 before 16.0.5.1200, 15.0.0 before 15.0.0.2000

Timeline

  • 2026-09-24: disclosed: Initial disclosure of vulnerability chain via nns.ee blog
  • 2026-10-21: advisory: CVE-2026-70387 published

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.