Severity by source
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H
Requires an authenticated uploader (PR:L) and an admin to open the preview (UI:R); script runs in the console origin stealing admin credentials, causing a scope change (S:C) and full storage compromise.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
4DescriptionCVE.org
RustFS Console is a web management console for the RustFS distributed file system. From 0.1.7 until 0.1.10, the RustFS Console components/object/preview-modal.tsx and components/object/pdf-viewer.tsx extension-based PDF preview path can render HTML content uploaded as .pdf, allowing stored cross-site scripting in the management console and exposure of administrator AccessKeyId, SecretAccessKey, and SessionToken values. This is caused by a regression of CVE-2026-27822. This vulnerability is fixed in 0.1.10.
AnalysisAI
Stored cross-site scripting in RustFS Console (0.1.7 through 0.1.9) lets an attacker upload an HTML payload disguised as a .pdf file that executes when an administrator previews it, exfiltrating the console's AccessKeyId, SecretAccessKey, and SessionToken. The flaw is a regression of the previously patched CVE-2026-27822 and stems from the PDF preview path trusting the .pdf filename extension rather than the actual content type. No public exploit identified at time of analysis, but a fix and the vulnerable code are public in 0.1.10.
Technical ContextAI
RustFS is a distributed object-storage file system, and RustFS Console is its React/TypeScript web management UI. The affected code lives in components/object/preview-modal.tsx and components/object/pdf-viewer.tsx. The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation): the isPdfPreview() helper decided to render an object in the PDF viewer if the object key merely ended in '.pdf' (keyLower.endsWith('.pdf')), independent of the real MIME type. An attacker could therefore store an object named foo.pdf whose bytes are actually HTML/JavaScript; when the browser rendered it in the preview/iframe context, the script executed in the console's origin. The affected component is identified by CPE cpe:2.3:a:rustfs:console.
RemediationAI
Vendor-released patch: upgrade RustFS Console to v0.1.10, which changes isPdfPreview() to key exclusively on contentType === 'application/pdf' and no longer trusts the .pdf filename extension (commit 49630dc). Reference the advisory at https://github.com/rustfs/rustfs/security/advisories/GHSA-7gcx-wg4x-q9x6 and the release at https://github.com/rustfs/console/releases/tag/v0.1.10. If immediate upgrade is not possible, restrict who can upload objects to trusted operators, avoid using the in-console object preview feature on untrusted or user-supplied objects, and serve stored objects with a correct Content-Type and a restrictive Content-Security-Policy plus Content-Disposition: attachment so browsers download rather than render them; the trade-off is that disabling in-browser preview reduces console usability. Rotating any AccessKeyId/SecretAccessKey/SessionToken values that may have been exposed is advisable if compromise is suspected.
RustFS (alpha.13 to alpha.78) has a path traversal in /rustfs/rpc/read_file_stream that allows reading arbitrary files o
RustFS (alpha.13 to alpha.78) has a privilege escalation where restricted service accounts can self-issue unrestricted c
Stored XSS in RustFS distributed object storage system before 1.0.0-alpha.83. Malicious JavaScript persists in stored ob
Incorrect IAM permission validation in RustFS prior to version 1.0.0-alpha.79 permits principals with export-only permis
RustFS versions 1.0.0-alpha.1 through 1.0.0-alpha.79 expose the shared HMAC secret in server logs when processing invali
Authentication bypass in RustFS distributed object storage (versions prior to 1.0.0-beta.2) allows unauthenticated remot
Privilege escalation in RustFS distributed object storage before 1.0.0-beta.2 lets a low-privileged user holding ImportI
Privilege escalation in RustFS prior to version 1.0.0-beta.11 allows any authenticated user holding CreateServiceAccount
Unauthenticated denial of service and information disclosure in RustFS distributed object storage prior to version 1.0.0
License-enforcement bypass in RustFS distributed object storage (versions prior to 1.0.0-beta.2) stems from a hardcoded
Cross-tenant object injection in RustFS 1.0.0-beta.4 lets a tenant holding only PutObject rights on their own bucket wri
Information disclosure in RustFS, a Rust-based distributed object storage system, lets any authenticated user with no ef
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-44728