Skip to content

Graylog user session is still usable after logout

Low severity GitHub Reviewed Published Jul 5, 2023 in Graylog2/graylog2-server • Updated Nov 5, 2023

Package

maven org.graylog2:graylog2-server (Maven)

Affected versions

>= 1.0, < 5.0.9
>= 5.1.0, < 5.1.3

Patched versions

5.0.9
5.1.3

Description

Summary

In a multi-node Graylog cluster, after a user has explicitly logged out, a user session may still be used for API requests until it has reached its original expiry time.

Details

Each node maintains an in-memory cache of user sessions. Upon a cache-miss, the session is loaded from the database. After that, the node operates solely on the cached session. Modifications to sessions will update the cached version as well as the session persisted in the database. However, each node maintains their isolated version of the session.

When the user logs out, the session is removed from the node-local cache and deleted from the database. The other nodes will however still use the cached session.

These nodes will only fail to accept the session id if they intent to update the session in the database. They will then notice that the session is gone. This is true for most API requests originating from user interaction with the Graylog UI because these will lead to an update of the session's "last access" timestamp.

If the session update is however prevented by setting the X-Graylog-No-Session-Extension:true header in the request, the node will consider the (cached) session valid until the session is expired according to its timeout setting.

PoC

In a 2-node setup, with both nodes behind a load balancer:

  1. Log in
  2. Extract the session ID from the cookie
  3. Log out and close the browser
  4. Perform the following API request repeatedly with curl (with <session-id> replaced with the session id from step 2 and <lb-host> replaced with the hostname of your load balancer):
    curl -I -H X-Graylog-No-Session-Extension:true https://<session-id>:session@<lb-host>/api/system/cluster/nodes
    
  5. Notice that the request is sometimes rejected, but sometimes succeeds

Impact

No session identifiers are leaked.

After a user has logged out, the UI shows the login screen again, which gives the user the impression that their session is not valid anymore. However, if the session becomes compromised later, it can still be used to perform API requests against the Graylog cluster. The time frame for this is limited to the configured session lifetime, starting from the time when the user logged out.

References

@bernd bernd published to Graylog2/graylog2-server Jul 5, 2023
Published to the GitHub Advisory Database Jul 6, 2023
Reviewed Jul 6, 2023
Published by the National Vulnerability Database Aug 30, 2023
Last updated Nov 5, 2023

Severity

Low

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
High
Privileges required
Low
User interaction
Required
Scope
Unchanged
Confidentiality
Low
Integrity
None
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:U/C:L/I:N/A:N

EPSS score

0.056%
(25th percentile)

Weaknesses

CVE ID

CVE-2023-41041

GHSA ID

GHSA-3fqm-frhg-7c85

Credits

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.