Polkit
| polkit | |
|---|---|
| File:PolicyKit-KDEPlasma5.png KDE Plasma-based front-end | |
| Developers | David Zeuthen, Red Hat |
| Repository |
|
| Written in | C |
| Engine | |
| Operating system | Linux, Unix-like |
| Type | Privilege authorization |
| License | LGPL (free software) |
| Website | github |
Polkit (formerly PolicyKit) is a component for controlling system-wide privileges in Unix-like operating systems. It provides an organized way for non-privileged processes to communicate with privileged ones. Polkit allows a level of control of centralized system policy. It is developed and maintained by David Zeuthen from Red Hat and hosted by the freedesktop.org project. It is published as free software under the terms of version 2 of the GNU Lesser General Public License.[1]
Since version 0.105, released in April 2012,[2][3] the name of the project was changed from PolicyKit to polkit to emphasize that the system component was rewritten[4] and that the application programming interface had changed, breaking backward compatibility.[5][dubious – discuss]
Fedora became the first distribution to include PolicyKit, and it has since been used in other distributions, including Ubuntu since version 8.04 and openSUSE since version 10.3. Some distributions, like Fedora,[6] have already switched to the rewritten polkit.
It is also possible to use polkit to execute commands with elevated privileges using the command pkexec followed by the command intended to be executed (with root permission).[7] Systemd provides an alternate interface to polkit called run0.
Implementation
[edit | edit source]The polkitd daemon implements Polkit functionality.[8]
Security
[edit | edit source]| CVE identifier | CVE-2021-4034 |
|---|---|
| Date discovered | 18 November 2021 |
| Discoverer | Qualys Research Team |
| Affected hardware | All architectures |
| Affected software | Polkit (all versions prior to discovery) |
| Used by | Default on every major Linux distribution |
| Website | qualys.com |
Polkit improves on the security offered by sudo by avoiding SUID binaries, which are the primary cause of privilege escalation vulnerabilities on Unix-like systems.[9]
Nevertheless, as with sudo, several privilege escalation vulnerabilities have been found in polkit. The memory corruption vulnerability PwnKit (CVE-2021-4034[10]) discovered in the pkexec command (installed on all major Linux distributions) was announced on January 25, 2022.[11][12] The vulnerability dates back to the original distribution from 2009. The vulnerability received a CVSS score of 7.8 ("High severity") reflecting serious factors involved in a possible exploit: unprivileged users can gain full root privileges, regardless of the underlying machine architecture or whether the polkit daemon is running or not.
See also
[edit | edit source]Lua error in mw.title.lua at line 392: bad argument #2 to 'title.new' (unrecognized namespace name 'Portal').
- Pluggable authentication module
- Principle of least privilege
- PackageKit
- User Account Control – a similar feature introduced in Windows Vista and still exists in Windows 11
References
[edit | edit source]- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
- ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
External links
[edit | edit source]- polkit GitHub repository at github.com
- Documentation at freedesktop.org
- Why polkit explaining polkit's role in a modern system