CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-63458

CVE-2026-63458: Broken Object Level Authorization (BOLA) and Tenant Isolation Bypass in Perses

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 19, 2026·6 min read·6 visits

Executive Summary (TL;DR)

Authenticated users with viewer access can bypass tenant boundaries and view configurations of unauthorized projects due to inconsistent parameter evaluation in Perses backend services.

An authorization bypass and tenant isolation vulnerability in Perses prior to version 0.54.0-beta.3 allows authenticated viewers to access unauthorized project resources by manipulating query parameters or querying unmapped ephemeral endpoints.

Vulnerability Overview

Perses is an open-source observability dashboard and visualization platform designed for multi-tenant environments.

Multi-tenancy in Perses relies on project boundaries to isolate dashboards, datasources, folders, variables, and secrets.

Security boundaries must prevent users assigned to one project from viewing or modifying resources belonging to another project.

Prior to version 0.54.0-beta.3, Perses suffered from a significant Broken Object Level Authorization (BOLA) vulnerability.

The application evaluated permissions based on path parameters but retrieved data using client-controlled query parameters.

This inconsistency allowed authenticated users with minimum viewer access to bypass project isolation and read sensitive resource metadata from arbitrary projects.

Root Cause Analysis

The root cause of the vulnerability lies in the parameter precedence logic inside the Perses API service layer.

Specifically, the helper function manageQuery processed incoming query filters before interacting with the database.

When a client requested a list of resources, the API extracted the project scope from both the HTTP request path and the URL query parameters.

In the vulnerable implementation, manageQuery prioritized existing values in the query object over the validated path parameter.

If the project key was present in the query string, the helper skipped overriding it with the authorized path variable.

Consequently, the authorization middleware performed access checks against the safe path parameter, while the database query execution layer proceeded to retrieve records using the attacker-controlled query parameter.

Additionally, a secondary gap existed within the authorization middleware's path registration.

The middleware classified incoming requests as project-scoped or global by checking their paths against a static list.

Because the endpoint for Ephemeral Dashboards (PathEphemeralDashboard) was omitted from this registration array, all requests targeting ephemeral dashboards bypassed project-scoped authorization entirely.

Code Analysis

The vulnerable code in the service layer relied on manageQuery to resolve the target project.

The function failed to enforce alignment between the authorized parameter and the query filter:

// Vulnerable implementation of manageQuery
func manageQuery(q *dashboard.Query, params apiInterface.Parameters) (*dashboard.Query, error) {
    query, err := deep.Copy(q)
    if err != nil {
        return nil, fmt.Errorf("unable to copy the query: %w", err)
    }
    // If the query parameter is already populated, this override is skipped
    if len(query.Project) == 0 {
        query.Project = params.Project
    }
    return query, nil
}

The remediation removed manageQuery entirely and established query verification in the central toolbox component.

The toolbox now enforces strict parity between the path scope and the query parameter:

// Patched logic in internal/api/toolbox/list.go
func (t *toolbox[T, K, V]) list(ctx echo.Context, parameters apiInterface.Parameters, query V) (any, error) {
    projectQueryParameter := query.GetProjectQueryParam()
    if len(projectQueryParameter) > 0 {
        // Enforce strict matching between the path-defined project and query-defined project
        if len(parameters.Project) > 0 && parameters.Project != projectQueryParameter {
            return nil, apiInterface.HandleBadRequestError(fmt.Sprintf("the project name in the path (%s) and the project name in the query parameter (%s) are different", parameters.Project, projectQueryParameter))
        }
        // Override parameter to ensure authorization is performed on the actual target
        parameters.Project = projectQueryParameter
    }

To resolve the second issue, the middleware utility array was updated to include the missing ephemeral path variable:

// Patched internal/api/utils/utils.go
var ProjectResourcePathList = []string{
    PathDashboard,
    PathEphemeralDashboard, // Added to enforce authorization checks
    PathDatasource,
    PathFolder,
    PathRole,
    PathRoleBinding,
    PathSecret,
    PathVariable,
}

Exploitation Methodology

To exploit this vulnerability, an attacker must first obtain valid credentials with viewer permissions for at least one project on the target Perses instance.

The attacker does not require administrative privileges.

This low prerequisite threshold increases the likelihood of internal exploitation in multi-tenant environments.

The attacker crafts a standardized HTTP GET request to a project-scoped list endpoint.

The request targets the project for which the attacker possesses authorization, but appends the target project's name as a query parameter.

The following diagram illustrates the vulnerable flow and the authorization bypass mechanism:

When the query parameter is processed, the backend queries the database for resources matching the query value instead of the path value.

The server returns the configuration objects of the unauthorized tenant, exposing credentials, data source locations, and dashboard layouts.

Impact Assessment

The impact of CVE-2026-63458 is classified as High, with a CVSS v4.0 base score of 7.1.

The attack vector is Network, requiring Low privileges and zero user interaction.

The primary impact is to Confidentiality, which is assessed as High.

An attacker can read the complete database schema, connection endpoints, credentials, and variable configurations of other projects.

For datasources, this exposure could reveal sensitive system metrics, internal infrastructure topology, or monitoring credentials.

Because the vulnerability does not allow modification of resources or interruption of service, Integrity and Availability impacts are rated as None.

While there is no current evidence of active exploitation in the wild, the vulnerability presents a significant risk to organizations utilizing Perses as a shared, multi-tenant monitoring service.

Security teams should treat this as a high-priority exposure in environments where sensitive data is separated on a project-by-project basis.

Remediation and Mitigation

The recommended and complete remediation for CVE-2026-63458 is upgrading the Perses server installation to version 0.54.0-beta.3 or higher.

This release contains the updated verification pipeline in the toolbox module that rejects mismatched requests.

If upgrading is not immediately possible, security teams can implement temporary Web Application Firewall (WAF) or reverse proxy rules.

The rules should analyze incoming GET requests to /api/v1/projects/ paths.

If the request contains a query parameter named project that does not match the project name in the path, the request must be blocked and a 400 Bad Request returned.

Organizations should also conduct a retrospective log analysis of their web server access logs.

Search for HTTP requests that access project resources and contain the project query parameter.

Comparing the path segment against the query parameter value will help identify any past exploitation attempts.

Fix Analysis (1)

Technical Appendix

CVSS Score
7.1/ 10
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Affected Systems

Perses Observability Platform

Affected Versions Detail

Product
Affected Versions
Fixed Version
perses
perses
< 0.54.0-beta.30.54.0-beta.3
AttributeDetail
CWE IDCWE-639
Attack VectorNetwork (AV:N)
CVSS Score7.1
EPSS Score0.0
ImpactConfidentiality High (VC:H)
Exploit Statusnone
KEV StatusNot Listed

MITRE ATT&CK Mapping

T1592Gather Victim Org Information
Reconnaissance
T1020Automated Ad-Hoc Querying
Discovery
CWE-639
Authorization Bypass Through User-Controlled Key

The system fails to prevent a user from accessing resources of other tenants by modifying a key (the project query parameter) that directly controls which object is retrieved.

Vulnerability Timeline

Core patch developed and verified by security team.
2026-06-30
Fix commit merged into the main repository branch.
2026-07-03
Release of CVE-2026-63458 and corresponding advisory GHSA-cjgj-2fwf-4c2w.
2026-09-18

References & Sources

  • [1]Official GitHub Security Advisory
  • [2]Remediation Fix Commit
  • [3]Release Tag Details
  • [4]NVD Vulnerability Record
  • [5]CVE.org Record

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•about 1 hour ago•CVE-2026-91127
8.2

CVE-2026-91127: DOM Cross-Site Scripting via Unsafe Hyperlink Schemes in Flyfish File Viewer Legacy DOC Renderer

This report details CVE-2026-91127 (GHSA-3753-m2x2-q623), a high-severity DOM Cross-Site Scripting (DOM XSS) vulnerability in the file-viewer workspace developed by flyfish-dev. The legacy Word document (.doc) parser fails to restrict hyperlink URI schemes when rendering extracted document targets into generated HTML. As a result, a remote attacker can construct a malicious legacy DOC file containing scripts inside hyperlink properties. When a user previews the file and clicks the hyperlink, arbitrary JavaScript executes in the context of the hosting origin, enabling session hijacking, credential theft, or unauthorized API interaction.

Amit Schendel
Amit Schendel
1 views•7 min read
•about 3 hours ago•CVE-2026-63199
8.3

CVE-2026-63199: Cross-Scope Secret Disclosure via Missing Authorization in Perses Datasource Proxy

CVE-2026-63199 is a critical missing authorization vulnerability (CWE-862) in Perses versions 0.43.0 to 0.54.0-rc.0. It allows low-privileged attackers to retrieve and exfiltrate highly sensitive credentials (secrets) from different scopes by configuring a malicious datasource pointing to an attacker-controlled endpoint.

Amit Schendel
Amit Schendel
6 views•7 min read
•about 4 hours ago•CVE-2026-63445
7.1

CVE-2026-63445: Arbitrary File Read and Path Traversal in Perses File-System Database Backend

An arbitrary file read and path traversal vulnerability exists in Perses prior to version 0.54.0-rc.0. When configured with a file-system database backend, the application lacks input validation on the request-controlled project query parameter. An authenticated attacker with low privileges can supply directory traversal sequences to read arbitrary JSON or YAML files on the host file system.

Amit Schendel
Amit Schendel
6 views•6 min read
•about 5 hours ago•CVE-2026-59163
9.1

CVE-2026-59163: Critical JWT Authentication Bypass in Mnemosyne Sync Server

CVE-2026-59163 is a critical authentication bypass vulnerability in the Mnemosyne sync server. In versions prior to v3.10.1, the server's authentication logic decoded incoming JSON Web Tokens (JWT) but completely skipped cryptographic signature verification. An unauthenticated remote attacker can exploit this vulnerability to bypass authentication, impersonate arbitrary users, read synchronized AI agent states, or write malicious database updates.

Alon Barad
Alon Barad
6 views•7 min read
•about 6 hours ago•CVE-2026-85058
7.5

CVE-2026-85058: Missing Authorization in Moquette MQTT Broker Last Will and Testament Feature

An authorization bypass vulnerability exists in the Moquette MQTT broker prior to version 0.18.1. When an MQTT client registers a Last Will and Testament (LWT) topic during its connection setup, the broker fails to perform write-access checks on that topic. Upon an abrupt client disconnection, the broker publishes the registered Will message to subscribers of the unauthorized topic, bypassing configured Access Control Lists (ACLs).

Amit Schendel
Amit Schendel
5 views•8 min read
•about 7 hours ago•CVE-2026-71537
6.5

CVE-2026-71537: Credit-Refund Double-Spend Race Condition in Paymenter Service Downgrade

A concurrent execution vulnerability (CWE-362) exists in the Paymenter webshop solution within the service downgrade execution path (doUpgrade). Authenticated customers can exploit this concurrency issue by sending concurrent HTTP requests to trigger multiple parallel executions of the refund process. Because the application checks for pending upgrades without database transactional isolation or exclusive row locks, attackers can generate multiple duplicate refunds to their account balance for a single downgrade action. This leads to arbitrary credit inflation on the platform.

Amit Schendel
Amit Schendel
5 views•9 min read