Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with machine:script:run + tag access
-
ExploitCraft params with shell metacharacters
-
ExecutionInjection escapes {{.param}} template into Cli.Run SSH exec
-
ImpactExecute arbitrary OS commands on managed machine
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization OS command sanitization, avoid shell exec
MITRE ATT&CK
2 techniques across 1 tactic: Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated account (PR:L) holding the machine:script:run permission AND tag access to at least one target machine - no admin account is needed. The injectable path additionally requires that the target machine's script template contains a {{.param}} placeholder, which is where the unsanitized 'params' argument is substituted before reaching the SSH exec layer (Cli.Run applies no input filtering). Exploitation is remote over the network with low complexity and no user interaction. The limiting factors are the two authorization grants (machine:script:run plus tag scope) and the template-placeholder configuration; a deployment where no accessible template uses {{.param}} is not reachable via this specific vector, though the note that Cli.Run filters no caller input suggests related exposure. |
| Impact | This is an authenticated OS command injection (CWE-78) with a publicly available exploit, which elevates it above a purely theoretical finding. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L, score 5.3, E:P) rates the technical impact as only Low across confidentiality/integrity/availability - yet the description explicitly states the flaw yields 'arbitrary command execution on machines,' which is a high-impact primitive. This is a notable internal conflict: a genuine RCE-class outcome scored with Low impact metrics under-rates the real severity; my independent assessment lands at CVSS 3.1 ~8.8. Mitigating the risk are concrete gates: the attacker must already hold an account with the machine:script:run permission plus tag access to a target, and the target machine's script template must contain a {{.param}} placeholder for the injection to reach the SSH exec layer. The E:P (Proof-of-Concept) maturity in the vector is consistent with the public gist exploit but does NOT indicate active exploitation - this is not in CISA KEV and no EPSS score is provided. Net: a real, patch-worthy priority for anyone running mayfly-go with multiple lower-trust operator accounts, but the authentication and template-configuration prerequisites keep it from being a wormable/unauthenticated internet-scale threat. |
| Exploit ScenarioDerived | A low-privilege mayfly-go operator who has been granted the machine:script:run permission and tag access to a fleet host crafts a script-run request whose 'params' argument embeds shell metacharacters. When the server substitutes the value into a template containing a {{.param}} placeholder and hands it to the SSH exec layer (Cli.Run), the injected commands execute on the managed machine with the SSH user's privileges. A public proof-of-concept exploit is available as a GitHub gist, lowering the skill barrier to reproduce it. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 17, 2026
Authenticated OS command injection in Dromara mayfly-go through version 1.11.5 allows a low-privileged user who holds the machine:script:run permission and tag access to a target machine to execute arbitrary operating-system commands on that machine via the params argument of the RunMachineScript handler. No admin account is required, and publicly available exploit code exists (a public gist referenced in the CVE record), though there is no CISA KEV confirmation of active exploitation. The attack is remote, low complexity, and requires no user interaction, but it is gated by the two authorization grants and by the target machine's script template containing a {{.param}} placeholder where the unsanitized input is substituted before reaching the SSH execution layer.
RemediationAI
No vendor-released patch version has been independently confirmed: the only fix reference in the data, https://github.com/dromara/mayfly-go/pull/129, contains a newly added SECURITY.md policy document rather than an input-sanitization change, so the 'patch available' signal should be treated as unverified and no exact fixed version can be cited; the disclosure notes that the vendor was contacted early and did not respond, meaning a fixed release may not exist at time of analysis. Until a patched build is available and validated, apply compensating controls in this order: revoke machine:script:run from all non-essential roles and restrict tag scoping so that the permission grants access to no machine templates, accepting that this disables the script-running feature for those users; audit all machine script templates for {{.param}} placeholders and either remove them or replace parameterized scripts with fixed, non-parameterized commands, accepting the loss of script reusability; where the feature must remain available, isolate the SSH credentials used by mayfly-go to low-privilege accounts with no sudo rights and restrict those accounts' reachable hosts, which limits post-exploitation impact but does not prevent injection; and monitor mayfly-go API logs for machine:script:run calls containing shell metacharacters, which provides detection but not prevention. Also note the assessment's observation that Cli.Run applies no input filtering to any caller, so the same class of exposure may exist in other callers of the SSH execution layer and should be reviewed separately. Track https://vuldb.com/vuln/406447 for updated remediation guidance and the project repository at https://github.com/dromara/mayfly-go/ for a future tagged release.
Affected VersionsENISA
Affected Packages
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
mayfly-go is a self-hosted Go-based DevOps/operations platform (dromara ecosystem) that provides machine, database, Redis, MongoDB and auth modules, including a Machine Script feature that runs templated scripts against managed hosts over SSH. The flaw is a classic CWE-78 OS Command Injection: in server/internal/machine/api/machine_script.go, the RunMachineScript function takes the caller-supplied params argument and substitutes it directly into the target machine's script template at the {{.param}} placeholder without sanitization. The resulting command string is then handed to the SSH execution layer (Cli.Run), which per the assessment applies no input filtering to any caller, so injected shell metacharacters are interpreted by the remote shell. The CVSS 4.0 vector published with the advisory (AV:N/AC:L/AT:N/PR:L/UI:N, low confidentiality/integrity/availability impact, E:P) reflects a privileges-required, network-reachable injection with public exploitability; our independent assessment scores the same conditions higher under CVSS 3.1 (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H) because successful command execution on a managed host is typically full compromise of that host rather than a limited-impact event. The CPE entry cpe:2.3:a:dromara:mayfly-go:*:*:*:*:*:*:*:* is a wildcard, so all versions up to and including 1.11.5 should be treated as affected until a fixed release is confirmed.
Know when Go 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:P
Network-reachable, low-complexity, requires a low-privilege account with machine:script:run+tag access (PR:L); command execution on the target machine yields full C/I/A, contradicting the vendor's Low impact metrics.
Primary rating from Vendor (VulDB).
CVSS VectorVendor: VulDB
Lifecycle Timeline
3DescriptionCVE.org
A vulnerability was detected in Dromara mayfly-go up to 1.11.5. The impacted element is the function RunMachineScript of the file server/internal/machine/api/machine_script.go of the component Machine Script Feature. The manipulation of the argument params results in os command injection. The attack can be executed remotely. The exploit is now public and may be used. Exploitation needs no admin account. Any account holding machine:script:run plus tag access reaches arbitrary command execution on machines whose templates contain {{.param}} placeholders; the SSH exec layer (Cli.Run) also applies no input filtering to any caller. The vendor was contacted early about this disclosure but did not respond in any way.
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.
Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour
The net/http package in Go through 1.6 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and there
Critical certificate validation bypass in Go crypto/tls during session resumption. If ClientCAs or RootCAs fields are mu
net/url in Go before 1.11.13 and 1.12.x before 1.12.8 mishandles malformed hosts in URLs, leading to an authorization by
Casdoor through 4.4.0 exposes its instance-wide built-in JWT signing private key unmasked through the /api/get-certs and
Host header injection in Nezha 2.2.3's OAuth2 redirect endpoint (/api/v1/oauth2/{provider}) allows an unauthenticated re
Session cross-wiring in SUSE NeuVector before 5.6.1 allows an unauthenticated remote attacker to obtain another user's a
Unauthenticated path traversal in Uber Kraken through 0.1.29 allows remote attackers to read files outside the configure
The "go get" implementation in Go 1.9.4, when the -insecure command-line option is used, does not validate the import pa
Denial of service in Temporal Server allows an authenticated caller holding at least namespace read permission to crash
Account takeover in Klever-Go's KleverUpdateAccountPermission built-in (all versions prior to 1.7.20) allows an attacker
Maliciously crafted on-chain account names processed by Klever-Go prior to 1.7.20 are spliced into Elasticsearch _bulk r
EUVD-2026-82379
GHSA-7v39-cvrw-gj6m
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB