Ранливост во потсистемот eBPF што овозможува извршување на код на ниво на кернелот Линукс

Идентификувана е ранливост (CVE-2021-4204) во потсистемот eBPF, кој ви овозможува да извршувате ракувачи во кернелот на Linux во специјална виртуелна машина со JIT, дозволувајќи му на локалниот непривилегиран корисник да постигне зголемување на привилегијата и да го изврши својот код на Ниво на кернелот на Линукс. Проблемот се појавува уште од кернелот 5.8 на Линукс и останува непоправен (вклучувајќи го и изданието 5.16). Статусот на ажурирањата што се генерираат за да се реши проблемот во дистрибуциите може да се следи на овие страници: Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Најавено е дека е создаден работен експлоат, кој се планира да биде објавен на 18 јануари (на корисниците и програмерите им е дадена една недела да ја поправат ранливоста).

Ранливоста е предизвикана од неправилна верификација на програмите eBPF пренесени за извршување. Подсистемот eBPF обезбедува помошни функции, чија правилна употреба се потврдува со специјален проверувач. Некои функции бараат пренесување на PTR_TO_MEM вредност како аргумент и за да се спречат можните прелевања на баферот, проверувачот мора да ја знае големината на меморијата поврзана со аргументот. За функциите bpf_ringbuf_submit и bpf_ringbuf_discard, податоците за големината на пренесената меморија не беа пријавени до верификаторот, што може да се користи за презапишување мемориски области надвор од границата на баферот при извршување на специјално дизајниран eBPF код.

За да изврши напад, корисникот мора да може да ја вчита сопствената програма BPF, а многу неодамнешни дистрибуции на Linux стандардно ја блокираат оваа способност (вклучувајќи го и непривилегираниот пристап до eBPF сега стандардно е забранет во самиот кернел, почнувајќи од изданието 5.16). На пример, ранливоста може да се искористи во стандардната конфигурација во Ubuntu 20.04 LTS, но во околините Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 и Fedora 33 се појавува само ако го поставил администраторот параметарот kernel.unprivileged_bpf_disabled до 0. Како решение за блокирање на ранливоста, можете да спречите извршување на BPF програми од непривилегирани корисници со наредбата „sysctl -w kernel.unprivileged_bpf_disabled=1“.

Извор: opennet.ru

Додадете коментар