Skip to main content

Runtipi CVE-2026-47277

| EUVDEUVD-2026-37508 MEDIUM
Path Traversal (CWE-22)
2026-06-16 GitHub_M
6.5
CVSS 3.1 · Vendor: GitHub_M
Share

Severity by source

Vendor (GitHub_M) PRIMARY
6.5 MEDIUM
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:N/A:N
vuln.today AI
5.3 MEDIUM

AC:H reflects the prerequisite of controlling a configured app-store repository; PR:N applies because the logo endpoint itself requires no authentication once that precondition is met.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

3
Source Code Evidence Fetched
Jun 17, 2026 - 00:31 vuln.today
Analysis Generated
Jun 17, 2026 - 00:31 vuln.today
Patch available
Jun 16, 2026 - 23:02 EUVD

DescriptionCVE.org

Runtipi is a personal homeserver orchestrator. In versions 4.9.1 through 4.9.3, Runtipi serves marketplace app logos from files inside cloned app-store repositories through an unauthenticated endpoint, which leads to arbitrary file read through app-store logo symlinks. The path guard checks only the lexical path before Node reads the file, so a Git app store that contains metadata/logo.jpg as a symbolic link can cause Runtipi to read and return the symlink target. Because the endpoint is public and the symlink target may point outside the cloned repository, this can expose local files from the Runtipi container such as /data/.env, /data/state/seed, logs, or application files. This can disclose JWT secrets, service credentials, local configuration, and operational logs depending on the instance. The issue has been fixed in version 4.10.0.

AnalysisAI

Arbitrary file read in Runtipi 4.9.1-4.9.3 exposes sensitive container secrets via symlink following in an unauthenticated app-store logo endpoint. An attacker who controls a Git-based app-store repository can embed a symbolic link as a marketplace logo file; because the path guard performs only lexical validation before Node.js reads the file, Runtipi resolves and returns the symlink target, potentially leaking /data/.env, JWT secrets, service credentials, and seed values to any unauthenticated requester. No public exploit code has been identified at time of analysis and the issue is not listed in CISA KEV; a vendor-confirmed fix is available in v4.10.0.

Technical ContextAI

Runtipi is a Node.js-based homeserver orchestrator that clones Git app-store repositories to present a marketplace of self-hosted applications. Marketplace logos are served via a public HTTP endpoint that constructs a file path from the requested app identifier and reads the corresponding image. The path guard validates the lexical path only - it checks the string representation without resolving symbolic links first. Node.js's filesystem read then follows any symlink present in the repository to its target on the host filesystem, bypassing the intended directory restriction. This is a CWE-22 (Path Traversal) instance specifically triggered by TOCTOU-style symlink substitution: the validated path is safe as a string but resolves to an unintended target at read time. The affected product is cpe:2.3:a:runtipi:runtipi:*:*:*:*:*:*:*:* for versions 4.9.1 through 4.9.3. The v4.10.0 release notes confirm the fix: 'Tighten filesystem type checks to not follow symlinks when serving public data.'

RemediationAI

Vendor-released patch: v4.10.0. Update using the Runtipi CLI by running ./runtipi-cli update v4.10.0 from the root of the Runtipi installation directory; the release is available at https://github.com/runtipi/runtipi/releases/tag/v4.10.0. The fix tightens filesystem type checks so symlinks are never followed when serving public marketplace data. As a compensating control for instances that cannot immediately update, restrict app-store configuration to the official Runtipi store only and prevent administrators from adding third-party or user-supplied Git repositories as app sources - this eliminates the attacker's ability to introduce a malicious symlink, since the official store does not contain them. Note that this workaround depends on access control at the administrative layer and does not address the underlying code defect; upgrade to v4.10.0 is the only definitive remediation. The security advisory is at https://github.com/runtipi/runtipi/security/advisories/GHSA-qrqj-p7hm-4m66.

Share

CVE-2026-47277 vulnerability details – vuln.today

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