Skip to main content

YARD CVE-2026-49342

| EUVDEUVD-2026-38069 MEDIUM
Path Traversal (CWE-22)
2026-06-19 GitHub_M GHSA-pxcc-8665-phx8
5.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Identify exposed YARD server with document_root configured
  2. Delivery
    Send HTTP GET with ../ traversal in request path
  3. Exploit
    Bypass router sanitization via early static cache lookup
  4. Execution
    Resolve traversal against document_root on disk
  5. Impact
    Read and exfiltrate sibling .html file outside intended static tree

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V5 - File Handling Path canonicalization, traversal prevention
MITRE ATT&CK

2 techniques across 2 tactics: Discovery, Collection

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

YARD must be running as a web server (not used solely as a CLI documentation generator). The adapter.document_root setting must be configured on the server - this activates the static caching subsystem that contains the vulnerable path construction. The attacker requires HTTP network access to the YARD server port. Exploitation is limited exclusively to reading .html files, as the vulnerable code forces a .html extension on all resolved cache paths; binary files, configuration files, credentials, and non-HTML assets are not directly readable through this vector. Practical impact is further bounded by the file system layout: only .html files present in directories that are siblings of (or otherwise reachable via traversal from) the document root are accessible. No authentication is required per CVSS PR:N - exploitation succeeds against any unauthenticated HTTP client that can reach the server.

Impact

The CVSS 3.1 vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N scores 5.3 (Medium), correctly reflecting unauthenticated network access with low attack complexity and a confidentiality-only impact. Real-world risk is further bounded by two factors not captured in the raw CVSS score: first, YARD must be deployed in server mode with adapter.document_root configured - YARD is primarily a CLI documentation generator and its server component is not universally exposed; second, the traversal is constrained to reading only .html files (the code forces a .html extension on all cache paths), so non-HTML sensitive data is not directly accessible. No EPSS data was provided in the source intelligence, and the vulnerability is not in CISA KEV. SSVC signals: exploitation status is none/public, the attack is likely automatable given AC:L and PR:N, but technical impact is partial (read-only, limited file type). This vulnerability represents a genuine but narrowly scoped confidentiality risk - highest for environments exposing the YARD server on shared infrastructure with sensitive HTML files adjacent to the document root, and low for typical developer-workstation YARD CLI usage.

Exploit ScenarioDerived

An attacker with HTTP access to a running YARD server sends GET /../sensitive-docs.html HTTP/1.1, which the static cache lookup processes before any router-level path cleanup. The code constructs File.join(document_root, '/../sensitive-docs.html'), which the OS resolves to a sibling directory of the document root, and YARD reads and returns the contents of that file in the HTTP response. No credentials or prior access are required. No public POC has been identified at time of analysis, but the traversal mechanism is straightforward enough to replicate from the advisory and commit diff alone.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.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 – Jun 19, 2026

Path traversal in the YARD Ruby documentation server (prior to 0.9.44) allows unauthenticated remote attackers to read arbitrary .html files from directories outside the configured document root by supplying crafted ../-containing request paths such as /../yard-cache-secret.html. The flaw exists because the static cache lookup in StaticCaching#check_static_cache constructs a filesystem path from the raw request.path before the router's own path-sanitization logic runs, enabling traversal to sibling directories. No active exploitation has been identified (not in CISA KEV) and no public POC exists at time of analysis; the vendor-released fix is version 0.9.44.

RemediationAI

Upgrade YARD to version 0.9.44 or later; this is the vendor-released patch that resolves the path traversal by introducing sanitized path construction in StaticCaching#cache_path. The advisory and patch commit are available at https://github.com/lsegal/yard/security/advisories/GHSA-pxcc-8665-phx8 and https://github.com/lsegal/yard/commit/f78c19f0dd33a407085b4ed181bb60c0aa0078b4 respectively. If an immediate upgrade is not feasible, bind the YARD server to localhost only (e.g., yard server --host 127.0.0.1) to eliminate remote network exposure - this compensating control is highly effective since the CVSS attack vector is Network (AV:N) and restricting the listening interface fully blocks unauthenticated remote exploitation, with no functional side-effects for local development use. Alternatively, place the YARD server behind an authenticating reverse proxy to enforce access control at the network boundary.

Affected VersionsENISA

yard < 0.9.44

Affected Packages

rubygems yard fix: 0.9.44

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in rubygems

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

YARD is a widely used Ruby documentation generation tool with an optional built-in web server component. The vulnerability resides in lib/yard/server/static_caching.rb and lib/yard/server/commands/base.rb. The root cause is CWE-22 (Improper Limitation of a Pathname to a Restricted Directory): the static cache lookup called check_static_cache constructs a filesystem path by invoking File.join(adapter.document_root, request.path.sub(/\.html$/, '') + '.html') without any prior validation of .. components. Because the router's cleanup phase executes after cache lookup, a traversal sequence in the request path is never stripped before the File.join resolves it on disk. The fix (commit f78c19f0dd33a407085b4ed181bb60c0aa0078b4) introduces a new cache_path private method in StaticCaching that explicitly rejects paths containing .. segments (request_path.split(/[\/\\]/).include?('..')), strips leading slashes, blocks Windows drive-letter patterns, and applies File.cleanpath normalization before joining against the document root. CPE: cpe:2.3:a:lsegal:yard:*:*:*:*:*:*:*:* covering all versions prior to 0.9.44.

Know when Yard 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 5.3 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
vuln.today AI 5.3 MEDIUM

Server is network-accessible with no auth required; traversal is mechanically simple (AC:L); only .html files readable limits confidentiality to Low; no integrity or availability impact exists.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N
SUSE MEDIUM
Red Hat 5.3 MEDIUM

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Jun 19, 2026 - 21:02 EUVD

DescriptionCVE.org

YARD is a documentation generation tool for the Ruby programming language. Prior to version 0.9.44, YARD's static cache lookup reads a request path before the router's path cleanup runs. When a server is configured with a document root, a traversal path such as /../yard-cache-secret.html is joined against that root and can return a readable sibling .html file outside the intended static tree. Version 0.9.44 patches the issue.

Threat Intelligence Overview

EPSS Score
0.3%
Top 81% exploitable
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
8 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor GitHub VulDB

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 MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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· derived
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

46
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +26
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Path traversal exploits occur when applications use user-controlled input to construct file system paths without proper validation.

Vendor StatusVendor

SUSE

Severity: Moderate

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy