CVE-2015-3218
NoneCVSS
—
EPSS
0.4%
Published
Oct 26, 2015
CISA due date
—
Cloudanix analysis
A logged-in user on an older Linux machine can crash the program that decides who is allowed to do administrative tasks, briefly stopping those decisions from working.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Application
- Class
- Memory Corruption
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Local unauthenticated call to RegisterAuthenticationAgent with an invalid D-Bus object path triggers a NULL pointer dereference inside polkitbackendinteractiveauthority.c, causing the polkitd daemon to crash.
Why it matters to the business
A local user on an affected system can repeatedly terminate the central authentication policy service, interrupting any process that relies on polkit for privilege decisions and potentially causing service outages on desktops or servers that use the framework.
How an attack unfolds
An attacker with a local shell invokes the RegisterAuthenticationAgent D-Bus method on the org.freedesktop.PolicyKit1.Authority interface, supplying a deliberately malformed object path; the daemon dereferences a NULL pointer during authority registration and terminates.
How to fix it
Upgrade polkit to version 0.113 or later; if an upgrade is not immediately possible, restrict local accounts that can connect to the system bus or run polkitd under a watchdog that restarts it automatically.
How to confirm the fix worked
Confirm the installed polkit package version is at least 0.113; optionally execute a benign test binary that performs the RegisterAuthenticationAgent call with a valid path and verify the daemon remains running.
Typical attack path
- Obtain a local shell or user account on the target host
- Locate or compile a small D-Bus client that calls RegisterAuthenticationAgent
- Supply an invalid object path (for example, a path that does not begin with a slash or is otherwise malformed)
- Invoke the method; observe polkitd crash and subsequent authentication failures
How to detect it
Search system and journal logs for repeated polkitd process crashes or segmentation faults around the time of authentication failures; look for D-Bus method calls to org.freedesktop.PolicyKit1.Authority.RegisterAuthenticationAgent originating from unprivileged local processes.
- polkitd.*segfault
- polkitbackendinteractiveauthority.c
- RegisterAuthenticationAgent
What your security team should do
- Apply the 0.113 (or newer) update to all systems running the affected polkit version
- Review local user accounts and remove unnecessary privileges that allow D-Bus access
- Monitor system logs for repeated polkitd crashes as a compensating control until patches are deployed
The record
The authentication_agent_new function in polkitbackend/polkitbackendinteractiveauthority.c in PolicyKit (aka polkit) before 0.113 allows local users to cause a denial of service (NULL pointer dereference and polkitd daemon crash) by calling RegisterAuthenticationAgent with an invalid object path.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | policykit-1 | 0 | 0.105-11 |
| Debian:12 | policykit-1 | 0 | 0.105-11 |
| Debian:13 | policykit-1 | 0 | 0.105-11 |
| Mageia:4 | polkit | 0 | 0.113-1.mga4 |
| Mageia:5 | polkit | 0 | 0.113-1.mga5 |
| SUSE:Linux Enterprise Desktop 12 | polkit | 0 | 0.113-4.1 |
| SUSE:Linux Enterprise Server 12 | polkit | 0 | 0.113-4.1 |
| SUSE:Linux Enterprise Server for SAP Applications 12 | polkit | 0 | 0.113-4.1 |
| SUSE:Linux Enterprise Software Development Kit 12 | polkit | 0 | 0.113-4.1 |
| SUSE:Linux Enterprise Workstation Extension 12 | polkit | 0 | 0.113-4.1 |
| Ubuntu:14.04:LTS | policykit-1 | 0 | 0.105-4ubuntu3.14.04.2 |
| Ubuntu:16.04:LTS | policykit-1 | 0 | 0.105-14.1ubuntu0.1 |
| Ubuntu:18.04:LTS | policykit-1 | 0 | 0.105-20ubuntu0.18.04.1 |