CVE Vulnerabilities

CVE-2023-28117

Insertion of Sensitive Information Into Sent Data

Published: Mar 22, 2023 | Modified: Nov 07, 2023
CVSS 3.x
6.5
MEDIUM
Source:
NVD
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N
CVSS 2.x
RedHat/V2
RedHat/V3
Ubuntu
MEDIUM

Sentry SDK is the official Python SDK for Sentry, real-time crash reporting software. When using the Django integration of versions prior to 1.14.0 of the Sentry SDK in a specific configuration it is possible to leak sensitive cookies values, including the session cookie to Sentry. These sensitive cookies could then be used by someone with access to your Sentry issues to impersonate or escalate their privileges within your application.

In order for these sensitive values to be leaked, the Sentry SDK configuration must have sendDefaultPII set to True; one must use a custom name for either SESSION_COOKIE_NAME or CSRF_COOKIE_NAME in ones Django settings; and one must not be configured in ones organization or project settings to use Sentrys data scrubbing features to account for the custom cookie names.

As of version 1.14.0, the Django integration of the sentry-sdk will detect the custom cookie names based on ones Django settings and will remove the values from the payload before sending the data to Sentry. As a workaround, use the SDKs filtering mechanism to remove the cookies from the payload that is sent to Sentry. For error events, this can be done with the before_send callback method and for performance related events (transactions) one can use the before_send_transaction callback method. Those who want to handle filtering of these values on the server-side can also use Sentrys advanced data scrubbing feature to account for the custom cookie names. Look for the $http.cookies, $http.headers, $request.cookies, or $request.headers fields to target with a scrubbing rule.

Weakness

The code transmits data to another actor, but a portion of the data includes sensitive information that should not be accessible to that actor.

Affected Software

Name Vendor Start Version End Version
Sentry_software_development_kit Sentry * 1.14.0 (excluding)
Sentry-python Ubuntu kinetic *
Sentry-python Ubuntu lunar *
Sentry-python Ubuntu mantic *
Sentry-python Ubuntu trusty *
Sentry-python Ubuntu xenial *

Potential Mitigations

  • Compartmentalize the system to have “safe” areas where trust boundaries can be unambiguously drawn. Do not allow sensitive data to go outside of the trust boundary and always be careful when interfacing with a compartment outside of the safe area.
  • Ensure that appropriate compartmentalization is built into the system design, and the compartmentalization allows for and reinforces privilege separation functionality. Architects and designers should rely on the principle of least privilege to decide the appropriate time to use privileges and the time to drop privileges.

References