Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft PR title with single-quote and shell payload
-
DeliverySubmit PR to public Logto repository
-
Exploitcommitlint.yml workflow triggers automatically on pull_request event
-
ExecutionSingle quote terminates echo string literal in runner shell
-
PersistInjected commands execute as workflow step on Actions runner
-
ImpactCI pipeline disrupted or runner environment probed
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 | The attacker must be able to open a pull request against the Logto GitHub repository (logto-io/logto). On a public repository, any GitHub-authenticated user - including newly created accounts - can submit a PR, setting the effective barrier at account creation only. The vulnerable workflow ( |
| Impact | The NVD-assigned CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:L) scores 6.3 Medium. The UI:R metric warrants scrutiny: the |
| Exploit ScenarioDerived | An attacker opens a pull request against the public Logto GitHub repository with a title such as |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 19, 2026
GitHub Actions workflow injection in Logto's commitlint.yml exposes versions 1.40.1 through 1.41.0 to arbitrary shell command execution on the project's CI/CD runner, triggered by any GitHub user who can submit a pull request with a crafted title containing shell metacharacters. The PR title was directly interpolated into an inline echo command without sanitization, allowing a single-quote character to terminate the shell string and inject attacker-controlled commands into the ephemeral runner environment. Impact is bounded by a read-only GITHUB_TOKEN and absence of exposed repository secrets; no public exploit is identified at time of analysis, and the issue is fully patched in v1.41.0.
RemediationAI
Vendor-released patch: v1.41.0. Upgrade Logto to version 1.41.0 or later, which resolves the injection via commit 4a1cab21c14d26d288ffffc509cc2a8cae247b92 (PR #9112). The fix replaces unsafe inline expression interpolation with an environment variable binding - the PR title is assigned to PR_TITLE in the step's env block and passed to commitlint via printf '%s\n' "$PR_TITLE", preventing shell metacharacter interpretation entirely. For repositories that cannot immediately apply the patch, a compensating control is to restrict the pull_request trigger to require maintainer workflow approval for first-time contributors (via repository settings under Actions > General > Fork pull request workflows), which trades CI automation speed for an approval gate before injection can occur. Alternatively, the commitlint workflow can be temporarily disabled until the upgrade is applied, at the cost of losing automated PR title linting. Full advisory and patched release: https://github.com/logto-io/logto/releases/tag/v1.41.0.
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
The vulnerability exists in .github/workflows/commitlint.yml within the Logto open-source project (CPE: cpe:2.3:a:logto-io:logto:*:*:*:*:*:*:*:*), a GitHub Actions workflow that lints pull request titles via npx commitlint. The root cause is CWE-94 (Improper Control of Generation of Code), a well-documented GitHub Actions expression injection pattern: the workflow step executed echo '${{ github.event.pull_request.title }}' | npx commitlint, substituting the externally-controlled PR title string directly into a shell command at YAML evaluation time before the shell interpreter sees it. A title containing a single quote terminates the surrounding string literal, and subsequent characters are interpreted as distinct shell commands by the runner. The fix introduced in PR #9112 (commit 4a1cab21) addresses this by assigning the title to an environment variable (PR_TITLE) in the step's env block and piping it via printf '%s\n' "$PR_TITLE", which never passes the value through shell word-splitting or metacharacter interpretation.
Know when Logto 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:R/S:U/C:L/I:L/A:L
UI:N because the pull_request trigger fires automatically on PR submission with no separate maintainer action required to execute injected commands on the runner.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Logto is the modern, open-source auth infrastructure for SaaS and AI apps. From 1.40.1 until 1.41.0, Logto's .github/workflows/commitlint.yml directly interpolated github.event.pull_request.title into the Commitlint on PR title step's inline echo command before piping the title to npx commitlint. A pull request title containing a single quote could terminate the echo string and append arbitrary shell commands on the GitHub Actions runner. The pull_request trigger used a read-only GITHUB_TOKEN and did not expose repository secrets, but injected commands could alter or disrupt the ephemeral workflow execution. This issue is fixed in version 1.41.0.
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
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.
Path traversal in @logto/tunnel (versions <= 0.3.8) exposes arbitrary file read to any network peer that can reach the t
Server-side request forgery in Logto prior to 1.43.0 allows an authenticated tenant administrator to point outbound conn
Server-side request forgery in Logto through 1.42.0 allows tenant administrators holding Management API credentials to r
Server-side request forgery in Logto through 1.42.0 allows tenant administrators holding Management API tokens to direct
Catastrophic ReDoS in Logto's email subaddressing blocklist allows unauthenticated remote attackers to stall the Node.js
Stored social and enterprise SSO provider access tokens can be retrieved from Logto's Account API by a low-trust applica
EUVD-2026-62865
NVD
CVE.org
EPSS
GitHub
Exploit-DB