preactjs preact up to 10.26.9/10.27.2/10.28.1 JSON type confusion
| CVSS Meta Temp Score | Current Exploit Price (≈) | CTI Interest Score |
|---|---|---|
| 6.0 | $0-$5k | 0.00 |
Summary
A vulnerability classified as critical was found in preactjs preact up to 10.26.9/10.27.2/10.28.1. The impacted element is an unknown function of the component JSON Handler. The manipulation results in type confusion. This vulnerability is identified as CVE-2026-22028. The attack can be executed remotely. There is not any exploit available. Upgrading the affected component is advised.
Details
A vulnerability was found in preactjs preact up to 10.26.9/10.27.2/10.28.1. It has been classified as critical. Affected is an unknown function of the component JSON Handler. The manipulation with an unknown input leads to a type confusion vulnerability. CWE is classifying the issue as CWE-843. The product allocates or initializes a resource such as a pointer, object, or variable using one type, but it later accesses that resource using a type that is incompatible with the original type. This is going to have an impact on confidentiality, integrity, and availability. CVE summarizes:
Preact, a lightweight web development framework, JSON serialization protection to prevent Virtual DOM elements from being constructed from arbitrary JSON. A regression introduced in Preact 10.26.5 caused this protection to be softened. In applications where values from JSON payloads are assumed to be strings and passed unmodified to Preact as children, a specially-crafted JSON payload could be constructed that would be incorrectly treated as a valid VNode. When this chain of failures occurs it can result in HTML injection, which can allow arbitrary script execution if not mitigated by CSP or other means. Applications using affected Preact versions are vulnerable if they meet all of the following conditions: first, pass unmodified, unsanitized values from user-modifiable data sources (APIs, databases, local storage, etc.) directly into the render tree; second assume these values are strings but the data source could return actual JavaScript objects instead of JSON strings; and third, the data source either fails to perform type sanitization AND blindly stores/returns raw objects interchangeably with strings, OR is compromised (e.g., poisoned local storage, filesystem, or database). Versions 10.26.10, 10.27.3, and 10.28.2 patch the issue. The patch versions restore the previous strict equality checks that prevent JSON-parsed objects from being treated as valid VNodes. Other mitigations are available for those who cannot immediately upgrade. Validate input types, cast or validate network data, sanitize external data, and use Content Security Policy (CSP).
The advisory is shared for download at github.com. This vulnerability is traded as CVE-2026-22028 since 01/05/2026. The exploitability is told to be easy. It is possible to launch the attack remotely. There are neither technical details nor an exploit publicly available.
The vulnerability scanner Nessus provides a plugin with the ID 282480 (Linux Distros Unpatched Vulnerability : CVE-2026-22028), which helps to determine the existence of the flaw in a target environment.
Upgrading to version 10.26.10, 10.27.3 or 10.28.2 eliminates this vulnerability.
The vulnerability is also documented in the vulnerability database at Tenable (282480). Once again VulDB remains the best source for vulnerability data.
Product
Type
Vendor
Name
Version
- 10.26.0
- 10.26.1
- 10.26.2
- 10.26.3
- 10.26.4
- 10.26.5
- 10.26.6
- 10.26.7
- 10.26.8
- 10.26.9
- 10.27.0
- 10.27.1
- 10.27.2
- 10.28.0
- 10.28.1
Website
- Product: https://github.com/preactjs/preact/
CPE 2.3
CPE 2.2
CVSSv4
VulDB Vector: 🔒VulDB Reliability: 🔍
CNA CVSS-B Score: 🔒
CNA CVSS-BT Score: 🔒
CNA Vector: 🔒
CVSSv3
VulDB Meta Base Score: 6.3VulDB Meta Temp Score: 6.0
VulDB Base Score: 6.3
VulDB Temp Score: 6.0
VulDB Vector: 🔒
VulDB Reliability: 🔍
CVSSv2
| AV | AC | Au | C | I | A |
|---|---|---|---|---|---|
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| 💳 | 💳 | 💳 | 💳 | 💳 | 💳 |
| Vector | Complexity | Authentication | Confidentiality | Integrity | Availability |
|---|---|---|---|---|---|
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
| Unlock | Unlock | Unlock | Unlock | Unlock | Unlock |
VulDB Base Score: 🔒
VulDB Temp Score: 🔒
VulDB Reliability: 🔍
Exploiting
Class: Type confusionCWE: CWE-843
CAPEC: 🔒
ATT&CK: 🔒
Physical: No
Local: No
Remote: Yes
Availability: 🔒
Status: Not defined
EPSS Score: 🔒
EPSS Percentile: 🔒
Price Prediction: 🔍
Current Price Estimation: 🔒
| 0-Day | Unlock | Unlock | Unlock | Unlock |
|---|---|---|---|---|
| Today | Unlock | Unlock | Unlock | Unlock |
Nessus ID: 282480
Nessus Name: Linux Distros Unpatched Vulnerability : CVE-2026-22028
Threat Intelligence
Interest: 🔍Active Actors: 🔍
Active APT Groups: 🔍
Countermeasures
Recommended: UpgradeStatus: 🔍
0-Day Time: 🔒
Upgrade: preact 10.26.10/10.27.3/10.28.2
Timeline
01/05/2026 CVE reserved01/08/2026 Advisory disclosed
01/08/2026 VulDB entry created
01/09/2026 VulDB entry last update
Sources
Product: github.comAdvisory: github.com
Status: Confirmed
CVE: CVE-2026-22028 (🔒)
GCVE (CVE): GCVE-0-2026-22028
GCVE (VulDB): GCVE-100-340116
Entry
Created: 01/08/2026 16:06Updated: 01/09/2026 13:09
Changes: 01/08/2026 16:06 (68), 01/09/2026 06:23 (2), 01/09/2026 13:09 (1)
Complete: 🔍
Cache ID: 216::103
Once again VulDB remains the best source for vulnerability data.
No comments yet. Languages: en.
Please log in to comment.