{"id":"CVE-2026-70387","state":"PUBLISHED","title":"OnePlus OxygenOS exposed dangerous method vulnerability","description":"Exposed dangerous method or function and Incorrect Authorization vulnerability in OnePlus OxygenOS on Android. The olc2 logging HAL exposes a binder method that fork()'s and calls execl(\"/vendor/bin/sh\", \"sh\", \"-c\", cmd, NULL) with a caller-supplied command string. The only authorization check is getCallingUid() == 0. Because SELinux policy grants binder access to this HAL to a wide client attribute, any uid-0 process in any of those domains (including dumpstate, which is reachable from an unprivileged app via Vulnerability 1) obtains arbitrary command execution. The spawned shell lands in u:r:vendor_qti_init_shell:s0 SELinux context via a policy type_transition, a domain holding all Linux capabilities. This issue affects OxygenOS: from 16.1.0 before 16.1.10.500, from 16.0.0 before 16.0.5.1200, and from 15.0.0 before 15.0.0.2000.","publishedAt":"2026-10-21T09:07:56.492Z","updatedAt":"2026-10-29T19:09:35.392Z","severity":{"score":8.4,"label":"High","version":"4.0","vector":"CVSS:4.0/AV:L/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","source":"ENISA"},"assigner":"ENISA","products":["OnePlus OxygenOS"],"affected":[{"vendor":"OnePlus","product":"OxygenOS","defaultStatus":"unaffected","versions":[{"version":"16.1.0","status":"unknown","versionType":"semver"},{"version":"16.0.0","status":"affected","lessThan":"16.0.5.1200","versionType":"semver"},{"version":"15.0.0","status":"affected","lessThan":"15.0.0.2000","versionType":"semver"}],"platforms":["Android"]}],"references":["https://blog.nns.ee/2026/09/24/oneplus-root/"],"weaknesses":["CWE-749","CWE-863"],"ingestedAt":"2026-10-29T20:12:49.727Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/70xxx/CVE-2026-70387.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-70387","state":"PUBLISHED","datePublished":"2026-10-21T09:07:56.492Z","dateUpdated":"2026-10-29T19:09:35.392Z","assignerShortName":"ENISA","assignerOrgId":"a6d3dc9e-0591-4a13-bce7-0f5b31ff6158","dateReserved":"2026-08-04T07:41:00.082Z"},"containers":{"cna":{"title":"OnePlus OxygenOS exposed dangerous method vulnerability","descriptions":[{"lang":"en","value":"Exposed dangerous method or function and Incorrect Authorization vulnerability in OnePlus OxygenOS on Android. The olc2 logging HAL exposes a binder method that fork()'s and calls execl(\"/vendor/bin/sh\", \"sh\", \"-c\", cmd, NULL) with a caller-supplied command string. The only authorization check is getCallingUid() == 0. Because SELinux policy grants binder access to this HAL to a wide client attribute, any uid-0 process in any of those domains (including dumpstate, which is reachable from an unprivileged app via Vulnerability 1) obtains arbitrary command execution. The spawned shell lands in u:r:vendor_qti_init_shell:s0 SELinux context via a policy type_transition, a domain holding all Linux capabilities. This issue affects OxygenOS: from 16.1.0 before 16.1.10.500, from 16.0.0 before 16.0.5.1200, and from 15.0.0 before 15.0.0.2000."}],"affected":[{"vendor":"OnePlus","product":"OxygenOS","defaultStatus":"unaffected","versions":[{"version":"16.1.0","status":"unknown","versionType":"semver"},{"version":"16.0.0","status":"affected","lessThan":"16.0.5.1200","versionType":"semver"},{"version":"15.0.0","status":"affected","lessThan":"15.0.0.2000","versionType":"semver"}],"platforms":["Android"]}],"references":[{"url":"https://blog.nns.ee/2026/09/24/oneplus-root/","tags":["technical-description"]}],"metrics":[{"format":"CVSS","scenarios":[{"lang":"en","value":"GENERAL"}],"cvssV4_0":{"attackVector":"LOCAL","attackComplexity":"LOW","attackRequirements":"NONE","privilegesRequired":"HIGH","userInteraction":"NONE","vulnConfidentialityImpact":"HIGH","subConfidentialityImpact":"NONE","vulnIntegrityImpact":"HIGH","subIntegrityImpact":"NONE","vulnAvailabilityImpact":"HIGH","subAvailabilityImpact":"NONE","exploitMaturity":"NOT_DEFINED","Safety":"NOT_DEFINED","Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","valueDensity":"NOT_DEFINED","vulnerabilityResponseEffort":"NOT_DEFINED","providerUrgency":"NOT_DEFINED","version":"4.0","baseSeverity":"HIGH","baseScore":8.4,"vectorString":"CVSS:4.0/AV:L/AC:L/AT:N/PR:H/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-749","lang":"en","description":"CWE-749 Exposed dangerous method or function","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-863","lang":"en","description":"CWE-863 Incorrect Authorization","type":"CWE"}]}],"providerMetadata":{"shortName":"ENISA","orgId":"a6d3dc9e-0591-4a13-bce7-0f5b31ff6158","dateUpdated":"2026-10-22T12:06:00.132Z"},"credits":[{"lang":"en","value":"Rasmus Moorats","type":"finder"},{"lang":"en","value":"CERT-EE","type":"coordinator"}],"x_generator":{"engine":"Vulnogram 1.0.5"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-10-29T19:08:45.607914Z","id":"CVE-2026-70387","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-29T19:09:35.392Z"}}]}}}