GHSA-j6qh-f45v-j454
Severity by source
CVSS:4.0/AV:L/AC:H/AT:N/PR:L/UI:N/VC:N/VI:L/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Local-only attack (AV:L), trivially spoofable with no complexity (AC:L), any unprivileged local user (PR:L), no confidentiality impact but full integrity and availability impact on network and filesystem state.
Primary rating from Vendor (CNA).
CVSS VectorVendor
Lifecycle Timeline
5Description PRE-NVD
AnalysisAI
Polkit privilege escalation in PortProtonQt 0.1.12 through 1.3.0 allows any local unprivileged user to modify system NetworkManager connections and mount or unmount arbitrary block devices without authorization. The vulnerable Polkit rule (ru.linux_gaming.PortProtonQt.rules) identifies trusted callers by inspecting process command lines via 'ps', a method trivially defeated by command-line spoofing or PID recycling races. A shell script reproducer confirmed by SUSE researchers achieves exploitation reliably and consistently. No public exploit is independently published but a working reproducer exists; no CISA KEV listing at time of analysis.
Technical ContextAI
PortProtonQt installs a Polkit JavaScript rules file (ru.linux_gaming.PortProtonQt.rules) to authorize the companion 'ppqtos' binary to perform privileged actions without a password prompt. The rule calls polkit.spawn(['ps', ...]) to read the command-line arguments of the requesting process and its parent PID, then grants polkit.Result.YES to four sensitive actions - org.freedesktop.NetworkManager.settings.modify.system, org.freedesktop.udisks2.filesystem-mount-system, org.freedesktop.udisks2.filesystem-mount-other-seat, and org.freedesktop.udisks2.filesystem-unmount-others - if the string 'ppqtos' appears in either command line. This design is insecure on two axes: (1) any process can include 'ppqtos' as an argument or in its argv[0] with no kernel enforcement, trivially spoofing the check; (2) the subject.pid inspected by the rule can be recycled between the moment a Polkit request is submitted and the moment the rule evaluates it (classic TOCTOU race). The underlying root cause maps to CWE-290 (Authentication Bypass by Spoofing) combined with CWE-362 (Concurrent Execution Using Shared Resource with Improper Synchronization). The fix in v1.3.1 (commit f0ab40a2d) replaces command-line inspection with subject.local, subject.active, and subject.isInGroup('portprotonqt') - Polkit-native, kernel-enforced attributes not spoofable from userspace.
RemediationAI
Upgrade to PortProtonQt version 1.3.1, released 2026-07-18. The patch is confirmed at https://github.com/Boria138/PortProtonQt/commit/f0ab40a2dab36ce91bc7e1b13d8d4ea220e5107c and replaces the insecure command-line inspection with a group membership check (portprotonqt group) combined with subject.local and subject.active checks. After upgrading, only users explicitly added to the portprotonqt group retain the elevated Polkit permissions, and only during active local sessions. As a compensating control prior to patching, administrators can remove or zero-out the file /usr/share/polkit-1/rules.d/ru.linux_gaming.PortProtonQt.rules - the upstream developer confirmed the Polkit rules file is not required for PortProtonQt's core functionality. Removing this file eliminates the attack surface with no functional impact on game launching. Alternatively, tightening filesystem permissions on the rules file to prevent Polkit from reading it achieves the same effect. The openSUSE review bug is tracked at https://bugzilla.suse.com/show_bug.cgi?id=1270218.
Same technique Information Disclosure
View allVendor StatusVendor
SUSE
Severity: ModerateShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-47888