During routine testing, we identified a scenario where a specific error message generated by our platform could include a plaintext Client ID and Client Secret for an application integration. The Client ID and Client Secret would not be displayed in the UI, but would be returned in the underlying HTTP response to the end user. This could occur under the following conditions:
- An app installation made use of a Search UI component with the async
flag set to true (default: true),
- A user types types into the Search Component which creates a request to the third-party for search or query results, and
- That third-party response may then fail validation and Sentry would return the select-requester.invalid-response
error code along with a serialized version of a Sentry application containing the integration Client Secret.
Should this error be found, it's reasonable to assume the potential exposure of an integration Client Secret. However, an ID and Secret pair alone does not provide direct access to any data. For that secret to be abused an attacker would also need to obtain a valid API token for a Sentry application.
For Sentry SaaS users, we have confirmed that only a single application integration was impacted and the owner has rotated their Client Secret. We have also confirmed that no abuse of the leaked Client Secret has occurred.
Sentry self-hosted does not ship with any application integrations. This could only impact self-hosted users that maintain their own integrations. In that case, search for a select-requester.invalid-response
event. Please note that this error was also shared with another event unrelated to this advisory so you will also need to review the parameters logged for each named event. You may review select_requester.py for the instances where these errors can be generated. With the security fix this is no longer a shared event type.