Skip to main content

Espruino CVE-2026-88389

| EUVDEUVD-2026-87108 MEDIUM
NULL Pointer Dereference (CWE-476)
2026-09-25 mitre GHSA-pp3g-9mvp-c3vm
6.2
CVSS 3.1 · Vendor: mitre
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Gain input access to Espruino interpreter
  2. Delivery
    Submit crafted malformed raw string
  3. Exploit
    Lexer frees iterator, passes NULL to jsvLockAgain
  4. Execution
    Write through NULL pointer
  5. Impact
    Memory corruption and interpreter termination (DoS)

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires the ability to feed crafted raw/binary string input into the Espruino lexer (jslGetRawString in src/jslex.c) - i.e., the attacker must supply script or raw-string source to the interpreter, which is Espruino's normal input path via REPL, serial/USB console, or script loading. Critically, exploitation is limited to RELEASE/NO_ASSERT builds: assertion-enabled (debug) builds catch the NULL iterator and abort safely. Impact is confined to memory corruption and process termination (denial of service) of the interpreter itself; there is no confidentiality or integrity impact. The CVSS vector indicates a local attack vector (AV:L), so remote network exploitation is not implied unless the interpreter is exposed over a network-facing input channel.

Impact

This is a genuine but low-priority issue. The provided CVSS 3.1 vector (AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 6.2) describes a local, availability-only NULL pointer dereference - no confidentiality or integrity impact, only crash/DoS. EPSS is very low at 0.14% (3rd percentile), it is NOT in CISA KEV, and no public exploit was identified in the supplied data (the GitHub issue #2745 and the fix commit are referenced, but there is no weaponized POC). All signals align in the same direction: low real-world exploitation likelihood and impact limited to termination of the Espruino process. The one nuance worth stating explicitly is that the flaw only manifests in RELEASE/NO_ASSERT builds - debug/assert-enabled builds catch the NULL iterator via the assertion guard, so exploitability is build-configuration dependent. Exploitation also presupposes the attacker can already feed crafted script/raw-string input to the interpreter, which on a JavaScript runtime is the normal operating mode rather than a privilege boundary. Net: a real, vendor-fixed bug, but not an urgent priority.

Exploit ScenarioDerived

An attacker who can submit JavaScript source or raw/binary string input to an Espruino interpreter (e.g., via a REPL, serial/USB console, or a script-loading interface) supplies a malformed raw string that pushes the lexer's string iterator to EOF and frees lex->it.var. jslGetRawString() then passes the resulting NULL iterator target to jsvLockAgain(), and on a RELEASE/NO_ASSERT build the missing assertion allows a write through the NULL pointer, corrupting memory and terminating the interpreter. No public exploit code was identified, though the triggering issue and fix commit are public.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
No patch listed yet 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 29, 2026

Memory corruption and denial-of-service in Espruino's JavaScript lexer can be triggered by crafted raw or binary string input, causing a NULL pointer dereference in jslGetRawString() (src/jslex.c) when the lexer passes a NULL iterator target to jsvLockAgain(). Only RELEASE/NO_ASSERT builds are affected-assertion-enabled debug builds abort safely-and the CVSS vector (AV:L/PR:N) indicates unauthenticated local attackers who can supply script input via REPL, serial/USB console, or script loading can terminate the interpreter. EPSS is 0.14% (3rd percentile), no public exploit code has been identified, and an upstream fix commit (0db0663) is available.

RemediationAI

Apply the upstream fix in commit 0db0663ac5201a6fea68094b45da673edec45187, which adds a NULL check around jsvLockAgain(lex->it.var) in src/jslex.c and prevents the write through the NULL pointer; this is the vendor-released correction, though a tagged patched release version is not independently confirmed, so integrators should track Espruino's repository and releases for the first stable version containing that commit. Until an official release is adopted, the most effective compensating control is to run assertion-enabled (debug) firmware, which aborts safely on the NULL iterator instead of corrupting memory-the trade-off is reduced performance and larger debug builds compared with RELEASE builds. Additionally, restrict who can supply scripts or raw/binary string input to the interpreter: limit access to the REPL, serial/USB console, and script-loading interfaces to trusted operators, avoid executing untrusted raw or binary script content, and isolate or sandbox the interpreter process so a crash cannot affect other services. These access restrictions reduce the local attack surface (AV:L) but do not remove the underlying lexer defect; patching remains the definitive fix. Advisory details are available at https://github.com/espruino/Espruino/issues/2745 and the patch at https://github.com/espruino/Espruino/commit/0db0663ac5201a6fea68094b45da673edec45187.

Affected VersionsENISA

n/a n/a

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Espruino is a JavaScript interpreter for microcontrollers, and its lexer in src/jslex.c handles tokenization of scripts, including raw and binary string literals. The vulnerable function jslGetRawString() calls jsvLockAgain(lex->it.var) under the assumption that a preceding iteration step left lex->it.var locked; however, a malformed raw string or a raw string at end-of-input can push the string iterator to the end and free lex->it.var, making it NULL. In RELEASE or NO_ASSERT builds, the missing assertion guard means jsvLockAgain(NULL) proceeds and a write occurs through the NULL pointer, corrupting memory and terminating the process. This is classified as CWE-476 (NULL Pointer Dereference). Debug builds with assertions enabled catch the NULL iterator and abort safely before the write, so impact is confined to non-assertion production builds. The CVSS vector (AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) confirms a local, unauthenticated availability-only issue with no confidentiality or integrity impact, consistent with the interpreter's normal input path via REPL, serial/USB console, or script loading rather than remote network exposure.

Know when N A 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

Vendor (mitre) PRIMARY 6.2 MEDIUM
AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 6.2 MEDIUM

Local input to the interpreter (AV:L), no auth boundary since feeding script is the normal mode (PR:N), reliably triggered on release builds (AC:L), and impact is crash-only (A:H, C/I:N).

3.1 AV:L/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:L/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (mitre).

CVSS VectorVendor: mitre

Attack Vector
Local
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
CVSS changed
Sep 29, 2026 - 04:22 NVD
6.2 (MEDIUM)
CVE Published
Sep 25, 2026 - 00:00 cve.org
UNKNOWN (no severity yet)

DescriptionCVE.org

Espruino 2v29 (commit bffc6d0) contains a NULL pointer dereference vulnerability in jslGetRawString() in src/jslex.c. Crafted raw/binary string input can cause the lexer to pass a NULL iterator target to jsvLockAgain(). In RELEASE/NO_ASSERT builds, the missing assertion guard allows a write through the NULL pointer, resulting in memory corruption and application termination or denial of service.

Threat Intelligence Overview

EPSS Score
0.1%
Top 97% exploitable
Prevalence
Low
niche open-source JavaScript interpreter for microcontrollers/IoT hobbyist devices
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available No
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Defer
Exploitation· derived
None
System Exposure· derived
Small
Automatable· derived
No
Human Impact· derived
Medium

Priority Score

31
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +31
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

More in N A

View all
CVE-2024-51092 CRITICAL POC
9.1 May 08

LibreNMS before 24.10.0 allows a remote attacker to execute arbitrary code via OS command injection involving AboutContr

CVE-2025-15684 MEDIUM POC
5.5 Aug 12

Reachable assertion in Open5GS up to version 2.7.6 allows remote unauthenticated attackers to crash the Diameter CER han

CVE-2024-45257 HIGH POC
7.3 May 08

A Command Injection issue in the payload build page in BYOB (Build Your Own Botnet) 2.0 allows attackers to execute arbi

CVE-2025-15687 LOW POC
2.1 Aug 12

Denial of service in Open5GS 2.7.6 and earlier allows network-adjacent attackers with low-privilege Diameter Gx peer acc

CVE-2025-15686 LOW POC
2.1 Aug 12

Denial of service in Open5GS HSS (Home Subscriber Server) versions 2.7.0 through 2.7.6 is triggered remotely by manipula

CVE-2025-67888 HIGH POC
7.3 May 08

Remote command injection in Control Web Panel allows unauthenticated attackers to execute arbitrary OS commands as root

CVE-2024-53326 HIGH POC
7.3 May 08

LINQPad before 5.52.01 Pro edition is vulnerable to Unsafe Deserialization in LINQPad.AutoRefManager::PopulateFromCache(

CVE-2026-38360 CRITICAL POC
9.8 May 08

Remote code execution in dash-uploader (Python package for Plotly Dash) versions 0.1.0 through 0.7.0a2 allows unauthenti

CVE-2026-30623 CRITICAL POC
9.8 Jul 15

Command injection in LiteLLM 1.18.10 lets attackers who can configure MCP (Model Context Protocol) servers supply arbitr

CVE-2026-67917 CRITICAL POC
9.8 Aug 17

SQL injection in AzuraCast's backup restore flow (versions up to and including 0.23.7) lets an attacker achieve privileg

CVE-2026-75337 CRITICAL POC
9.8 Aug 27

Arbitrary file read in Yu AI Code Mother v4.3 lets anonymous, remote attackers retrieve files outside the intended previ

CVE-2026-31072 CRITICAL POC
9.8 May 19

Remote code execution in APScheduler (all versions through 3.10.x and 4.0.0a5) is achievable when applications deseriali

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy