protobufjs CVE-2026-44288
MEDIUMAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAttacker crafts protobuf message
-
DeliveryEncodes string with overlong UTF-8 sequences
-
ExploitMessage bypasses byte-level validation filters
-
Installprotobufjs minimal decoder canonicalizes overlong bytes
-
C2Decoded string contains characters forbidden in raw bytes
-
ExecuteApplication trusts decoded string in security context
-
ImpactValidation bypass achieved
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Unicode normalization
|
| Exploitation Conditions | The vulnerability requires all four of the following conditions to be met for meaningful impact: (1) the application must process protobuf binary data influenced or provided by an attacker, (2) the affected protobuf string field must be decoded through protobufjs's minimal UTF-8 decoder rather than a native UTF-8 decoder (this occurs in non-Node.js environments such as browsers, Cloudflare Workers, or other edge runtimes; Node.js applications typically use native Buffer decoding and are not affected), (3) the application must perform byte-level filtering or validation on the raw protobuf message before decoding (e.g., rejecting messages containing certain byte sequences), and (4) the decoded string must be used in a subsequent security-sensitive operation that depends on the byte-level filtering having been effective. Node.js applications using default Buffer-backed decoding paths are not vulnerable. Browser-based protobufjs deployments and edge-runtime environments that fall back to the minimal decoder are the primary targets. |
| Impact | CVSS 5.3 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N) indicates remote unauthenticated exploitation with low complexity, but integrity impact only (no confidentiality or availability loss). However, real-world risk is highly contextual and depends on three converging preconditions: (1) application decodes attacker-controlled protobuf data, (2) decoding uses protobufjs's minimal decoder rather than Node's native path, and (3) the application performs byte-level validation before decoding and then uses the decoded string in a security-sensitive check. This is a validation bypass vulnerability, not a direct remote code execution or denial-of-service vector. The low CVSS reflects the integrity impact alone; practical exploitation requires downstream application logic that falsely assumes byte-level filtering provides security guarantees post-decoding. Applications using Node.js Buffer-backed paths (standard in Node.js environments) are not affected, narrowing the exposed surface to browser-based and edge-runtime protobufjs instances. |
| Exploit ScenarioDerived | An attacker sends a protobuf message with a string field encoded using overlong UTF-8 sequences. For example, the letter 'A' (ASCII 0x41) could be encoded as the overlong sequence 0xC0 0x81 instead of its valid single-byte form 0x41. An application that filters raw protobuf bytes for forbidden characters (e.g., rejecting messages containing 0x41) would pass the malicious message through. When protobufjs decodes the string using the minimal UTF-8 decoder, it canonicalizes the overlong sequence to 'A', resulting in a string that bypassed the application's byte-level filter. The application then uses this bypassed string in a security decision (e.g., accepting it as a safe username or command), leading to validation bypass. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – May 12, 2026
protobufjs versions 7.5.5 and earlier, and 8.0.0-8.0.1 accept overlong UTF-8 byte sequences in the minimal UTF-8 decoder used by non-Node and fallback decoding paths, allowing attackers to bypass byte-level filtering and decode strings containing characters that were not present in the raw protobuf binary input. This integrity issue affects applications that rely on pre-decoding byte validation before using protobuf strings in security-sensitive contexts. Patch versions 7.5.6 and 8.0.2 are available; Node.js Buffer-backed paths are not directly affected.
RemediationAI
Upgrade protobufjs to version 7.5.6 (for the 7.x branch) or 8.0.2 (for the 8.x branch); upgrade @protobufjs/utf8 to version 1.1.1 if used as a standalone dependency. These versions fix the overlong UTF-8 decoding issue. For applications unable to immediately patch, implement validation at the point where decoded strings are used rather than relying exclusively on byte-level filtering before decoding. In browser and non-Node.js environments, prefer code paths that delegate UTF-8 decoding to platform-native implementations where possible (e.g., TextDecoder API in browsers). Review and update any byte-level filters that assume protobuf strings have been validated during decoding; move validation logic to occur after decoding for security-sensitive fields. See https://github.com/protobufjs/protobuf.js/security/advisories/GHSA-q6x5-8v7m-xcrf for additional mitigation guidance.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
protobufjs is a JavaScript protocol buffer library that includes a minimal UTF-8 decoder for environments where native UTF-8 decoding is unavailable (e.g., browsers, non-Node runtimes). UTF-8 encoding standards require that code points be represented in their shortest form; overlong encodings use more bytes than necessary and are invalid per RFC 3629. The vulnerable decoder failed to reject these overlong sequences, instead canonicalizing them to their corresponding characters. This violates the UTF-8 specification (CWE-176: Improper Handling of Unusual Unicode Characters and Normalization) and creates a semantic gap: bytes inspected by application-level filters do not match the bytes used for UTF-8 decoding, enabling bypass attacks. The @protobufjs/utf8 package contains the shared UTF-8 implementation affected across both major versions.
Know when Node.js gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
DescriptionGitHub Advisory
Summary
protobufjs includes a minimal UTF-8 decoder used in non-Node and fallback decoding paths. The affected decoder accepted overlong UTF-8 byte sequences and decoded them to their canonical characters instead of replacing them.
The issue concerns overlong encodings and code points outside the Unicode range. protobufjs may still accept some non-strict UTF-8 input for compatibility, so applications should not rely on protobufjs as a general-purpose strict UTF-8 validator.
Impact
An attacker who can provide protobuf binary data decoded through the affected UTF-8 path may be able to bypass application-level checks that inspect raw bytes before protobuf string decoding. For example, bytes that do not contain certain ASCII characters could decode to strings containing those characters.
The practical impact depends on downstream application validation and how decoded strings are used. Node.js Buffer-backed decoding paths are not directly affected when they use Node's native UTF-8 decoding.
Preconditions
- The application must decode protobuf binary data influenced by an attacker.
- The affected protobuf string field must be decoded through protobufjs's minimal UTF-8 decoder rather than a native UTF-8 decoder.
- The application must rely on byte-level filtering or validation before protobuf string decoding.
- The decoded string must then be used in a security-sensitive context.
Workarounds
Avoid relying only on byte-level filtering before protobuf string decoding with affected versions. Validate decoded strings at the point where they are used, and prefer runtime paths that use native UTF-8 decoding where necessary.
Blast Radius
ecosystem impact- 8 npm packages depend on @protobufjs/utf8 (6 direct, 2 indirect)
- 1,651 npm packages depend on protobufjs (129 direct, 1,523 indirect)
Ecosystem-wide dependent count for version 1.1.1 and other introduced versions.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Affected Products (CPE)GitHub Advisory
Remote code execution in n8n's workflow expression evaluation system allows an authenticated user with workflow creation
A vulnerability in the NuPoint Unified Messaging (NPM) component of Mitel MiCollab through 9.8 SP1 FP2 (9.8.1.201) could
FortiOS and FortiProxy contain an authentication bypass via the Node.js websocket module allowing unauthenticated remote
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
Eval injection vulnerability in the internals.batch function in lib/batch.js in the bassmaster plugin before 1.5.2 for t
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Node.js 8.5.0 before 8.6.0 allows remote attackers to access unintended files, because a change to ".." handling was inc
An issue was discovered in the node-serialize package 0.0.4 for Node.js. Rated critical severity (CVSS 9.8), this vulner
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
Directory traversal vulnerability in the st module before 0.2.5 for Node.js allows remote attackers to read arbitrary fi
Multiple SQL injection vulnerabilities in the Manage Accounts page in the AccountManagement.asmx service in the Solarwin
The JS-YAML module before 2.0.5 for Node.js parses input without properly considering the unsafe !!js/function tag, whic
GHSA-q6x5-8v7m-xcrf
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB