Skip to main content

Tugtainer EUVDEUVD-2026-90195

| CVE-2026-87004 HIGH
Improper Verification of Cryptographic Signature (CWE-347)
2026-09-30 GitHub_M
8.1
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Reach OIDC-enabled Tugtainer login
  2. Delivery
    Supply crafted/manipulated id_token in code exchange
  3. Exploit
    Claims accepted without signature/iss/aud/exp checks
  4. Execution
    Impersonated user_id establishes authenticated session
  5. Impact
    Control Docker container update management

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A04:2025 - Cryptographic Failures
ASVS 5.0
V11 - Cryptography Signature verification
Exploitation Conditions

Exploitation requires that the Tugtainer instance (prior to v1.31.3) has the OIDC login flow configured and enabled, with OIDC_CLIENT_ID/OIDC_REDIRECT_URI and a discovery document in use - instances using only local authentication are unaffected. The attacker must be able to cause a crafted or manipulated id_token (arbitrary email/sub/preferred_username claims) to be returned to the backend during the authorization-code token exchange, since the code accepts unverified claims directly; this is the AC:H limiting factor, as it is not a plain unauthenticated request to a public endpoint. The patched version additionally adds optional OIDC_ALLOWED_EMAILS / OIDC_ALLOWED_SUBJECTS allowlists, indicating that even post-fix, any validly-authenticated identity is accepted by default unless those allowlists are set.

Impact

The CVSS 3.1 base score of 8.1 (AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H) reflects a network-reachable, pre-authentication authentication-bypass flaw (CWE-347) with full CIA impact once triggered - consistent with the confirmed code evidence showing jose.jwt.get_unverified_claims() being used in place of jwt.decode(), skipping signature, aud, iss, and exp checks before the claims become the session user_id. The AC:H rating is well-justified: an attacker cannot simply POST a forged JWT to an endpoint; they must get a crafted or manipulated id_token to be accepted during the server-side OIDC code exchange (e.g., via a rogue/attacker-influenced identity provider, a manipulated token-endpoint response, or algorithm/claim manipulation), which raises real-world difficulty above a trivial bug. No EPSS score, no CISA KEV listing, and no public exploit were provided, so this is no public exploit identified at time of analysis - meaning risk is driven by the flaw's severity and not by observed exploitation. Net assessment: a genuinely serious authentication flaw for any Tugtainer instance exposing OIDC login to attackers, but tempered by (a) niche/homelab deployment footprint, (b) the AC:H prerequisites, and (c) that exploitation only matters when OIDC login is actually configured and enabled. This is a legitimate high-severity issue to patch for affected deployments rather than a mass-exploitation emergency.

Exploit ScenarioDerived

An operator configures Tugtainer with OIDC SSO exposed over the network. An attacker who can supply or influence the id_token returned during the code exchange (for example via a rogue/attacker-controlled OIDC provider the instance can be pointed at, or by manipulating the unverified token) presents a JWT carrying an arbitrary email/sub/preferred_username; because the backend never verifies the signature, issuer, audience, or expiry, those claims are accepted verbatim as the session user_id, granting authenticated access to Tugtainer's Docker container management. No public exploit code was identified at the time of analysis.

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

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

Alert me

AnalysisAIv1 – Sep 30, 2026

In Tugtainer versions before 1.31.3, the OIDC login flow accepts unverified JWT claims from the identity provider's id_token, allowing an unauthenticated remote attacker who can influence the token exchange to impersonate any identity and gain full control of the Tugtainer session. The flaw is a pre-authentication authentication bypass (CWE-347) with high confidentiality, integrity, and availability impact once triggered; exploitation requires OIDC to be configured and enabled. No public exploit has been identified at the time of analysis, and the issue is not listed in CISA KEV. A vendor patch is available in version 1.31.3.

RemediationAI

Upgrade Tugtainer to version 1.31.3, which enforces full OIDC id_token verification (signature, issuer, audience, expiry, and required claims) and supports optional OIDC_ALLOWED_EMAILS and OIDC_ALLOWED_SUBJECTS allowlists to restrict accepted identities. Vendor-released patch: 1.31.3. If immediate upgrade is not possible, disable the OIDC login flow (remove OIDC_CLIENT_ID/OIDC_REDIRECT_URI configuration or otherwise turn off the feature) and rely on local authentication; this eliminates the attack vector at the cost of losing SSO. As a defense-in-depth measure after upgrading, configure OIDC_ALLOWED_EMAILS and/or OIDC_ALLOWED_SUBJECTS, since the patched default accepts any validly authenticated identity unless those allowlists are set. Monitor authentication logs for anomalous OIDC logins with unexpected email/sub claims. See the advisory at https://github.com/Quenary/tugtainer/security/advisories/GHSA-crjc-6vc7-xrfh and the release notes at https://github.com/Quenary/tugtainer/releases/tag/v1.31.3.

Affected VersionsENISA

tugtainer < 1.31.3

Affected Packages

euvd tugtainer fix: 1.31.3

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

Tugtainer uses OpenID Connect (OIDC) for optional single sign-on. In the authorization-code flow, the backend exchanges the code at the provider's token endpoint and receives an id_token (a JWT). Instead of calling jose.jwt.decode() with proper key material, audience, issuer, and expiry validation, the vulnerable code path in backend/modules/auth/providers/auth_oidc_provider.py used jose.jwt.get_unverified_claims(), which base64-decodes the JWT payload without any cryptographic verification. This is CWE-347 (Improper Verification of Cryptographic Signature). The attacker-controlled claims (email, sub, preferred_username) were then used directly as the Tugtainer session user_id, so a forged token with an arbitrary email or subject could impersonate any user, including administrators. The patch in v1.31.3 replaces this with a full verification routine: it fetches the provider's JWKS, restricts signing algorithms to an asymmetric allowlist (RS256/RS384/RS512/ES256/ES384/ES512) to prevent algorithm-confusion attacks, validates the signature, issuer, audience (aud/azp), expiration, and required claims, and adds optional OIDC_ALLOWED_EMAILS/OIDC_ALLOWED_SUBJECTS allowlists.

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

Vendor (GitHub_M) PRIMARY 8.1 HIGH
AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 8.1 HIGH

Network-reachable pre-auth flaw (PR:N/UI:N), but crafting/injecting an accepted id_token into the server-side exchange is non-trivial (AC:H); successful bypass yields full admin access to Docker management (C/I/A:H).

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

2
Patch available
Sep 30, 2026 - 18:05 EUVD
CVE Published
Sep 30, 2026 - 17:01 cve.org
HIGH 8.1

DescriptionCVE.org

Tugtainer is a self-hosted app for automating updates of Docker containers. Prior to version 1.31.3, when the OIDC login flow completes, backend/modules/auth/providers/auth_oidc_provider.py decodes the id_token returned by the identity provider's token endpoint using jose.jwt.get_unverified_claims() instead of jwt.decode(). This skips signature verification, audience (aud) validation, issuer (iss) validation, and expiry (exp) checking entirely. The extracted claims (email/sub/preferred_username) are then used directly as the user_id for the resulting Tugtainer session. This issue has been patched in version 1.31.3.

Technical POC Analysis

CWE-347 (Improper Verification of Cryptographic Signature), with the advisory also mapping CWE-345 (missing aud/iss/exp checks) and CWE-287.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Tugtainer deployments running versions prior to 1.31.3 with OIDC authentication enabled are exposed to an identity-verification flaw that lets an attacker who can influence the login token exchange assume any user identity and take full control of a Tugtainer session. Because Tugtainer orchestrates container updates across managed hosts, a hijacked session can translate directly into unauthorized changes to production workloads, so leadership should treat this as a potential integrity and availability risk to the environments it manages, not merely an application-level login issue. No public exploit code has been identified at the time of analysis and the issue is not listed in CISA KEV, but exploitation requires only that OIDC be configured and enabled.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 74% exploitable
Prevalence
Low
self-hosted homelab Docker auto-update tool, minimal enterprise footprint
Social Media
1
Sightings
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 HIGH
CISA KEV No
Public POC No
EPSS 0.3%
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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

40
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +40
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