CVE-2016-5404
Medium · 6.5CVSS
6.5
EPSS
2.6%
Published
Sep 7, 2016
CISA due date
—
Cloudanix analysis
A missing check let some users cancel certificates they were never supposed to be able to cancel, which can break access to systems that depend on those certificates.
- Exploitation
- Remote Authenticated
- Attacker needs
- Low Privilege
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Application
- Class
- Authorization Bypass
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Missing permission check in the cert_revoke command allows any user holding only the retrieve certificate permission to invoke revocation on arbitrary certificates.
Why it matters to the business
Organizations lose control over certificate lifecycle, enabling disruption of services that rely on valid certificates and forcing emergency re-issuance or downtime.
How an attack unfolds
An authenticated user with retrieve-certificate rights crafts a cert_revoke request for a target certificate; because the required revoke permission is never enforced, the server accepts and processes the revocation, immediately invalidating the certificate for all relying parties.
How to fix it
Upgrade FreeIPA to a version that enforces the revoke-certificate permission on the cert_revoke command; restrict retrieve-certificate rights to the minimum set of accounts that truly require them; monitor certificate revocation logs for unexpected entries.
How to confirm the fix worked
Review the source or package changelog for the permission check addition; attempt a revocation with a test account that possesses only retrieve-certificate rights and confirm the operation is now denied; inspect audit logs for the presence of the permission check.
Typical attack path
- Obtain valid authentication credentials to the FreeIPA instance
- Acquire retrieve-certificate permission through normal role assignment or misconfiguration
- Submit a crafted cert_revoke command specifying an arbitrary certificate serial or subject
- Observe successful revocation without any permission error
- Leverage resulting service disruption or conduct follow-on attacks against systems that now lack valid certificates
How to detect it
Search FreeIPA audit and command logs for cert_revoke invocations performed by accounts lacking the revoke-certificate permission; correlate with certificate status changes that lack corresponding administrative approval.
What your security team should do
- Prioritize patching all FreeIPA servers to a version containing the permission enforcement fix
- Audit current role assignments and remove retrieve-certificate grants from accounts that do not also hold revoke-certificate rights
- Enable and retain detailed audit logging for certificate operations
- Establish a process to verify certificate validity status after any administrative change
The record
The cert_revoke command in FreeIPA does not check for the "revoke certificate" permission, which allows remote authenticated users to revoke arbitrary certificates by leveraging the "retrieve certificate" permission.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Chainguard | freeipa | 0 | 4.12.5-r0 |
| Chainguard | freeipa-doc | 0 | 4.12.5-r0 |
| Chainguard | py3.13-ipaclient | 0 | 4.12.5-r0 |
| Chainguard | py3.13-ipalib | 0 | 4.12.5-r0 |
| Chainguard | py3.13-ipaplatform | 0 | 4.12.5-r0 |
| Chainguard | py3.13-ipapython | 0 | 4.12.5-r0 |
| Chainguard | py3.13-ipaserver | 0 | 4.12.5-r0 |
| Chainguard | py3.13-ipatests | 0 | 4.12.5-r0 |
| Debian:12 | freeipa | 0 | 4.3.2-5 |
| Debian:13 | freeipa | 0 | 4.3.2-5 |
| Red Hat:enterprise_linux:6::client | ipa | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::client | ipa-admintools | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::client | ipa-client | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::client | ipa-debuginfo | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::client | ipa-python | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::client | ipa-server | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::client | ipa-server-selinux | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::client | ipa-server-trust-ad | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::computenode | ipa | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::computenode | ipa-admintools | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::computenode | ipa-client | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::computenode | ipa-debuginfo | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::computenode | ipa-python | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::computenode | ipa-server | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::computenode | ipa-server-selinux | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::computenode | ipa-server-trust-ad | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::server | ipa | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::server | ipa-admintools | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::server | ipa-client | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::server | ipa-debuginfo | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::server | ipa-python | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::server | ipa-server | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::server | ipa-server-selinux | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::server | ipa-server-trust-ad | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::workstation | ipa | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::workstation | ipa-admintools | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::workstation | ipa-client | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::workstation | ipa-debuginfo | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::workstation | ipa-python | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::workstation | ipa-server | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::workstation | ipa-server-selinux | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:6::workstation | ipa-server-trust-ad | 0 | 0:3.0.0-50.el6_8.2 |
| Red Hat:enterprise_linux:7::client | ipa | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::client | ipa-admintools | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::client | ipa-client | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::client | ipa-debuginfo | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::client | ipa-python | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::client | ipa-server | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::client | ipa-server-dns | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::client | ipa-server-trust-ad | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::computenode | ipa | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::computenode | ipa-admintools | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::computenode | ipa-client | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::computenode | ipa-debuginfo | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::computenode | ipa-python | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::computenode | ipa-server | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::computenode | ipa-server-dns | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::computenode | ipa-server-trust-ad | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::server | ipa | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::server | ipa-admintools | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::server | ipa-client | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::server | ipa-debuginfo | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::server | ipa-python | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::server | ipa-server | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::server | ipa-server-dns | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::server | ipa-server-trust-ad | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::workstation | ipa | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::workstation | ipa-admintools | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::workstation | ipa-client | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::workstation | ipa-debuginfo | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::workstation | ipa-python | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::workstation | ipa-server | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::workstation | ipa-server-dns | 0 | 0:4.2.0-15.el7_2.19 |
| Red Hat:enterprise_linux:7::workstation | ipa-server-trust-ad | 0 | 0:4.2.0-15.el7_2.19 |
| Ubuntu:Pro:14.04:LTS | freeipa | 0 | 3.3.4-0ubuntu3.1+esm1 |
| Ubuntu:Pro:16.04:LTS | freeipa | 0 | 4.3.1-0ubuntu1+esm1 |
Related vulnerabilities
- CVE-2024-11029 A flaw was found in the FreeIPA API audit, where it sends the whole FreeIPA command line… Also affects freeipa
- CVE-2024-3183 A vulnerability was found in FreeIPA in a way when a Kerberos TGS-REQ is encrypted using… Also affects freeipa
- CVE-2024-2698 A vulnerability was found in FreeIPA in how the initial implementation of MS-SFU by MIT… Also affects freeipa
- CVE-2024-1481 A flaw was found in FreeIPA. Also affects freeipa
- CVE-2024-1271 [privileges escalation from root to domain admin] Also affects freeipa
- CVE-2023-5455 A Cross-site request forgery vulnerability exists in ipa/session/login_password in all… Also affects freeipa
- CVE-2016-2115 Samba 3.x and 4.x before 4.2.11, 4.3.x before 4.3.8, and 4.4.x before 4.4.2 does not… Also affects ipa
- CVE-2015-5370 Samba 3.x and 4.x before 4.2.11, 4.3.x before 4.3.8, and 4.4.x before 4.4.2 does not… Also affects ipa