Bug 1668521 (CVE-2019-3842) - CVE-2019-3842 systemd: Spoofing of XDG_SEAT allows for actions to be checked against "allow_active" instead of "allow_any"
Summary: CVE-2019-3842 systemd: Spoofing of XDG_SEAT allows for actions to be checked ...
Keywords:
Status: CLOSED ERRATA
Alias: CVE-2019-3842
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Red Hat Product Security
QA Contact:
URL:
Whiteboard:
Depends On: 1685443 1687514 1698045 1936866 1968647 1968648 1968649
Blocks: 1668522
TreeView+ depends on / blocked
 
Reported: 2019-01-23 01:23 UTC by Sam Fowler
Modified: 2023-10-06 18:05 UTC (History)
12 users (show)

Fixed In Version: systemd 242
Doc Type: If docs needed, set a value
Doc Text:
It was discovered that pam_systemd does not properly sanitize the environment before using the XDG_SEAT variable. It is possible for an attacker, in some particular configurations, to set a XDG_SEAT environment variable which allows for commands to be checked against polkit policies using the "allow_active" element rather than "allow_any".
Clone Of:
Environment:
Last Closed: 2021-05-18 20:33:43 UTC
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHSA-2021:3900 0 None None None 2021-10-19 07:01:13 UTC

Description Sam Fowler 2019-01-23 01:23:07 UTC
systemd has a vulnerability in the PAM module, pam_systemd, that allows for spoofing of the XDG_SEAT environment variable which allows for commands to be checked against polkit policies using the "allow_active" element rather than "allow_any". Users with local access to machines with an active tty sessions can exploit this to elevate their privileges.

Comment 1 Riccardo Schirone 2019-03-01 15:44:01 UTC
pam_systemd uses getenv() to retrieve XDG_SEAT value, however when pam_systemd is used by a SUID binary this allows a unprivileged user, in some circumstances, to provide a fake XDG_SEAT value, with the consequences mentioned in comment 0.

Comment 2 Riccardo Schirone 2019-03-01 15:49:10 UTC
For the attack to be successful, a new session must be created and that is created by pam_systemd only if the calling process is not already part of a session. On Fedora/RHEL, in their default PAM configurations, it does not seem to be possible to let a session sneak in without systemd knowing about it, since pam_systemd is always called in every PAM config file.

Comment 9 Riccardo Schirone 2019-04-09 12:21:42 UTC
Upstream patch:
https://github.com/systemd/systemd/commit/83d4ab55336ff8a0643c6aa627b31e351a24040a

Comment 10 Riccardo Schirone 2019-04-09 13:56:21 UTC
Created systemd tracking bugs for this issue:

Affects: fedora-all [bug 1698045]

Comment 11 Riccardo Schirone 2019-04-09 15:30:06 UTC
Acknowledgments:

Name: Jann Horn (Google Project Zero)

Comment 13 Riccardo Schirone 2020-03-06 13:57:55 UTC
Statement:

For the attack to be successful, a new session must be created by pam_systemd. This is done only if the calling process is not already part of a session. Red Hat Enterprise Linux, in its default PAM configurations, does not let a session sneak in without systemd knowing about it, since pam_systemd is always called in every PAM config file. Unless a wrong PAM config file is in place, this vulnerability cannot be triggered on Red Hat Enterprise Linux 7 and 8.

Comment 14 errata-xmlrpc 2021-05-18 13:40:52 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8

Via RHSA-2021:1611 https://access.redhat.com/errata/RHSA-2021:1611

Comment 15 Product Security DevOps Team 2021-05-18 20:33:43 UTC
This bug is now closed. Further updates for individual products will be reflected on the CVE page(s):

https://access.redhat.com/security/cve/cve-2019-3842

Comment 16 errata-xmlrpc 2021-10-19 07:01:11 UTC
This issue has been addressed in the following products:

  Red Hat Enterprise Linux 8.2 Extended Update Support

Via RHSA-2021:3900 https://access.redhat.com/errata/RHSA-2021:3900


Note You need to log in before you can comment on or make changes to this bug.