Inspektor Gadget — это набор инструментов и платформы для сбора данных и проверки системы в кластерах Kubernetes и хостах Linux с использованием eBPF. До версии 0.50.1 в ситуации, когда кольцевой буфер гаджета (случайно или намеренно) уже заполнен, гаджет автоматически отбрасывал события. Файл include/gadget/buffer.h содержит определения API-интерфейса Buffer, который гаджеты могут использовать, помимо прочего, для передачи данных из программ eBPF в пространство пользователя.
Для хостов с достаточно современным ядром Linux (>= 5.8) этот механизм передачи основан на кольцевых буферах. Размер кольцевого буфера для гаджетов жестко запрограммирован — 256 КБ. Если gegget_reserve_buf выходит из строя из-за нехватки места, гаджет автоматически очищается, не выдавая оповещения.
Счетчик потерь, сообщаемый оператором eBPF, при использовании кольцевых буферов (современный выбор) жестко запрограммирован на ноль. Уязвимость может быть использована вредоносным источником событий (например, скомпрометированным контейнером) для вызова отказа в обслуживании, заставляя систему отбрасывать события, поступающие из других контейнеров (или того же контейнера). Эта уязвимость исправлена в версии 0.50.1.
Показать оригинальное описание (EN)
Inspektor Gadget is a set of tools and framework for data collection and system inspection on Kubernetes clusters and Linux hosts using eBPF. Prior to 0.50.1, in a situation where the ring-buffer of a gadget is – incidentally or maliciously – already full, the gadget will silently drop events. The include/gadget/buffer.h file contains definitions for the Buffer API that gadgets can use to, among the other things, transfer data from eBPF programs to userspace. For hosts running a modern enough Linux kernel (>= 5.8), this transfer mechanism is based on ring-buffers. The size of the ring-buffer for the gadgets is hard-coded to 256KB. When a gadget_reserve_buf fails because of insufficient space, the gadget silently cleans up without producing an alert. The lost count reported by the eBPF operator, when using ring-buffers – the modern choice – is hardcoded to zero. The vulnerability can be used by a malicious event source (e.g. a compromised container) to cause a Denial Of Service, forcing the system to drop events coming from other containers (or the same container). This vulnerability is fixed in 0.50.1.
Характеристики атаки
Последствия
Строка CVSS v4.0