CVE-2025-4437

5.7 MEDIUM

📋 TL;DR

This CVE describes a denial-of-service vulnerability in CRI-O where launching a container with a non-existent runAsUser causes CRI-O to read the entire /etc/passwd file into memory. If /etc/passwd is excessively large, this leads to high memory consumption that can crash applications and disrupt other pods on the same host. This affects Kubernetes clusters using CRI-O as their container runtime.

💻 Affected Systems

Products:
  • CRI-O
Versions: Specific versions not specified in provided references, but check Red Hat advisory for affected versions
Operating Systems: Linux distributions using CRI-O
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability requires containers to be launched with securityContext.runAsUser specifying non-existent users and having large /etc/passwd files.

⚠️ 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

An attacker could craft containers with malicious /etc/passwd files to cause memory exhaustion, crashing CRI-O and disrupting all containers on the host, potentially affecting multiple services and pods.

🟠

Likely Case

Accidental or malicious creation of containers with large /etc/passwd files leads to memory pressure, causing individual container failures and potential pod evictions.

🟢

If Mitigated

With proper resource limits and monitoring, impact is limited to individual containers or pods rather than host-wide disruption.

🌐 Internet-Facing: MEDIUM - Requires ability to create containers, which typically requires cluster access, but could be exploited through compromised applications.
🏢 Internal Only: HIGH - Internal attackers with container creation privileges can easily exploit this to disrupt services on shared hosts.

🎯 Exploit Status

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

Exploitation requires ability to create containers with specific configurations and access to modify /etc/passwd within containers.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: Check Red Hat advisory for specific fixed versions

Vendor Advisory: https://access.redhat.com/security/cve/CVE-2025-4437

Restart Required: No

Instructions:

1. Check Red Hat advisory for affected versions. 2. Update CRI-O to patched version. 3. Verify no containers are using vulnerable configurations.

🔧 Temporary Workarounds

Prevent non-existent user creation

all

Configure pod security policies or admission controllers to reject containers specifying non-existent users in securityContext.runAsUser

Limit /etc/passwd size

all

Implement container image scanning to reject images with excessively large /etc/passwd files

🧯 If You Can't Patch

  • Implement strict pod security policies to prevent containers from specifying non-existent users
  • Monitor memory usage on nodes and set alerts for abnormal consumption patterns

🔍 How to Verify

Check if Vulnerable:

Check CRI-O version against Red Hat advisory and review container configurations for runAsUser settings with non-existent users

Check Version:

crio --version

Verify Fix Applied:

Verify CRI-O version is updated to patched version and test container creation with non-existent users to ensure no memory spikes

📡 Detection & Monitoring

Log Indicators:

  • CRI-O logs showing user creation attempts
  • Kernel OOM killer messages
  • Container runtime memory usage spikes

Network Indicators:

  • Unusual container creation patterns

SIEM Query:

source="crio" AND "runAsUser" AND "creating user" OR source="kernel" AND "Out of memory"

🔗 References

📤 Share & Export