Bug 2517889 (CVE-2026-75887) - CVE-2026-75887 openshift/console: openshift/console: Unauthenticated path traversal in i18n locale handler
Summary: CVE-2026-75887 openshift/console: openshift/console: Unauthenticated path tra...
Keywords:
Status: NEW
Alias: CVE-2026-75887
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
high
high
Target Milestone: ---
Assignee: Product Security DevOps Team
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2026-08-18 13:12 UTC by OSIDB Bzimport
Modified: 2026-09-23 21:05 UTC (History)
16 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description OSIDB Bzimport 2026-08-18 13:12:45 UTC
The /locales/resource.json endpoint in the OpenShift console is registered without authHandler (pkg/server/server.go:544-546). The lng and ns query parameters are taken directly from user input with no sanitization (pkg/plugins/handlers.go:95-132).

When ns does not have the "plugin__" prefix, the handler calls http.ServeFile with path.Join(p.PublicDir, "locales", lang, fmt.Sprintf("%s.json", namespace)). path.Join cleans ".." but does not confine the result under PublicDir. http.ServeFile's built-in ".." guard only inspects r.URL.Path, not the name argument.

An unauthenticated attacker can read any *.json file from the pod filesystem, including ConfigMap-mounted plugin manifests and configuration files. When ns has the "plugin__" prefix, the unsanitized lang is injected into the request path sent to plugin services, enabling path traversal against every registered dynamic-plugin backend.

Tested and reproduced on OCP 5.0 nightly cluster.

Upstream: https://github.com/openshift/console
File: pkg/server/server.go:544-546, pkg/plugins/handlers.go:95-132


Note You need to log in before you can comment on or make changes to this bug.