Executive brief
Inspektor Gadget is a container observability tool that uses eBPF probes to trace system calls and library functions in containers. An unprivileged container can craft a malicious ld.so.cache file that causes Inspektor Gadget to consume excessive CPU (~53 seconds) when attaching probes, which blocks other containers from starting on the same Docker host. No special container privileges are required—any container image can embed the crafted file or mount it via a volume.
Technical details
The vulnerability exists in Inspektor Gadget's ld.so.cache parser (pkg/uprobetracer/ldcache_parser.go and pkg/uprobetracer/bytes.go). Three chained issues enable the attack: (1) quadratic string concatenation in readStringFromBytes using Go's immutable strings (res += string(data[i])), causing O(n²) complexity; (2) insufficient validation of the EntryCount field read from the untrusted ld.so.cache, allowing loops over ~700,000 iterations; (3) integer overflow in cache1Len computation using uint32 arithmetic, leading to format misdetection. A malicious 16MB ld.so.cache with crafted strings triggers ~53 seconds of CPU burn. Since Inspektor Gadget uses fanotify hooks to pause container startup during uprobe attachment, this blocks the entire Docker runtime from starting new containers, creating a host-wide denial of service. The vulnerability affects all versions from 0.27.0 through 0.53.0; patch available in 0.53.1.
Affected products
- Inspektor Gadget Inspektor Gadget 0.27.0 to 0.53.0
Timeline
- 2026-08-19: advisory: GitHub Security Advisory GHSA-vjhx-2cqw-3q6q published
- 2026-06-16: patched: Fix released in version 0.53.1