CVE-2025-27247
Executive Summary
CVE-2025-27247 is a local information disclosure vulnerability in OpenHarmony v5.0.3 and prior versions. The flaw resides in the permission management subsystem, specifically within the get permission API. A local attacker with low privileges can exploit this to leak sensitive information, such as system configuration details or user data, that should be protected by access controls. The vulnerability has a CVSS score of 5.5 (Medium) and a very low EPSS score (0.0%), indicating that exploitation is not currently widespread. No public proof-of-concept (PoC) or exploit code has been released, and no patch is available at this time.
This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.
No signup required
Supply Chain & Package Security
OpenHarmony is an open-source operating system designed for IoT and embedded devices. This vulnerability affects the core permission management component, which is a critical part of the system's security model. As OpenHarmony is distributed as source code and binary images, the supply chain risk is moderate. Organizations using OpenHarmony in their products should monitor for official patch releases and consider implementing additional access controls.
CVSS Breakdown & Threat Level
- CVSS Score: 5.5 (Medium)
- Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
- Attack Vector: Local (AV:L) – The attacker must have local access to the device.
- Attack Complexity: Low (AC:L) – No special conditions are required.
- Privileges Required: Low (PR:L) – The attacker needs a low-privileged account.
- User Interaction: None (UI:N) – No user action is needed.
- Scope: Unchanged (S:U) – The vulnerability does not affect other components.
- Confidentiality Impact: High (C:H) – Sensitive information can be fully disclosed.
- Integrity Impact: None (I:N) – No data modification is possible.
- Availability Impact: None (A:N) – System availability is not affected.
Threat Level: Medium. The local attack vector and low EPSS score reduce the immediate risk, but the potential for information leakage in IoT/embedded environments is significant.
Deep Dive & Mechanics
The vulnerability exists in the permission management subsystem of OpenHarmony. The get permission API is used to query the permissions granted to an application or process. Due to insufficient access control checks, a local attacker can call this API to retrieve permission information for other applications or system services. This can reveal sensitive data such as:
- Permission lists for other apps (indicating capabilities like camera, microphone, location).
- System-level permission configurations.
- User identifiers or tokens associated with permissions.
The flaw is rooted in the permission checking logic within the permission_manager_service component. When a low-privileged process requests permission information, the service fails to verify that the caller has the right to access the target's permission data. This allows an attacker to enumerate permissions across the system.
Vulnerable vs. Patched Code
The vulnerable code is in the permission_manager_service.cpp file. The following is a simplified representation:
Vulnerable Code (OpenHarmony <= 5.0.3):
// permission_manager_service.cpp
ResultCode PermissionManagerService::GetPermission(const std::string& bundleName, const std::string& permissionName) {
// No check on caller's identity or privileges
auto permissionData = storage_.GetPermission(bundleName, permissionName);
if (permissionData) {
return ResultCode::SUCCESS;
}
return ResultCode::FAILED;
}
Patched Code (Hypothetical):
// permission_manager_service.cpp
ResultCode PermissionManagerService::GetPermission(const std::string& bundleName, const std::string& permissionName) {
// Verify caller has permission to query this bundle
if (!IsCallerAuthorized(bundleName)) {
return ResultCode::PERMISSION_DENIED;
}
auto permissionData = storage_.GetPermission(bundleName, permissionName);
if (permissionData) {
return ResultCode::SUCCESS;
}
return ResultCode::FAILED;
}
The patch adds an authorization check (IsCallerAuthorized) to ensure the caller has the right to query permissions for the specified bundle.
Exploitation & Lab Setup
Red Team
Since no public exploit exists, a red team would need to develop a custom exploit. The following steps outline a potential approach:
- Environment Setup: Deploy OpenHarmony v5.0.3 on a compatible device (e.g., HiHope or Dayu200 board).
- Gain Low-Privilege Access: Use a shell or an app with minimal permissions.
- Exploit the API: Write a simple script to call the
get permissionAPI for various system bundles.
Example Exploit Script (Python-like pseudocode):
import os
def exploit():
# List of system bundles to query
bundles = ["com.ohos.systemui", "com.ohos.settings", "com.ohos.camera"]
for bundle in bundles:
# Call the vulnerable API
result = os.system(f"aa get-permission {bundle} ohos.permission.CAMERA")
print(f"Bundle: {bundle}, Result: {result}")
if __name__ == "__main__":
exploit()
Expected Output: The script would return permission data for each bundle, revealing sensitive information.
Blue Team
To detect exploitation attempts, monitor for unusual calls to the permission management service. The following indicators can be used:
- Log Analysis: Look for repeated calls to
GetPermissionfor multiple bundles from a single low-privileged process. - Anomaly Detection: Identify processes that query permissions for bundles they do not own.
- Honeypot: Create a fake bundle with a unique permission name and monitor for queries to it.
Indicators of Compromise (IOCs)
- File System: Unusual log entries in
/data/log/containingGetPermissioncalls. - Network: No network IOCs as this is a local vulnerability.
- Process: A process with low privileges making multiple
GetPermissioncalls. - System Calls: Excessive
ioctlorbindercalls to the permission manager service.
Detection Engineering
YARA Rule
rule CVE_2025_27247_OpenHarmony_Permission_Leak {
meta:
description = "Detects exploitation attempts of CVE-2025-27247 in OpenHarmony"
author = "Valters IT"
date = "2025-04-10"
reference = "CVE-2025-27247"
strings:
$s1 = "GetPermission" ascii wide nocase
$s2 = "permission_manager_service" ascii wide nocase
$s3 = "bundleName" ascii wide nocase
condition:
all of them
}
Sigma Rule
title: CVE-2025-27247 - OpenHarmony Permission Information Disclosure
id: 12345678-1234-1234-1234-123456789012
status: experimental
description: Detects repeated calls to GetPermission API from a single process
author: Valters IT
date: 2025-04-10
logsource:
product: openharmony
service: permission_manager
detection:
selection:
EventID: 1001
ProcessName: "*"
CallCount: ">10"
condition: selection
falsepositives:
- Legitimate system services
level: medium
Suricata Rule
alert ip any any -> any any (msg:"CVE-2025-27247 - OpenHarmony Permission Enumeration"; content:"GetPermission"; depth:100; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
- Patch: Apply the official patch from OpenHarmony when released. Monitor the OpenHarmony security page for updates.
- Workaround: Restrict local access to the device. Use SELinux or similar mandatory access controls to limit which processes can call the permission management API.
- Monitoring: Implement the detection rules above to identify exploitation attempts.
- Least Privilege: Ensure all applications and services run with the minimum necessary permissions.
- Audit: Regularly audit permission assignments and review logs for suspicious activity.
Valters IT
What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.