Meshtastic
CVE-2026-44359
CRITICAL
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconFork meshtastic/firmware repo
-
DeliveryOpen PR with malicious build script
-
Exploitpull_request_target auto-runs job
-
InstallFork code checked out and executed
-
C2Access secrets and GITHUB_TOKEN
-
ExecuteExfiltrate keys and poison artifacts
-
ImpactSupply chain / repo takeover
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation required only that the target repository used the pull_request_target trigger with jobs that checked out the fork head (ref: github.event.pull_request.head.ref / repository: head.repo.full_name) and had no environment approval gate - all true for meshtastic/firmware before 2.7.21.1370b23. A PR from any external account with author_association NONE was sufficient and the workflow ran automatically, so no maintainer interaction, no repository membership, and no prior authentication were needed. The practical limits: the flaw is exploitable only against the project's own CI (not against firmware running on end-user devices), the malicious PR is visible in the public PR list (some forensic exposure for the attacker), and value depends on the secrets/permissions actually granted to the runner. Post-patch (pull_request trigger, no fork checkout in privileged context) the conditions no longer hold. |
| Impact | The signals are largely consistent and point to genuine high priority for the maintainers, though the exposure is unusual. The CVSS 3.1 vector AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N with a 10.0 score reflects unauthenticated, low-complexity, network-reachable exploitation with a scope change (CI secrets and downstream supply chain). Any GitHub user could open a PR and automatically trigger execution - no maintainer approval was required - which is as low-friction as CI attacks get. No EPSS score, KEV listing, or confirmed POC is provided, so there is no evidence of active exploitation; the risk is the ease and impact of exploitation rather than observed abuse. One caveat: this is not a vulnerability in deployed Meshtastic devices - the blast radius is the project's build infrastructure, secrets, self-hosted runners, and the supply chain of published artifacts, so 'who is affected' is the project and its downstream consumers rather than end-user nodes. The A:N in the supplied vector is arguable given that repository takeover and self-hosted runner compromise plausibly impact availability. |
| Exploit ScenarioDerived | An external attacker forks meshtastic/firmware, adds a malicious build script or modified source to their branch, and opens a pull request; because the workflow triggers on pull_request_target with author_association NONE and no approval gate, the check/build jobs automatically check out and execute the attacker's code with repository secrets and an elevated GITHUB_TOKEN. From there the attacker exfiltrates secrets, poisons build artifacts, or compromises self-hosted runners, potentially achieving repository takeover and downstream supply chain compromise. No public exploit is confirmed, but the linked Google Drive document may contain a proof of concept. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 19, 2026
Poisoned-pipeline (pwn request) code execution in the Meshtastic firmware repository's GitHub Actions CI allows any external user to run arbitrary code inside the project's trusted CI context prior to firmware 2.7.21.1370b23. Because main_matrix.yml (and related workflows) triggered on pull_request_target while the check, build, and build-debian-src jobs checked out and executed code from the attacker's fork with no approval gate, a pull request from an author_association of NONE automatically ran attacker-controlled files with access to repository secrets and an elevated GITHUB_TOKEN. This is CWE-94 code injection scoring CVSS 10.0; no public exploit identified at time of analysis, though a linked Google Drive writeup may contain proof-of-concept detail.
RemediationAI
Vendor-released patch: 2.7.21.1370b23, delivered in commit 5716aeba3bc1e1d34fba9567ff88917ede4a78a5, which switches the main workflow trigger from pull_request_target to pull_request and removes the explicit fork checkout (ref/repository) lines across the check, build, build-debian-src, docker, and test jobs, and gates privileged steps behind github.event_name == 'pull_request'. Maintainers should adopt this patched workflow state, then rotate any secrets (signing keys such as the GPG key, tokens, registry credentials) that a fork PR could have exfiltrated while the flaw was live, and audit self-hosted runners for tampering. As durable compensating controls, avoid pull_request_target for jobs that build or run PR code; if privileged post-processing on PRs is genuinely required, split it into a two-workflow pattern (untrusted build on pull_request with no secrets, privileged step on workflow_run) and require an approval gate/environment protection for first-time contributors - note this adds latency to external PR CI. See the advisory at https://github.com/meshtastic/firmware/security/advisories/GHSA-mjx5-98jq-q736.
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
The root cause is the well-known GitHub Actions pull_request_target anti-pattern. Unlike the pull_request trigger, pull_request_target runs the workflow in the context of the base repository with read/write GITHUB_TOKEN and access to repository secrets, but it is designed to check out only trusted base-branch code. Here the workflows explicitly checked out the untrusted fork by setting ref: github.event.pull_request.head.ref and repository: github.event.pull_request.head.repo.full_name, then built/executed that code - combining privileged context with attacker-controlled content. CWE-94 (Improper Control of Generation of Code) captures this: the CI effectively executes attacker-supplied build scripts and source as if trusted. The affected asset per CPE cpe:2.3:a:meshtastic:firmware is the meshtastic/firmware repository CI, not the compiled firmware on devices. This issue is distinct from GHSA-6mwm-v2vv-pp96, which fixed a separate github.head_ref command injection in the setup job by moving it to environment variables; the fork-checkout flaw in the check, build, and build-debian-src jobs remained until this patch.
Know when Firmware 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:C/C:H/I:H/A:N
Unauthenticated PR auto-triggers CI code execution (AV:N/AC:L/PR:N/UI:N); secrets and downstream supply chain make it S:C, and repo/runner takeover justifies full C:H/I:H/A:H.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
Meshtastic is an open source mesh networking solution. Prior to version 2.7.21.1370b23, the Meshtastic GitHub repository's main_matrix.yml workflow is triggered by pull_request_target and multiple jobs check out the attacker's fork code and execute it with access to repository secrets and elevated GITHUB_TOKEN permissions. No approval gate exists. Pull requests from external users with author_association: "NONE" triggered the CI workflow automatically. The workflow directly executes attacker-controlled files from the fork checkout. This issue could have resulted in supply chain compromise, self-hosted runner compromise, and/or repository takeover for the repo. This issue is separate from GHSA-6mwm-v2vv-pp96, which addressed a command injection via github.head_ref in the setup job of the same workflow. That fix correctly moved to environment variables. However, the more critical fork checkout vulnerability across the check, build, and build-debian-src jobs was not addressed. Version 2.7.21.1370b23 contains a patch for thie issue.
Executive ViewAI
A code injection vulnerability in Meshtastic's GitHub Actions CI pipeline allows any external GitHub user to execute arbitrary code with access to repository secrets and deployment credentials, compromising the integrity of firmware releases distributed to all end users. Attackers only need to open a pull request-no repository access or special privileges required-to inject malicious code in the trusted CI context; no public exploit identified at time of analysis. This represents a critical supply chain risk that could enable widespread distribution of compromised firmware to the entire user base.
No vendor-released patch identified at time of analysis. Restrict GitHub Actions pull_request_target workflows to require explicit manual approval before any code execution for external pull requests; prevent code checkout from external forks and only execute code from the main repository branch; disable automated CI execution for contributors with author_association=NONE; require signed commits and maintainer code review approval; immediately audit and rotate all GitHub repository secrets, deploy tokens, and API credentials; implement firmware cryptographic signing and verification; monitor firmware release channels for unauthorized or unsigned variants.
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
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Affected Products (CPE)CVE.org
The Compal Broadband Networks (CBN) CH6640E and CG6640E Wireless Gateway 1.0 with firmware CH6640-3.5.11.7-NOSH have a d
Multiple cross-site request forgery (CSRF) vulnerabilities on the TP-LINK WR1043N router with firmware TL-WR1043ND_V1_12
The Compal Broadband Networks (CBN) CH6640E and CG6640E Wireless Gateway 1.0 with firmware CH6640-3.5.11.7-NOSH allows r
Authenticated command injection in Ziroom ZHOME A0101 firmware 1.0.1.0 lets a privileged user execute arbitrary operatin
The Compal Broadband Networks (CBN) CH6640E and CG6640E Wireless Gateway 1.0 with firmware CH6640-3.5.11.7-NOSH allows r
Multiple cross-site request forgery (CSRF) vulnerabilities in Compal Broadband Networks (CBN) CH6640E and CG6640E Wirele
Cross-site scripting (XSS) vulnerability in Compal Broadband Networks (CBN) CH6640E and CG6640E Wireless Gateway 1.0 wit
Authentication bypass in Tenda router firmware (AC10, AC5, AC6, FH1201, W15E) lets any user log in as administrator via
Anonymous MQTT access in Yarbo firmware v2.3.9 allows remote unauthenticated attackers on the local network to fully con
Hardcoded administrative credentials in Yarbo firmware v2.3.9 allow remote unauthenticated attackers to gain full device
Undocumented persistent backdoor in Yarbo firmware v2.3.9 grants remote privileged access that survives factory reset an
Lantronix G520 Series firmware (2.6.0.4R6 stable, covering G526, G526RP, G527 and G528) can be induced to treat forged s
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB