GHSA-4227-9989-jrhx: Go/github.com/perses/perses vulnerability

Published Sep 18, 2026
·
Updated

Impact

The datasource proxy authorizes the caller on the Datasource scope, then resolves and decrypts any Secret named in the request body with no Secret-scope check.

Datasource and Secret are distinct, independently grantable role scopes, so an operator can grant datasource access without secret access. The proxy and the service to create a datasource does not verify that the operator has the correct right.

A user holding only GlobalDatasource:create can create a GlobalDatasource and attached to it a GlobalSecret without having the right to get access to. The user can also do the same by using the unSaved datasource feature proposed by the proxy used to verify the connectivity to the datasource before creating the resource.

As soon as you can attach a secret that you don't have right to see, you can then create a Datasource that you control and then read anything send by Perses. Which include the secret in plain text. You can then have access to the secret without being granted to.

The project-scoped variant does the same within a project.

Patches The proxy and the service to create the datasource is verifying if you have the right to read a secret if a secret is attached to the datasource. This is patch in v0.54.0-rc.0

Workarounds This issue can be avoided by using the provisioning to create the datasource and by removing the right to create datasource.

Affected Software

1 affected componentFixes available
go/github.com/perses/perses>=0.43.0<0.54.0-rc.0
0.54.0-rc.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade go/github.com/perses/perses to a version that resolves this vulnerability.

    Fixed in 0.54.0-rc.0
  2. Upgrade

    Upgrade to a fixed release to a version that resolves this vulnerability.

    Fixed in v0.54.0-rc.0
  3. Compensating control

    Avoid the affected path by using the provisioning mechanism to create the datasource instead of the proxy/service flow described; additionally remove the right to create datasource (e.g., do not grant datasource creation permissions to operators who should not access secrets).

  4. Operational

    If any secrets were exposed in the request body/provisioning ("included in plain text"), treat them as compromised and rotate/revoke any affected credentials/secrets after applying the fix.

Event History

Sep 18, 2026
Advisory Published
via GitHub·05:39 PM
Data Sourced
via GitHub·05:39 PM
DescriptionWeaknessAffected Software

Frequently Asked Questions

1

Can a user without permission to view a secret access its contents?

Yes. A user with only GlobalDatasource:create can attach a GlobalSecret they are not allowed to access to a datasource they control, causing Perses to send the secret to that datasource in plain text.

2

Does this require creating a saved datasource?

No. The unsaved datasource connectivity-check feature can also be used to attach a secret and expose its contents before the datasource resource is created.

3

Is the issue limited to global resources?

No. The project-scoped datasource and secret variants have the same authorization issue within a project.

4

What authorization check was added by the patch?

The proxy and datasource-creation service verify that the caller has permission to read a referenced secret before allowing it to be attached to a datasource.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203