Skip to content

Forged DMs with no PKC show up as encrypted

Moderate
jamesarich published GHSA-h4rg-g6f3-ghh7 Jun 24, 2025

Package

No package listed

Affected versions

< 2.5.21

Patched versions

2.5.21

Description

Description

An attacker is able to send an unencrypted direct message to a victim impersonating any other node of the mesh. This message will be displayed in the same chat that the victim normally communicates with the other node and it will appear as using PKC, while it is not. This means that the victim will be provided with a false sense of security due to the green padlock displayed when using PKC and they'll read the attacker's message as legitimate.

PoC

Due to time constraints, this PoC was performed experimentally rather than making a dedicated firmware and script that allows for automatic exploitation of this issue.

The configuration used is as follows:

  • Device A - T-Echo 2.6.2
  • Device B - T1000-E 2.6.2
  • Client Android - 2.5.19

The steps to reproduce the observed behavior are:

  1. Device A is in PKC mode.
    Device B is in PKC mode.

  2. A enables HAM mode.

  3. A sends new NodeInfo.
    B sees A as using HAM mode.

  4. Using the client app with Device B, for example, the Android one, go on the list of nodes and pick to send a direct message ("DM") to A. This will create a new entry in the messages tab. In fact, reusing an already open message entry would fail due to it using PKC, hence it is necessary to manually go on the DM option again.

  5. B sends messages to A using the new chat, which uses the default shared key of the Meshtastic channel. Device A receives messages even though the app with Device B shows that messages can't be delivered. +
    B sees the messages sent by A in a new chat automatically created that has no PKC.

  6. A switches back to PKC.

  7. A sends new NodeInfo.
    B can send messages to A both in the no PKC and in the PKC channel.

.Screenshot PKC chat - Device B

image

.Screenshot shared Key chat - Device B

image

  1. A receives both the PKC message and the one encrypted using the shared key inside the PKC chat, causing a loss of integrity in the direct messages.

.Screenshot of the victim Device A

image

.Screenshot Debug Info

image

Remediation

It is suggested to implement a stricter control on whether a message has been received using PKC or using the shared Meshtastic channel key.

Moreover, instead of showing no green padlock icon in the chat with no PKC, consider using an explicit indicator like, for example, the yellow half-open padlock displayed when in HAM mode. This remediation, however, applies to the client applications rather than the Meshtastic firmware.


Issue as reported originally on the Meshtastic Firmware repo: https://github.com/meshtastic/firmware/security/advisories/GHSA-377p-prwp-4hwf. The issue was already fixed in MR #1720.

Severity

Moderate

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N

CVE ID

CVE-2025-52883

Weaknesses

Improper Validation of Specified Type of Input

The product receives input that is expected to be of a certain type, but it does not validate or incorrectly validates that the input is actually of the expected type. Learn more on MITRE.

Credits