CVE-2025-4404

9.1 CRITICAL

📋 TL;DR

This CVE describes a privilege escalation vulnerability in FreeIPA where attackers can create services with the same canonical name as the realm admin account. This allows them to obtain Kerberos tickets with admin credentials and perform administrative tasks over the entire realm. Organizations using FreeIPA for identity management are affected.

💻 Affected Systems

Products:
  • FreeIPA
Versions: Specific versions not provided in CVE description; check Red Hat advisories for affected versions
Operating Systems: Linux distributions with FreeIPA packages
Default Config Vulnerable: ⚠️ Yes
Notes: Affects default FreeIPA configurations where krbCanonicalName uniqueness validation is not enforced.

⚠️ Manual Verification Required

This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.

Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).

🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.

Recommended Actions:
  1. Review the CVE details at NVD
  2. Check vendor security advisories for your specific version
  3. Test if the vulnerability is exploitable in your environment
  4. Consider updating to the latest version as a precaution

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete compromise of the FreeIPA realm, allowing attackers to exfiltrate all sensitive identity data, modify user permissions, create backdoor accounts, and potentially pivot to other systems integrated with FreeIPA.

🟠

Likely Case

Attackers gain administrative access to the FreeIPA realm, enabling them to modify user accounts, access sensitive directory information, and potentially compromise integrated services.

🟢

If Mitigated

Limited impact with proper network segmentation, monitoring, and least privilege principles in place, though the vulnerability still presents significant risk.

🌐 Internet-Facing: MEDIUM - FreeIPA servers are typically internal but may be exposed via VPN or specific access methods.
🏢 Internal Only: HIGH - This is primarily an internal threat where authenticated users can escalate privileges within the FreeIPA environment.

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: MEDIUM

Requires authenticated access to FreeIPA and knowledge of Kerberos administration. Attack involves creating services with specific naming conventions.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Check specific Red Hat advisories (RHSA-2025:9184 through RHSA-2025:9188)

Vendor Advisory: https://access.redhat.com/errata/RHSA-2025:9184

Restart Required: Yes

Instructions:

1. Check your FreeIPA version. 2. Apply the appropriate Red Hat security update for your system. 3. Restart FreeIPA services. 4. Verify the fix is applied.

🔧 Temporary Workarounds

Enforce krbCanonicalName uniqueness

linux

Manually configure FreeIPA to validate uniqueness of krbCanonicalName attributes

ipa config-mod --enforcekrbcanonicalname=TRUE

🧯 If You Can't Patch

  • Implement strict access controls to limit who can create service principals
  • Increase monitoring of service principal creation and Kerberos ticket requests

🔍 How to Verify

Check if Vulnerable:

Check if enforcekrbcanonicalname is set to FALSE: ipa config-show | grep enforcekrbcanonicalname

Check Version:

ipa --version

Verify Fix Applied:

Verify enforcekrbcanonicalname is set to TRUE and check FreeIPA version against patched versions in Red Hat advisories

📡 Detection & Monitoring

Log Indicators:

  • Unusual service principal creation events
  • Multiple service principals with similar canonical names
  • Kerberos ticket requests for admin-equivalent services

Network Indicators:

  • Unusual Kerberos ticket granting service (TGS) requests
  • Authentication attempts using newly created service principals

SIEM Query:

source="freeipa" AND (event_type="service_add" OR event_type="krb_ticket") | search canonical_name="*admin*"

🔗 References

📤 Share & Export