CVE-2024-25621

7.3 HIGH

📋 TL;DR

Containerd versions before 1.7.29, 2.0.7, 2.1.5, and 2.2.0 create critical directories with overly permissive access controls, allowing group/world read/write access. This vulnerability enables local users or processes to read, modify, or delete container runtime data. All systems running vulnerable containerd versions are affected.

💻 Affected Systems

Products:
  • containerd
Versions: 0.1.0 through 1.7.28, 2.0.0-beta.0 through 2.0.6, 2.1.0-beta.0 through 2.1.4, 2.2.0-beta.0 through 2.2.0-rc.1
Operating Systems: Linux
Default Config Vulnerable: ⚠️ Yes
Notes: Affects default installations where containerd creates directories with incorrect permissions.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Privilege escalation to root via container escape, data exfiltration of sensitive container data, or denial of service by corrupting container runtime state.

🟠

Likely Case

Unauthorized access to container metadata, configuration files, or runtime artifacts by local users or compromised containers.

🟢

If Mitigated

Limited impact if proper access controls are enforced via workarounds or rootless mode.

🌐 Internet-Facing: LOW - This is a local privilege escalation vulnerability requiring local access to the host system.
🏢 Internal Only: HIGH - Any local user or compromised container on the host can potentially exploit this vulnerability.

🎯 Exploit Status

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

Exploitation requires local access to the host system but is straightforward once access is obtained.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.7.29, 2.0.7, 2.1.5, 2.2.0

Vendor Advisory: https://github.com/containerd/containerd/security/advisories/GHSA-pwhc-rpq9-4c8w

Restart Required: Yes

Instructions:

1. Stop all containers and container workloads. 2. Update containerd to patched version using package manager (apt-get update && apt-get install containerd.io or yum update containerd.io). 3. Restart containerd service (systemctl restart containerd). 4. Verify version and directory permissions.

🔧 Temporary Workarounds

Manual Permission Correction

linux

Manually set correct permissions on vulnerable directories to remove group/world access.

chmod 700 /var/lib/containerd
chmod 700 /run/containerd/io.containerd.grpc.v1.cri
chmod 700 /run/containerd/io.containerd.sandbox.controller.v1.shim

Rootless Mode

linux

Run containerd in rootless mode which isolates container runtime from host system.

Follow rootless documentation at https://github.com/containerd/containerd/blob/main/docs/rootless.md

🧯 If You Can't Patch

  • Implement strict access controls and monitoring on containerd directories.
  • Isolate containerd hosts and limit local user access to minimum necessary.

🔍 How to Verify

Check if Vulnerable:

Check directory permissions: ls -la /var/lib/containerd /run/containerd/io.containerd.grpc.v1.cri /run/containerd/io.containerd.sandbox.controller.v1.shim | grep '^d'

Check Version:

containerd --version

Verify Fix Applied:

Verify directories have 700 permissions (drwx------) and containerd version is patched.

📡 Detection & Monitoring

Log Indicators:

  • Unauthorized access attempts to containerd directories in audit logs
  • Permission changes on containerd directories

Network Indicators:

  • None - this is a local filesystem vulnerability

SIEM Query:

source="audit.log" AND (path="/var/lib/containerd/*" OR path="/run/containerd/*") AND (action="read" OR action="write" OR action="delete")

🔗 References

📤 Share & Export