Skip to main content

Espressif shared-github-dangerjs CVE-2026-44358

| EUVDEUVD-2026-32908 HIGH
Uncontrolled Search Path Element (CWE-427)
2026-05-28 GitHub_M
8.2
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Fork target repository on GitHub
  2. Delivery
    Plant malicious node_modules/.bin/danger in fork
  3. Exploit
    Open pull request triggering pull_request_target
  4. Execution
    entrypoint.sh runs npx from /github/workspace
  5. Persist
    Attacker binary executes in action container
  6. Impact
    Exfiltrate GITHUB_TOKEN and repository secrets

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V13 - Configuration Search path element control
Exploitation Conditions

Requires the downstream consumer to invoke espressif/shared-github-dangerjs at a version prior to 1.0.1 from a workflow triggered by pull_request_target (or another trigger that checks out fork content into /github/workspace while retaining base-repo secrets), and an attacker able to open a pull request from a fork - which on public repositories is any GitHub user. UI:R is satisfied when the workflow runs on the fork PR, which is automatic for pull_request_target unless gated by environment approvals or branch filters. Exploitation is NOT possible against consumers using the safer pull_request trigger (fork code runs without base secrets), consumers pinned to commit SHA d7424080 or tag 1.0.1+, or repositories that gate the job on head.repo.full_name == github.repository.

Impact

CVSS 8.2 (AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:H/A:N) reflects the cross-scope impact: an unauthenticated external attacker (any GitHub user able to open a fork PR) can compromise the integrity of the calling repository, with scope change capturing the leap from the action container into the parent CI/CD trust boundary. UI:R maps to a maintainer or automated workflow triggering CI on the fork PR, which in pull_request_target setups is often automatic. No EPSS, KEV, or SSVC data was supplied and no public exploit identified at time of analysis, but the fix commit publicly documents the exact hijack primitive (CWD-based npx resolution and stray node_modules), which substantially lowers the bar for weaponization against any downstream Espressif repository still on 1.0.0. Real priority is high for organizations that consumed this action via a floating major tag and use pull_request_target; lower for repos pinned to commit SHAs or using only pull_request.

Exploit ScenarioDerived

An attacker forks a repository that consumes espressif/shared-github-dangerjs in a pull_request_target workflow, commits a malicious node_modules/.bin/danger (or a node_modules tree shadowing a module the action loads) to their fork, and opens a pull request. When the base repo's workflow runs, entrypoint.sh's npx danger resolves to the attacker's binary inside /github/workspace, executing arbitrary code with the workflow's GITHUB_TOKEN and any configured secrets, enabling secret exfiltration or pushes to the base repository.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.0% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – May 28, 2026

Untrusted search path in Espressif's shared-github-dangerjs GitHub Action prior to 1.0.1 allows a fork pull request, when processed by a pull_request_target workflow, to substitute attacker-controlled binaries and Node.js modules for the action's own code. Exploitation yields code execution inside the action container with access to repository secrets and write-scoped GITHUB_TOKEN, with no public exploit identified at time of analysis.

RemediationAI

Vendor-released patch: 1.0.1, which invokes danger via the absolute path /node_modules/.bin/danger and runs rm -rf /github/workspace/node_modules before execution to neutralize fork-supplied modules; upgrade by bumping the uses: reference in calling workflows to espressif/shared-github-dangerjs@1.0.1 (or, preferably, pin to the fix commit SHA d7424080) per the advisory at https://github.com/espressif/shared-github-dangerjs/security/advisories/GHSA-wm3p-pv54-6w73. If immediate upgrade is not possible, switch the calling workflow's trigger from pull_request_target to pull_request so secrets and write-scoped tokens are not exposed to fork code (trade-off: the workflow will no longer be able to post Danger comments back to the PR), or gate the job behind an if: github.event.pull_request.head.repo.full_name == github.repository check to skip fork PRs entirely (trade-off: forks receive no Danger feedback). Avoid relying on permissions: read-all alone, since the underlying hijack still executes attacker code in the runner.

Affected VersionsENISA

shared-github-dangerjs < 1.0.1

Affected Packages

euvd shared_github_dangerjs fix: 1.0.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

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

Technical ContextAI · show details

The vulnerability is a CWE-427 (Uncontrolled Search Path Element) flaw in entrypoint.sh of the reusable Espressif DangerJS GitHub Action (CPE cpe:2.3:a:espressif:shared-github-dangerjs). The action ran npx danger ci from the caller's workspace after the fork's checkout had been copied into it; because npx resolves binaries relative to the current working directory's node_modules/.bin and Node.js resolves modules from the nearest node_modules tree, a fork PR could supply both a malicious danger binary and arbitrary modules that Node would load in preference to the action's intended code. The danger here is amplified by the pull_request_target trigger, which runs with the base repository's secrets and a privileged GITHUB_TOKEN, unlike the safer pull_request trigger.

Know when Shared Github Dangerjs 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 (GitHub_M) PRIMARY 8.2 HIGH
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:H/A:N

Primary rating from Vendor (GitHub_M) · only source for this CVE.

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Confidentiality
Low
Integrity
High
Availability
None

Lifecycle Timeline

1
Patch available
May 28, 2026 - 17:01 EUVD

DescriptionCVE.org

Espressif Shared GitHub DangerJS is a reusable GitHub Action CI DangerJS workflow for Espressif GitHub projects. Prior to 1.0.1, the action's entrypoint.sh invoked DangerJS from the caller's workspace after copying the fork's checkout into it, creating an untrusted search path for both binary resolution and Node.js module resolution. A fork pull request processed by a pull_request_target workflow could therefore cause fork-supplied code to execute inside the action container in place of the action's own code. This vulnerability is fixed in 1.0.1.

Executive ViewAI

Why It Matters

Espressif's shared-github-dangerjs GitHub Action (versions prior to 1.0.1) contains an untrusted search path vulnerability enabling arbitrary code execution within CI/CD pipeline containers during pull request processing. Attackers can inject malicious binaries and modules to capture repository secrets and manipulate code with write-scoped GitHub tokens. Organizations relying on this action for pull request automation face direct threats to code integrity, credential compromise, and supply chain exposure.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) Restrict pull_request_target workflows to protected branches only or disable entirely for fork pull requests; (2) Apply least-privilege GITHUB_TOKEN permissions at job level (read-only for contents and pull-requests); (3) Require manual approval for pull_request_target workflow runs; (4) Migrate to alternative dependency scanning tools with stronger isolation and review mechanisms.

Threat Intelligence Overview

EPSS Score
0.0%
Top 92% exploitable
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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 HIGH
CISA KEV No
Public POC No
EPSS 0.0%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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