Mar 2, 2026·5 min read·4 visits
Unauthenticated attackers can connect to Chargemap's backend as any charging station using only the station's ID. This allows full control over charging sessions and data reporting. No patch is currently available.
A critical missing authentication vulnerability (CWE-306) in the Chargemap backend infrastructure allows unauthenticated remote attackers to impersonate electric vehicle (EV) charging stations. By leveraging publicly discoverable station identifiers, attackers can establish unauthorized WebSocket connections to the Open Charge Point Protocol (OCPP) interface. This access permits the manipulation of charging sessions, falsification of meter data, and potential denial of service against legitimate infrastructure.
CVE-2026-25851 identifies a critical security flaw in the backend infrastructure of chargemap.com, specifically within the endpoints handling the Open Charge Point Protocol (OCPP). The vulnerability is classified as Missing Authentication for Critical Function (CWE-306). Ideally, OCPP implementations require charging stations (Charge Points) to authenticate using a unique token, password (Basic Auth), or client certificate (mTLS) during the WebSocket handshake.
In the affected Chargemap implementation, the backend fails to verify the identity of the connecting client beyond the Station ID provided in the connection URL. This architectural oversight allows any entity with knowledge of a valid Station ID to establish a full-duplex WebSocket connection with the Central System. Once connected, the attacker is effectively treated as the physical charging station, gaining the ability to send status updates and receive remote commands.
The impact is severe because the Station IDs—intended to be public identifiers for users to locate chargers—are effectively used as the sole authentication factor. This conflates identity (who you are) with authentication (proving who you are), removing the security barrier between public knowledge and privileged access.
The root cause lies in the implementation of the WebSocket handshake for OCPP. The OCPP specification (versions 1.6 and 2.0.1) defines security profiles. Security Profile 1 allows for HTTP Basic Authentication, while Profiles 2 and 3 mandate TLS and client certificates. The Chargemap backend appears to accept connections without enforcing these authentication layers.
Vulnerable Handshake Logic: When a standard WebSocket client initiates a connection, the request looks like this:
GET /ocpp/STATION-12345 HTTP/1.1
Host: backend.chargemap.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Protocol: ocpp1.6The server logic validates only the existence of STATION-12345. If the ID exists in the database, the server responds with 101 Switching Protocols, establishing the session. No Authorization header is requested or verified.
Secure Implementation Requirement: A secure implementation must challenge the client. For Security Profile 1 (or 2), the request must include credentials:
Authorization: Basic <Base64(StationID:Password)>The absence of this check means the security of the entire charging network relies on the secrecy of the Station ID. However, as noted in the related CVE-2026-20791, these IDs are publicly exposed via mapping interfaces, rendering the secrecy assumption invalid.
The exploitation of this vulnerability is trivial and requires low technical skill, contributing to its critical severity. The attack chain follows a standard logic flaw exploitation path.
The attacker first obtains a target Station ID. Due to CVE-2026-20791, these IDs are available on public maps or the Chargemap application itself. No scanning or brute-forcing is required if the ID format is known or scraped.
The attacker uses a WebSocket client (e.g., wscat or a custom Python script) to connect to the backend.
# Example connection attempt
wscat -c wss://backend.chargemap.com/ocpp/CP_12345 -s ocpp1.6Upon successful connection, the backend may behave in two ways regarding the legitimate station's existing connection. Per CVE-2026-25711, the system allows multiple connections or allows the new connection to override the old one (Ghost Connection/Shadowing). The attacker creates a 'BootNotification' to register their rogue client.
[
2,
"msg_id_001",
"BootNotification",
{
"chargePointVendor": "Attacker",
"chargePointModel": "VirtualStation"
}
]Once the session is active, the attacker can:
StatusNotification indicating a fault or simply accept a RemoteStopTransaction command.MeterValues to inflate or deflate energy consumption records.The convergence of missing authentication and public identifiers creates a high-impact scenario for Charge Point Operators (CPOs) utilizing the Chargemap backend.
CVSS v3.1 Vector Analysis:
> [!WARNING] > No Patch Available: As of the publication date, the vendor (Chargemap) has not responded to CISA coordination requests or released a patch.
Since the vulnerability resides on the vendor's cloud backend, end-users (EV drivers) have no mitigation options. Charge Point Operators (CPOs) who rely on Chargemap for backend management should take the following steps:
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:L| Product | Affected Versions | Fixed Version |
|---|---|---|
Chargemap Backend Services Chargemap | all versions | None |
| Attribute | Detail |
|---|---|
| CWE | CWE-306: Missing Authentication for Critical Function |
| CVSS v3.1 | 9.4 (Critical) |
| Attack Vector | Network (Remote) |
| Attack Complexity | Low |
| Privileges Required | None |
| Exploit Status | No known public PoC, but trivial to exploit |
| Vendor Status | Unpatched / Unresponsive |
The software does not perform any authentication for functionality that requires a provable user identity or consumes a significant amount of resources.