Tugtainer
CVE-2025-69201
HIGH
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach tugtainer-agent command endpoint
-
DeliveryCraft POST api/command/run with injected arguments
-
ExploitUnvalidated schema passes args to docker command
-
ExecutionAgent executes attacker-controlled operation
-
ImpactCompromise container host and managed containers
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Command injection prevention
MITRE ATT&CK
1 technique 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 | Exploitation requires network access to the tugtainer-agent's POST api/command/run endpoint on a Tugtainer instance running a version prior to 1.15.1, where the command schema performed no validation of arguments before dispatching them. The concrete prerequisite is reachability of that specific agent API endpoint; the injection point is the command argument list accepted by command_schemas.py. Limiting factors: the attack surface is confined to deployments that expose the agent endpoint to the attacker (homelab/self-hosted installs may keep agents on private/internal networks, sharply reducing real exposure), and while the supplied vector rates PR:N, the description does not confirm whether the endpoint enforces authentication/tokens - if it does, an attacker would also need valid credentials. No user interaction is required and no special non-default feature toggle is implicated. |
| Impact | This is a genuine high-impact vulnerability in principle - CWE-77 command argument injection in Tugtainer's agent endpoint (POST api/command/run) that, per the vendor-supplied CVSS 4.0 vector (AV:N/AC:L/PR:N/UI:N), is remotely reachable, low-complexity, and requires no privileges or user interaction, yielding high confidentiality, integrity, and availability impact (VC:H/VI:H/VA:H). The source-code evidence confirms the root cause: before 1.15.1 the command schema accepted arbitrary list arguments with no validator, and the fix introduces an allowlist-based command_validator restricting commands, flags, and positional args. However, real-world urgency is tempered by several signals: the CVSS 4.0 exploit-maturity metric is E:U (Unproven), there is no CISA KEV listing and no public POC, and the affected product is a niche self-hosted container-automation tool with a small deployment footprint. So this is a 'high CVSS, low aggregate real-world risk' case driven by low prevalence and no evidence of exploitation - real priority for the few operators running exposed Tugtainer agents, low priority at fleet scale. One caveat to verify: the vector asserts PR:N (unauthenticated), but the description does not state whether the tugtainer-agent command endpoint enforces authentication; if the agent is normally protected by a token or private network, effective exploitability is narrower than the vector implies - verify endpoint auth with the vendor/advisory. |
| Exploit ScenarioDerived | An attacker with network reach to a Tugtainer agent (version <1.15.1) sends a crafted POST to api/command/run containing extra/arbitrary arguments that the unvalidated command schema passes through to the underlying docker invocation, altering command behavior to run attacker-chosen operations on the container host. Because the CVSS vector is AV:N/AC:L/PR:N/UI:N, no authentication or user interaction is modeled as required, though exploitation depends on the agent endpoint being network-reachable. No public exploit code is identified (exploit maturity E:U), so an attacker would need to develop the request against the known injection point. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Command argument injection in the Tugtainer agent API (POST api/command/run) lets remote attackers append or substitute arbitrary arguments to commands the agent dispatches, potentially achieving command execution or otherwise manipulating Docker on the host. All Tugtainer deployments running versions prior to 1.15.1 are affected, including the Docker-packaged builds identified by the affected CPE; the vendor's CVSS 4.0 vector (8.1, AV:N/AC:L/AT:N/PR:N/UI:N, VC:H/VI:H/VA:H) rates it as remotely reachable, low-complexity, and unauthenticated, though the advisory does not confirm whether the agent endpoint enforces a token, so an additional credential requirement cannot be ruled out in hardened setups. No public exploit code and no confirmed active exploitation were identified at time of analysis.
RemediationAI
Vendor-released patch: upgrade to Tugtainer 1.15.1, which adds strict allowlist validation of command flags and positional arguments in the agent's command schema; see the security advisory at https://github.com/Quenary/tugtainer/security/advisories/GHSA-grc3-8w5x-g54q, the release at https://github.com/Quenary/tugtainer/releases/tag/v1.15.1, and the fix commit https://github.com/Quenary/tugtainer/commit/dbb17d843e30fd7509acf0328c913dcb42f40831 (PR https://github.com/Quenary/tugtainer/pull/88). If immediate upgrade is not possible, the most effective compensating control is to remove network exposure of the agent: do not publish the agent port to the internet, bind it to localhost or an internal-only Docker network, and restrict reachability to trusted management hosts via firewall/security-group rules - the trade-off is that remote or multi-host Tugtainer management then requires a VPN, overlay network, or SSH tunnel. Where an agent must be reachable across a network, enforce authentication (a shared token/agent API key) and TLS at a reverse proxy in front of POST api/command/run, accepting the added configuration complexity and the risk that any authenticated user with endpoint access can still submit the commands the pre-1.15.1 schema permits. Note that no dedicated per-endpoint disable switch predates 1.15.1, so network isolation plus upgrading remain the practical options; there is no evidence that merely changing default credentials mitigates the argument-injection path itself.
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 flaw is a CWE-77 command injection (specifically argument injection) rooted in the agent-side command schema. Tugtainer's agent accepts a command as a list of strings on POST api/command/run and previously passed that list straight through to the underlying Docker/exec layer with no allowlist or argument validation in shared/schemas/command_schemas.py. Because only the presence of a command schema was checked and not its individual tokens, an attacker who could reach the endpoint could slip in extra flags or positional arguments - for example injecting additional flags into a 'docker network connect' invocation - to alter how the agent executes the command. The fix (commit dbb17d8, PR #88) introduces shared/schemas/command_validator.py, which defines per-command schemas (COMMAND_SCHEMAS keyed on command prefixes such as ('network','connect')), validates flags against a fixed set of known flags with type-specific validators, and enforces strict regex/length checks on positional values: DOCKER_NAME_RE (^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,127}$) for container/network identifiers, ALIAS_RE (^[a-zA-Z0-9][a-zA-Z0-9_.-]{0,62}$) for --alias, and ipaddress.ip_address for --ip/--ip6, rejecting unknown flags and enforcing exact positional-argument counts. That validator is wired in via a Pydantic @field_validator('command') on the command model, so malformed argument lists are rejected before dispatch.
Know when Tugtainer 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:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:U
Command argument injection over a network API with no modeled auth or interaction yields AV:N/AC:L/PR:N/UI:N and full C/I/A impact; PR:N follows the supplied vector though endpoint auth is unverified.
Primary rating from Vendor (github).
CVSS VectorVendor: github
DescriptionCVE.org
Tugtainer is a self-hosted app for automating updates of docker containers. In versions prior to 1.15.1, arbitary arguments can be injected in tugtainer-agent POST api/command/run. Version 1.15.1 fixes the issue.
Executive ViewAI
Tugtainer deployments prior to version 1.15.1 face a high-severity command argument injection in the agent API that can allow remote manipulation of Docker commands on affected hosts. The vendor rates this as unauthenticated and network-reachable under CVSS 4.0 (PR:N), although token enforcement is unconfirmed and hardened configurations may require credentials. No public exploit code or confirmed active exploitation was identified at time of analysis, but because a patch is available, leadership should prioritize prompt remediation to prevent potential host or container compromise.
Apply vendor patch.
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.
Affected Products (CPE)CVE.org
Tugtainer versions before 1.16.1 transmit authentication credentials through URL query parameters rather than request bo
Server-side template injection in Tugtainer (self-hosted Docker container auto-update tool) versions before 1.30.2 lets
Unauthenticated attackers can reach the Tugtainer Agent's Docker management API and gain effectively full control over c
Improper access control in Tugtainer before version 1.30.3 causes the OIDC login flow to start even when OIDC_ENABLED=fa
Authenticated server-side request forgery in Tugtainer before version 1.30.6 allows any logged-in user with access to no
In Tugtainer versions before 1.31.3, the OIDC login flow accepts unverified JWT claims from the identity provider's id_t
NVD
CVE.org
EPSS
GitHub
Exploit-DB