{"id":178,"date":"2025-12-19T09:15:26","date_gmt":"2025-12-19T09:15:26","guid":{"rendered":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/"},"modified":"2025-12-19T09:15:26","modified_gmt":"2025-12-19T09:15:26","slug":"god-mode-on-how-we-attacked-a-vehicles-head-unit-modem","status":"publish","type":"post","link":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/","title":{"rendered":"God Mode On: how we attacked a vehicle\u2019s head unit modem"},"content":{"rendered":"<div>\n<p><img width=\"990\" height=\"400\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191059\/SL-vehicle-modem-hack-featured-990x400.jpg\" class=\"attachment-securelist-huge-promo size-securelist-huge-promo wp-post-image\" alt=\"\" decoding=\"async\" loading=\"lazy\"><\/p>\n<h2 id=\"introduction\">Introduction<\/h2>\n<p>Imagine you\u2019re cruising down the highway in your brand-new electric car. All of a sudden, the massive multimedia display fills with Doom, the iconic 3D shooter game. It completely replaces the navigation map or the controls menu, and you realize someone is playing it remotely right now. This is not a dream or an overactive imagination \u2013 we\u2019ve demonstrated that it\u2019s a perfectly realistic scenario in today\u2019s world.<\/p>\n<p>The internet of things now plays a significant role in the modern world. Not only are smartphones and laptops connected to the network, but also factories, cars, trains, and even airplanes. Most of the time, connectivity is provided via 3G\/4G\/5G mobile data networks using modems installed in these vehicles and devices. These modems are increasingly integrated into a System-on-Chip (SoC), which uses a Communication Processor (CP) and an Application Processor (AP) to perform multiple functions simultaneously. A general-purpose operating system such as Android can run on the AP, while the CP, which handles communication with the mobile network, typically runs on a dedicated OS. The interaction between the AP, CP, and RAM within the SoC at the microarchitecture level is a \u201cblack box\u201d known only to the manufacturer \u2013 even though the security of the entire SoC depends on it.<\/p>\n<p>Bypassing 3G\/LTE security mechanisms is generally considered a purely academic challenge because a secure communication channel is established when a user device (User Equipment, UE) connects to a cellular base station (Evolved Node B, eNB). Even if someone can bypass its security mechanisms, discover a vulnerability in the modem, and execute their own code on it, this is unlikely to compromise the device\u2019s business logic. This logic (for example, user applications, browser history, calls, and SMS on a smartphone) resides on the AP and is presumably not accessible from the modem.<\/p>\n<p>To find out, if that is true, we conducted a security assessment of a modern SoC, Unisoc UIS7862A, which features an integrated 2G\/3G\/4G modem. This SoC can be found in various mobile devices by multiple vendors or, more interestingly, in the head units of modern Chinese vehicles, which are becoming increasingly common on the roads. The head unit is one of a car\u2019s key components, and a breach of its information security poses a threat to road safety, as well as the confidentiality of user data.<\/p>\n<p>During our research, we identified several critical vulnerabilities at various levels of the Unisoc UIS7862A modem\u2019s cellular protocol stack. This article discusses a stack-based buffer overflow vulnerability in the 3G RLC protocol implementation (<a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2024-39432\" target=\"_blank\" rel=\"noopener\">CVE-2024-39432<\/a>). The vulnerability can be exploited to achieve remote code execution at the early stages of connection, before any protection mechanisms are activated.<\/p>\n<p>Importantly, gaining the ability to execute code on the modem is only the entry point for a complete remote compromise of the entire SoC. Our subsequent efforts were focused on gaining access to the AP. We discovered several ways to do so, including leveraging a hardware vulnerability in the form of a hidden peripheral Direct Memory Access (DMA) device to perform lateral movement within the SoC. This enabled us to install our own patch into the running Android kernel and execute arbitrary code on the AP with the highest privileges. Details are provided in the relevant sections.<\/p>\n<h2 id=\"acquiring-the-modem-firmware\">Acquiring the modem firmware<\/h2>\n<p>The modem at the center of our research was found on the circuit board of the head unit in a Chinese car.<\/p>\n<div id=\"attachment_118464\" style=\"width: 869px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173142\/attacking-car-modem1.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-118464\" class=\"size-full wp-image-118464\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173142\/attacking-car-modem1.png\" alt=\"Circuit board of the head unit\" width=\"859\" height=\"865\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173142\/attacking-car-modem1.png 859w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173142\/attacking-car-modem1-298x300.png 298w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173142\/attacking-car-modem1-150x150.png 150w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173142\/attacking-car-modem1-768x773.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173142\/attacking-car-modem1-348x350.png 348w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173142\/attacking-car-modem1-740x745.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173142\/attacking-car-modem1-278x280.png 278w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173142\/attacking-car-modem1-800x806.png 800w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173142\/attacking-car-modem1-50x50.png 50w\" sizes=\"auto, (max-width: 859px) 100vw, 859px\"><\/a><\/p>\n<p id=\"caption-attachment-118464\" class=\"wp-caption-text\">Circuit board of the head unit<\/p>\n<\/div>\n<p>Description of the circuit board components:<\/p>\n<table>\n<tbody>\n<tr>\n<td>Number in the board photo<\/td>\n<td>Component<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>Realtek RTL8761ATV 802.11b\/g\/n 2.4G controller with wireless LAN (WLAN) and USB interfaces (USB 1.0\/1.1\/2.0 standards)<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>SPRD UMW2652 BGA WiFi chip<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>55966 TYADZ 21086 chip<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>SPRD SR3595D (Unisoc) radio frequency transceiver<\/td>\n<\/tr>\n<tr>\n<td>5<\/td>\n<td>Techpoint TP9950 video decoder<\/td>\n<\/tr>\n<tr>\n<td>6<\/td>\n<td>UNISOC UIS7862A<\/td>\n<\/tr>\n<tr>\n<td>7<\/td>\n<td>BIWIN BWSRGX32H2A-48G-X internal storage, Package200-FBGA, ROM Type \u2013 Discrete, ROM Size \u2013 LPDDR4X, 48G<\/td>\n<\/tr>\n<tr>\n<td>8<\/td>\n<td>SCY E128CYNT2ABE00 EMMC 128G\/JEDEC memory card<\/td>\n<\/tr>\n<tr>\n<td>9<\/td>\n<td>SPREADTRUM UMP510G5 power controller<\/td>\n<\/tr>\n<tr>\n<td>10<\/td>\n<td>FEI.1s LE330315 USB2.0 shunt chip<\/td>\n<\/tr>\n<tr>\n<td>11<\/td>\n<td>SCT2432STER synchronous step-down DC-DC converter with internal compensation<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Using information about the modem\u2019s hardware, we desoldered and read the embedded multimedia memory card, which contained a complete image of its operating system. We then analyzed the image obtained.<\/p>\n<h2 id=\"remote-access-to-the-modem-cve-2024-39431\">Remote access to the modem (CVE-2024-39431)<\/h2>\n<p>The modem under investigation, like any modern modem, implements several protocol stacks: 2G, 3G, and LTE. Clearly, the more protocols a device supports, the more potential entry points (attack vectors) it has. Moreover, the lower in the OSI network model stack a vulnerability sits, the more severe the consequences of its exploitation can be. Therefore, we decided to analyze the data packet fragmentation mechanisms at the data link layer (RLC protocol).<\/p>\n<p>We focused on this protocol because it is used to establish a secure encrypted data transmission channel between the base station and the modem, and, in particular, it is used to transmit higher-layer <a href=\"https:\/\/en.wikipedia.org\/wiki\/Non-access_stratum\" target=\"_blank\" rel=\"noopener\">NAS (Non-Access Stratum)<\/a> protocol data. NAS represents the functional level of the 3G\/UMTS protocol stack. Located between the user equipment (UE) and core network, it is responsible for signaling between them. This means that a remote code execution (RCE) vulnerability in RLC would allow an attacker to execute their own code on the modem, bypassing all existing 3G communication protection mechanisms.<\/p>\n<div id=\"attachment_118465\" style=\"width: 876px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173330\/attacking-car-modem2.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-118465\" class=\"size-full wp-image-118465\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173330\/attacking-car-modem2.png\" alt=\"3G protocol stack\" width=\"866\" height=\"837\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173330\/attacking-car-modem2.png 866w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173330\/attacking-car-modem2-300x290.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173330\/attacking-car-modem2-768x742.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173330\/attacking-car-modem2-362x350.png 362w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173330\/attacking-car-modem2-740x715.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173330\/attacking-car-modem2-290x280.png 290w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173330\/attacking-car-modem2-800x773.png 800w\" sizes=\"auto, (max-width: 866px) 100vw, 866px\"><\/a><\/p>\n<p id=\"caption-attachment-118465\" class=\"wp-caption-text\">3G protocol stack<\/p>\n<\/div>\n<p>The RLC protocol uses three different transmission modes: Transparent Mode (TM), Unacknowledged Mode (UM), and Acknowledged Mode (AM). We are only interested in UM, because in this mode the 3G standard allows both the segmentation of data and the concatenation of several small higher-layer data fragments (Protocol Data Units, PDU) into a single data link layer frame. This is done to maximize channel utilization. At the RLC level, packets are referred to as <a href=\"https:\/\/www.etsi.org\/deliver\/etsi_ts\/136300_136399\/136322\/15.01.00_60\/ts_136322v150100p.pdf\/\" target=\"_blank\" rel=\"noopener\">Service Data Units (SDU)<\/a>.<\/p>\n<p>Among the approximately 75,000 different functions in the firmware, we found the function for handling an incoming SDU packet. When handling a received SDU packet, its header fields are parsed. The packet itself consists of a mandatory header, optional headers, and data. The number of optional headers is not limited. The end of the optional headers is indicated by the least significant bit (E bit) being equal to 0. The algorithm processes each header field sequentially, while their E-bits equal 1. During processing, data is written to a variable located on the stack of the calling function. The stack depth is 0xB4 bytes. The size of the packet that can be parsed (i.e., the number of headers, each header being a 2-byte entry on the stack) is limited by the SDU packet size of 0x5F0 bytes.<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173415\/attacking-car-modem3.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-118466\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173415\/attacking-car-modem3.png\" alt=\"\" width=\"884\" height=\"388\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173415\/attacking-car-modem3.png 884w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173415\/attacking-car-modem3-300x132.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173415\/attacking-car-modem3-768x337.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173415\/attacking-car-modem3-797x350.png 797w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173415\/attacking-car-modem3-740x325.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173415\/attacking-car-modem3-638x280.png 638w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173415\/attacking-car-modem3-800x351.png 800w\" sizes=\"auto, (max-width: 884px) 100vw, 884px\"><\/a><\/p>\n<p>As a result, exploitation can be achieved using just one packet in which the number of headers exceeds the stack depth (90 headers). It is important to note that this particular function lacks a stack canary, and when the stack overflows, it is possible to overwrite the return address and some non-volatile register values in this function. However, overwriting is only possible with a value ending in one in binary (i.e., a value in which the least significant bit equals 1). Notably, execution takes place on ARM in Thumb mode, so all return addresses must have the least significant bit equal to 1. Coincidence? Perhaps.<\/p>\n<p>In any case, sending the very first dummy SDU packet with the appropriate number of \u201ccorrect\u201d headers caused the device to reboot. However, at that moment, we had no way to obtain information on where and why the crash occurred (although we suspect the cause was an attempt to transfer control to the address 0xAABBCCDD, taken from our packet).<\/p>\n<h2 id=\"gaining-persistence-in-the-system\">Gaining persistence in the system<\/h2>\n<p>The first and most important observation is that we know the pointer to the newly received SDU packet is stored in register R2. Return Oriented Programming (ROP) techniques can be used to execute our own code, but first we need to make sure it is actually possible.<\/p>\n<p>We utilized the available AT command handler to move the data to RAM areas. Among the available AT commands, we found a suitable function \u2013 SPSERVICETYPE.<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173456\/attacking-car-modem4.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-118467\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173456\/attacking-car-modem4.png\" alt=\"\" width=\"984\" height=\"964\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173456\/attacking-car-modem4.png 984w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173456\/attacking-car-modem4-300x294.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173456\/attacking-car-modem4-768x752.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173456\/attacking-car-modem4-357x350.png 357w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173456\/attacking-car-modem4-740x725.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173456\/attacking-car-modem4-286x280.png 286w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173456\/attacking-car-modem4-800x784.png 800w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173456\/attacking-car-modem4-50x50.png 50w\" sizes=\"auto, (max-width: 984px) 100vw, 984px\"><\/a><\/p>\n<p>Next, we used ROP gadgets to overwrite the address 0x8CE56218 without disrupting the subsequent operation of the incoming SDU packet handling algorithm. To achieve this, it was sufficient to return to the function from which the SDU packet handler was called, because it was invoked as a callback, meaning there is no data linkage on the stack. Given that this function only added 0x2C bytes to the stack, we needed to fit within this size.<\/p>\n<div id=\"attachment_118477\" style=\"width: 2282px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191438\/attacking-car-modem5-en.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-118477\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191438\/attacking-car-modem5-en.png\" alt=\"Stack overflow in the context of the operating system\" width=\"2272\" height=\"1324\" class=\"size-full wp-image-118477\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191438\/attacking-car-modem5-en.png 2272w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191438\/attacking-car-modem5-en-300x175.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191438\/attacking-car-modem5-en-1024x597.png 1024w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191438\/attacking-car-modem5-en-768x448.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191438\/attacking-car-modem5-en-1536x895.png 1536w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191438\/attacking-car-modem5-en-2048x1193.png 2048w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191438\/attacking-car-modem5-en-601x350.png 601w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191438\/attacking-car-modem5-en-740x431.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191438\/attacking-car-modem5-en-480x280.png 480w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191438\/attacking-car-modem5-en-800x466.png 800w\" sizes=\"auto, (max-width: 2272px) 100vw, 2272px\"><\/a><\/p>\n<p id=\"caption-attachment-118477\" class=\"wp-caption-text\">Stack overflow in the context of the operating system<\/p>\n<\/div>\n<p>Having found a suitable ROP chain, we launched an SDU packet containing it as a payload. As a result, we saw the output 0xAABBCCDD in the AT command console for SPSERVICETYPE. Our code worked!<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173616\/attacking-car-modem6.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-118469\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173616\/attacking-car-modem6.png\" alt=\"\" width=\"898\" height=\"192\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173616\/attacking-car-modem6.png 898w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173616\/attacking-car-modem6-300x64.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173616\/attacking-car-modem6-768x164.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173616\/attacking-car-modem6-740x158.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173616\/attacking-car-modem6-800x171.png 800w\" sizes=\"auto, (max-width: 898px) 100vw, 898px\"><\/a><\/p>\n<p>Next, by analogy, we input the address of the stack frame where our data was located, but it turned out not to be executable. We then faced the task of figuring out the MPU settings on the modem. Once again, using the ROP chain method, we generated code that read the MPU table, one DWORD at a time. After many iterations, we obtained the following table.<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173651\/attacking-car-modem7.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-118470\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173651\/attacking-car-modem7.png\" alt=\"\" width=\"1284\" height=\"489\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173651\/attacking-car-modem7.png 1284w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173651\/attacking-car-modem7-300x114.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173651\/attacking-car-modem7-1024x390.png 1024w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173651\/attacking-car-modem7-768x292.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173651\/attacking-car-modem7-919x350.png 919w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173651\/attacking-car-modem7-740x282.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173651\/attacking-car-modem7-735x280.png 735w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173651\/attacking-car-modem7-800x305.png 800w\" sizes=\"auto, (max-width: 1284px) 100vw, 1284px\"><\/a><\/p>\n<p>The table shows what we suspected \u2013 the code section is only mapped for execution. An attempt to change the configuration resulted in another ROP chain, but this same section was now mapped with write permissions in an unused slot in the table. Because of MPU programming features, specifically the presence of the overlap mechanism and the fact that a region with a higher ID has higher priority, we were able to write to this section.<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173724\/attacking-car-modem8.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-118471\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173724\/attacking-car-modem8.png\" alt=\"\" width=\"1126\" height=\"63\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173724\/attacking-car-modem8.png 1126w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173724\/attacking-car-modem8-300x17.png 300w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173724\/attacking-car-modem8-1024x57.png 1024w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173724\/attacking-car-modem8-768x43.png 768w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173724\/attacking-car-modem8-740x41.png 740w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173724\/attacking-car-modem8-800x45.png 800w\" sizes=\"auto, (max-width: 1126px) 100vw, 1126px\"><\/a><\/p>\n<p>All that remained was to use the pointer to our data (still stored in R2) and patch the code section that had just been unlocked for writing. The question was what exactly to patch. The simplest method was to patch the NAS protocol handler by adding our code to it. To do this, we used one of the NAS protocol commands \u2013 <a href=\"https:\/\/www.etsi.org\/deliver\/etsi_ts\/124000_124099\/124008\/17.07.00_60\/ts_124008v170700p.pdf\" target=\"_blank\" rel=\"noopener\">MM information<\/a>. This allowed us to send a large amount of data at once and, in response, receive a single byte of data using the MM status command, which confirmed the patching success.<\/p>\n<p>As a result, we not only successfully executed our own code on the modem side but also established full two-way communication with the modem, using the high-level NAS protocol as a means of message delivery. In this case, it was an MM Status packet with the cause field equaling 0xAA.<\/p>\n<p><a href=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173803\/attacking-car-modem9.png\" class=\"magnificImage\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-118472\" src=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173803\/attacking-car-modem9.png\" alt=\"\" width=\"578\" height=\"201\" srcset=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173803\/attacking-car-modem9.png 578w, https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15173803\/attacking-car-modem9-300x104.png 300w\" sizes=\"auto, (max-width: 578px) 100vw, 578px\"><\/a><\/p>\n<p>However, being able to execute our own code on the modem does not give us access to user data. Or does it?<\/p>\n<p>The full version of the article with a detailed description of the development of an AR exploit that led to Doom being run on the head unit is available on <a href=\"https:\/\/ics-cert.kaspersky.com\/publications\/reports\/2025\/11\/20\/god-mode-on-researchers-run-doom-on-a-vehicles-head-unit-after-remotely-attacking-its-modem\/\" target=\"_blank\" rel=\"noopener\">ICS CERT website<\/a>.<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Introduction Imagine you\u2019re cruising down the highway in your brand-new electric car. All of a sudden, the massive multimedia display fills with Doom, the iconic 3D shooter game. It completely replaces the navigation map or the controls menu, and you realize someone is playing it remotely right now. This is not a dream or an [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-container-style":"default","site-container-layout":"default","site-sidebar-layout":"default","disable-article-header":"default","disable-site-header":"default","disable-site-footer":"default","disable-content-area-spacing":"default","footnotes":""},"categories":[244,90,243,245,221,246,242,241],"tags":[91],"class_list":["post-178","post","type-post","status-publish","format-standard","hentry","category-connected-car","category-cybersecurity","category-internet-of-things","category-modem","category-research","category-secure-environment-iot","category-vulnerabilities","category-vulnerabilities-and-exploits","tag-cybersecurity"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>God Mode On: how we attacked a vehicle\u2019s head unit modem - Imperative Business Ventures Limited<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"God Mode On: how we attacked a vehicle\u2019s head unit modem - Imperative Business Ventures Limited\" \/>\n<meta property=\"og:description\" content=\"Introduction Imagine you\u2019re cruising down the highway in your brand-new electric car. All of a sudden, the massive multimedia display fills with Doom, the iconic 3D shooter game. It completely replaces the navigation map or the controls menu, and you realize someone is playing it remotely right now. This is not a dream or an [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/\" \/>\n<meta property=\"og:site_name\" content=\"Imperative Business Ventures Limited\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-19T09:15:26+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191059\/SL-vehicle-modem-hack-featured-990x400.jpg\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/blog.ibvl.in\/#\/schema\/person\/55b87b72a56b1bbe9295fe5ef7a20b02\"},\"headline\":\"God Mode On: how we attacked a vehicle\u2019s head unit modem\",\"datePublished\":\"2025-12-19T09:15:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/\"},\"wordCount\":1810,\"image\":{\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191059\/SL-vehicle-modem-hack-featured-990x400.jpg\",\"keywords\":[\"Cybersecurity\"],\"articleSection\":[\"Connected car\",\"Cybersecurity\",\"Internet of Things\",\"Modem\",\"Research\",\"Secure environment (IoT)\",\"Vulnerabilities\",\"Vulnerabilities and exploits\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/\",\"url\":\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/\",\"name\":\"God Mode On: how we attacked a vehicle\u2019s head unit modem - Imperative Business Ventures Limited\",\"isPartOf\":{\"@id\":\"https:\/\/blog.ibvl.in\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191059\/SL-vehicle-modem-hack-featured-990x400.jpg\",\"datePublished\":\"2025-12-19T09:15:26+00:00\",\"author\":{\"@id\":\"https:\/\/blog.ibvl.in\/#\/schema\/person\/55b87b72a56b1bbe9295fe5ef7a20b02\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#primaryimage\",\"url\":\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191059\/SL-vehicle-modem-hack-featured-990x400.jpg\",\"contentUrl\":\"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191059\/SL-vehicle-modem-hack-featured-990x400.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/blog.ibvl.in\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"God Mode On: how we attacked a vehicle\u2019s head unit modem\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.ibvl.in\/#website\",\"url\":\"https:\/\/blog.ibvl.in\/\",\"name\":\"Imperative Business Ventures Limited\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.ibvl.in\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.ibvl.in\/#\/schema\/person\/55b87b72a56b1bbe9295fe5ef7a20b02\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/blog.ibvl.in\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/4d20b2cd313e4417a599678e950e6fb7d4dfa178a72f2b769335a08aaa615aa9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/4d20b2cd313e4417a599678e950e6fb7d4dfa178a72f2b769335a08aaa615aa9?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"sameAs\":[\"https:\/\/blog.ibvl.in\"],\"url\":\"https:\/\/blog.ibvl.in\/index.php\/author\/admin_hcbs9yw6\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"God Mode On: how we attacked a vehicle\u2019s head unit modem - Imperative Business Ventures Limited","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/","og_locale":"en_US","og_type":"article","og_title":"God Mode On: how we attacked a vehicle\u2019s head unit modem - Imperative Business Ventures Limited","og_description":"Introduction Imagine you\u2019re cruising down the highway in your brand-new electric car. All of a sudden, the massive multimedia display fills with Doom, the iconic 3D shooter game. It completely replaces the navigation map or the controls menu, and you realize someone is playing it remotely right now. This is not a dream or an [&hellip;]","og_url":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/","og_site_name":"Imperative Business Ventures Limited","article_published_time":"2025-12-19T09:15:26+00:00","og_image":[{"url":"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191059\/SL-vehicle-modem-hack-featured-990x400.jpg","type":"","width":"","height":""}],"author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"admin","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#article","isPartOf":{"@id":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/"},"author":{"name":"admin","@id":"https:\/\/blog.ibvl.in\/#\/schema\/person\/55b87b72a56b1bbe9295fe5ef7a20b02"},"headline":"God Mode On: how we attacked a vehicle\u2019s head unit modem","datePublished":"2025-12-19T09:15:26+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/"},"wordCount":1810,"image":{"@id":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#primaryimage"},"thumbnailUrl":"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191059\/SL-vehicle-modem-hack-featured-990x400.jpg","keywords":["Cybersecurity"],"articleSection":["Connected car","Cybersecurity","Internet of Things","Modem","Research","Secure environment (IoT)","Vulnerabilities","Vulnerabilities and exploits"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/","url":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/","name":"God Mode On: how we attacked a vehicle\u2019s head unit modem - Imperative Business Ventures Limited","isPartOf":{"@id":"https:\/\/blog.ibvl.in\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#primaryimage"},"image":{"@id":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#primaryimage"},"thumbnailUrl":"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191059\/SL-vehicle-modem-hack-featured-990x400.jpg","datePublished":"2025-12-19T09:15:26+00:00","author":{"@id":"https:\/\/blog.ibvl.in\/#\/schema\/person\/55b87b72a56b1bbe9295fe5ef7a20b02"},"breadcrumb":{"@id":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#primaryimage","url":"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191059\/SL-vehicle-modem-hack-featured-990x400.jpg","contentUrl":"https:\/\/media.kasperskycontenthub.com\/wp-content\/uploads\/sites\/43\/2025\/12\/15191059\/SL-vehicle-modem-hack-featured-990x400.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.ibvl.in\/index.php\/2025\/12\/19\/god-mode-on-how-we-attacked-a-vehicles-head-unit-modem\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.ibvl.in\/"},{"@type":"ListItem","position":2,"name":"God Mode On: how we attacked a vehicle\u2019s head unit modem"}]},{"@type":"WebSite","@id":"https:\/\/blog.ibvl.in\/#website","url":"https:\/\/blog.ibvl.in\/","name":"Imperative Business Ventures Limited","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.ibvl.in\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.ibvl.in\/#\/schema\/person\/55b87b72a56b1bbe9295fe5ef7a20b02","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.ibvl.in\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/4d20b2cd313e4417a599678e950e6fb7d4dfa178a72f2b769335a08aaa615aa9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4d20b2cd313e4417a599678e950e6fb7d4dfa178a72f2b769335a08aaa615aa9?s=96&d=mm&r=g","caption":"admin"},"sameAs":["https:\/\/blog.ibvl.in"],"url":"https:\/\/blog.ibvl.in\/index.php\/author\/admin_hcbs9yw6\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/posts\/178","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/comments?post=178"}],"version-history":[{"count":0,"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/posts\/178\/revisions"}],"wp:attachment":[{"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/media?parent=178"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/categories?post=178"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.ibvl.in\/index.php\/wp-json\/wp\/v2\/tags?post=178"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}