CVE-2025-27563
Executive Summary
CVE-2025-27563 is a low-severity information disclosure vulnerability affecting OpenHarmony versions up to and including v5.0.3. The flaw allows a local attacker with low privileges to leak sensitive information by exploiting a flaw in the get permission mechanism. The vulnerability has a CVSS score of 3.3, indicating a limited impact on confidentiality, with no impact on integrity or availability. No public proof-of-concept (PoC) or exploit code has been identified, and the patch status remains unknown. The EPSS score of 0.0% suggests a very low probability of exploitation in the wild.
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
This vulnerability is not related to NPM, PyPI, Go, or Ruby packages. It is a core operating system component of OpenHarmony, an open-source distributed operating system. The supply chain risk is limited to organizations deploying OpenHarmony in their environments.
CVSS Breakdown & Threat Level
- CVSS Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
- Base Score: 3.3 (Low)
- Attack Vector (AV): Local (L) – The attacker must have local access to the system.
- Attack Complexity (AC): Low (L) – No special conditions are required for exploitation.
- Privileges Required (PR): Low (L) – The attacker needs low-level privileges.
- User Interaction (UI): None (N) – No user action is required.
- Scope (S): Unchanged (U) – The vulnerability does not affect resources beyond its security scope.
- Confidentiality (C): Low (L) – Limited information disclosure.
- Integrity (I): None (N) – No data integrity impact.
- Availability (A): None (N) – No impact on system availability.
Threat Level: Low. The vulnerability requires local access and low privileges, limiting the attack surface. The lack of public exploits and low EPSS score further reduce the immediate threat.
Deep Dive & Mechanics
The vulnerability resides in the permission management subsystem of OpenHarmony. The get permission API, which is used to query the permissions of an application or process, does not properly validate the caller's identity or the sensitivity of the requested permission information. A local attacker with low privileges can invoke this API to retrieve permission data that should be restricted to higher-privileged processes or the system itself.
The core issue is a missing access control check in the permission service. When a process calls get permission, the service returns the permission set without verifying whether the caller is authorized to view that information. This allows an attacker to enumerate permissions of other applications or system services, potentially revealing sensitive configuration details or security boundaries.
The information leaked could include:
- Permission names and their grant states.
- Permission groups and their associated applications.
- System-level permission configurations.
This information can be used to map the security posture of the device, identify high-value targets, or plan further attacks.
Vulnerable vs. Patched Code
Since no patch is available, the vulnerable code is presumed to be in the permission management module. A hypothetical fix would involve adding an authorization check before returning permission data.
Vulnerable Code (Conceptual):
// Vulnerable: No authorization check
int get_permission(const char *app_id, permission_t *perm) {
// Directly returns permission data
return query_permission(app_id, perm);
}
Patched Code (Conceptual):
// Patched: Authorization check added
int get_permission(const char *app_id, permission_t *perm) {
// Check if caller has permission to view this data
if (!is_authorized(get_caller_id(), app_id)) {
return -EPERM;
}
return query_permission(app_id, perm);
}
Exploitation & Lab Setup
Red Team
Objective: Exploit CVE-2025-27563 to leak permission information from a target OpenHarmony device.
Prerequisites:
- Local access to an OpenHarmony device (e.g., via ADB or SSH).
- Low-privilege user account (e.g.,
shelloru0_aXXX).
Exploitation Steps:
- Establish Access: Gain a shell on the target device.
adb shell - Identify Permission Service: Locate the permission management service interface.
ps -A | grep permission - Craft Exploit: Write a simple script to call the vulnerable API.
import os import json # Simulate calling the get permission API def get_permission(app_id): # This is a conceptual call; actual implementation depends on IPC mechanism result = os.system(f"service call permission 1 s16 {app_id}") return result # Enumerate permissions for all installed apps apps = ["com.example.app1", "com.example.app2"] for app in apps: perm = get_permission(app) print(f"Permissions for {app}: {perm}") - Execute: Run the script to collect permission data.
python3 exploit.py
Expected Outcome: The attacker retrieves a list of permissions for each application, potentially revealing sensitive system permissions.
Blue Team
Objective: Detect and mitigate exploitation attempts.
Detection:
- Monitor for unusual calls to the permission service from low-privilege processes.
- Look for repeated queries to
get permissionfor multiple applications. - Use the Sigma rule provided in the Detection Engineering section.
Mitigation:
- Apply the patch once available.
- Restrict local access to the device.
- Monitor logs for unauthorized permission queries.
Indicators of Compromise (IOCs)
- Process Anomalies: Unusual processes repeatedly calling the permission service.
- Log Entries: Logs showing
get_permissioncalls from unexpected UIDs. - Network Traffic: No network IOCs as this is a local vulnerability.
- File System: Temporary scripts or binaries used for exploitation.
Example IOC Log Entry:
[PermissionService] get_permission called by UID 1000 for app com.example.app1
Detection Engineering
YARA Rule
rule CVE_2025_27563_Exploit {
meta:
description = "Detects exploit attempts for CVE-2025-27563"
author = "Valters IT"
date = "2025-03-20"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2025-27563"
strings:
$s1 = "get_permission" ascii wide nocase
$s2 = "service call permission" ascii wide nocase
condition:
any of them
}
Sigma Rule
title: CVE-2025-27563 Permission Leak Attempt
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects attempts to exploit CVE-2025-27563 by calling the get_permission API from low-privilege processes.
author: Valters IT
date: 2025-03-20
references:
- https://nvd.nist.gov/vuln/detail/CVE-2025-27563
logsource:
category: process_creation
product: linux
detection:
selection:
CommandLine|contains: 'get_permission'
condition: selection
falsepositives:
- Legitimate permission management tools
level: low
Suricata Rule
alert ip any any -> any any (msg:"CVE-2025-27563 Permission Leak Attempt"; content:"get_permission"; classtype:attempted-recon; sid:1000001; rev:1;)
Remediation & Mitigation
Immediate Actions:
- Restrict Local Access: Limit physical and shell access to OpenHarmony devices.
- Monitor Logs: Enable detailed logging for permission service calls.
- Apply Patches: Monitor OpenHarmony security advisories for a patch and apply it promptly.
Long-Term Fixes:
- Implement proper authorization checks in the permission service.
- Conduct a security audit of all permission-related APIs.
- Follow the principle of least privilege for all system services.
Workarounds:
- If patching is not possible, consider disabling the
get permissionAPI for non-system processes via SELinux policies or similar mechanisms.
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.
💣 PoC CODE AVAILABLE
Exploit code for this CVE is tracked in our database.
Access poc_code via API Pro.