Bug 2512012 (CVE-2026-110975)

Summary: CVE-2026-110975 autotune: kruize/autotune: kruize/autotune: Datasources credential disclosure
Product: [Other] Security Response Reporter: OSIDB Bzimport <bzimport>
Component: vulnerabilityAssignee: Product Security <prodsec-ir-bot>
Status: NEW --- QA Contact:
Severity: high Docs Contact:
Priority: high    
Version: unspecifiedCC: kgaikwad, security-response-team
Target Milestone: ---Keywords: Security
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
A flaw was found in Kruize Autotune. Its REST API ships without an authentication layer, and the endpoints that return datasource configuration — the list-datasources endpoint (GET /datasources) and the datasource-metadata endpoint — serialized datasource objects using a default Gson configuration with no field-exclusion strategy. As a result, the authentication secrets stored for each configured monitoring datasource (basic-auth passwords, bearer tokens, API keys, and OAuth2 client secrets) were returned in cleartext to any client able to reach the service. An attacker with network access to Autotune could harvest these credentials and reuse them to authenticate to the backing monitoring stack.
Story Points: ---
Clone Of: Environment:
Last Closed: Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description OSIDB Bzimport 2026-08-06 13:05:27 UTC
Location: src/main/java/com/autotune/analyzer/services/ListDatasources.java:110

CWE: CWE-522

What it is: ListDatasources serializes DataSourceInfo (incl. AuthenticationConfig rebuilt from the plaintext kruize_authentication table) with a default Gson — no ExclusionStrategy, Gson serializes private fields by runtime type: BasicAuth password, bearer token, API key, OAuth2 clientSecret all emitted.

Why it's a security flaw: curl http://kruize:8080/datasources -> datasources[].authentication.credentials — network access to Kruize becomes authenticated access to the monitoring stack.

Triage: HIGH stands: end-to-end Gson trace confirmed (no exclusions anywhere on the graph; all five credential subclasses emit); cluster-internal-only assumption REFUTED by the tree's own manifests (NodePort/LoadBalancer services + documented OpenShift Route). Sole serialization endpoint verified. Patched with a Credentials exclusion strategy; compile PASS.

Remediation: ExclusionStrategy/redaction on serialization; never serialize credentials outbound.