CVE-2026-49342
Medium · 5.3CVSS
5.3
EPSS
0.4%
Published
Jun 19, 2026
CISA due date
—
Cloudanix analysis
A flaw in a Ruby documentation tool can let outsiders read nearby web pages that were not meant to be public.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Data Exposure
- Component
- Library
- Class
- Path Traversal
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
YARD versions prior to 0.9.44 can serve files outside the intended static documentation directory when the static cache lookup processes the raw request path before router path normalization. If a YARD documentation server is configured with a document root, an unauthenticated remote requester can use directory traversal sequences such as `/../` to cause the server to join the path against the document root and return readable sibling `.html` files that should not be exposed. The impact is limited to unauthorized read access to reachable HTML files; the vulnerability does not directly enable file modification, code execution, or service disruption.
Why it matters to the business
Organizations exposing YARD-generated documentation or YARD documentation servers could unintentionally disclose internal or adjacent HTML content, such as generated documentation pages, cached documentation artifacts, build outputs, or other readable HTML files placed near the configured document root. The CVSS score is moderate and EPSS is currently low, with no known KEV listing or reported exploit maturity, but internet-exposed documentation endpoints should still be fixed because exploitation is simple, unauthenticated, and low-noise.
How an attack unfolds
An attacker first identifies an exposed YARD documentation server or application endpoint serving YARD static documentation. They then send crafted HTTP requests containing path traversal segments, commonly using `/../`, targeting likely sibling HTML files outside the configured static document tree. Because vulnerable versions perform static cache lookup before path cleanup, the traversal path can be joined with the document root and resolved to a readable `.html` file outside the intended directory. If the guessed file exists and the server process can read it, the attacker receives its contents in the HTTP response. The attacker can repeat this process with variations of filenames and encoded traversal sequences to enumerate accessible HTML artifacts.
How to fix it
Upgrade YARD to version 0.9.44 or later. If YARD is bundled through a Ruby application, update the relevant Gemfile or dependency lockfile and redeploy the application or documentation service. As compensating controls, restrict access to YARD documentation endpoints, place them behind authentication or VPN access, disable public serving of generated documentation where not required, and configure the web server or reverse proxy to reject path traversal sequences before requests reach YARD. Ensure no sensitive HTML artifacts are stored as siblings of the YARD document root.
How to confirm the fix worked
Confirm that deployed Ruby dependencies resolve to YARD 0.9.44 or later, for example by checking `bundle list`, `bundle info yard`, `gem list yard`, or the application lockfile. Test exposed documentation endpoints with benign traversal probes such as requests containing `/../` followed by a known non-sensitive sibling `.html` test file; a fixed deployment should not return files outside the intended static tree. Review web server and application routing behavior to ensure encoded traversal forms are also rejected or normalized. Verify that reverse proxy, CDN, and application caches do not continue serving previously exposed content.
Typical attack path
- Identify an exposed YARD documentation server or application endpoint serving YARD-generated static content.
- Confirm the endpoint responds to static documentation requests.
- Send crafted HTTP GET requests containing traversal sequences such as `/../` before a target `.html` filename.
- Observe whether the server returns an unexpected HTML file rather than rejecting or normalizing the path.
- Iterate over likely sibling HTML filenames, cached documentation files, or generated documentation artifacts to collect exposed content.
How to detect it
Review HTTP access logs from web servers, reverse proxies, CDNs, load balancers, and Ruby application logs serving YARD documentation. Look for requests containing traversal sequences such as `/../` or encoded variants, especially when followed by `.html` filenames, and correlate them with HTTP 200 responses or unusually sized successful responses. Investigate repeated requests for guessed documentation, cache, or sibling HTML filenames from the same source IP, user agent, or session. Check whether any successful response served content outside the configured documentation root by comparing requested paths, normalized filesystem paths, and response byte counts. If available, inspect WAF logs for path traversal rule matches and application logs for static file reads or cache lookups involving unresolved `..` path segments. Because no public exploit maturity or named threat actor activity is currently reported, prioritize evidence of suspicious traversal probing and successful file disclosure rather than relying on known malware artifacts.
- GET /../
- POST /../
- /%2e%2e/
- /%2E%2E/
- /..%2f
- /%2e%2e%2f
- /%252e%252e%252f
- /../yard-cache-secret.html
- yard-cache-secret.html
- ../*.html
- %2e%2e%2f*.html
What your security team should do
- Inventory internet-facing and internally exposed YARD documentation servers or Ruby applications that serve YARD-generated documentation.
- Prioritize upgrade of YARD to 0.9.44 or later for any exposed service.
- Restrict documentation endpoints to trusted users or networks, especially for internal API or code documentation.
- Add web server, WAF, or reverse proxy rules to block traversal attempts containing `/../`, encoded dot-dot sequences, or suspicious requests for sibling `.html` files.
- Search recent HTTP access logs for traversal attempts against YARD documentation paths and investigate any successful 200 responses.
- Review adjacent files around YARD document roots and remove sensitive generated HTML or build artifacts that do not need to be served.
- After remediation, run validation tests against both direct application endpoints and any CDN or reverse-proxy front doors.
The record
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.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|
Related vulnerabilities
- CVE-2026-81163 Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')… CWE-22
- CVE-2026-112049 Vita3K before build 4187 contains a path traversal (zip slip) vulnerability in… CWE-22
- CVE-2026-112005 WhoDB 0.104.0 before 0.135.0 contains a path traversal vulnerability that allows remote… CWE-22
- CVE-2026-61702 OpenPrinting CUPS is an open source printing system for Linux and other Unix-like… CWE-22
- CVE-2026-104871 The Angular SSR is a server-rise rendering tool for Angular applications. CWE-22
- CVE-2026-102991 Mako is a template library written in Python. CWE-22
- CVE-2026-101894 The decompress package for Node.js extracts archives. CWE-22
- CVE-2026-100689 GitPython before 3.1.62 does not validate the `path` field read from an untrusted… CWE-22