CVE-2024-43853 in Linuxinformação

Sumário

de VulDB • 23/06/2026

No kernel do Linux, a seguinte vulnerabilidade foi corrigida:

cgroup/cpuset: Previna UAF em proc_cpuset_show()

Um UAF pode ocorrer quando /proc/cpuset é lido, conforme relatado em [1].

Isso pode ser reproduzido pelos seguintes métodos: 1. Adicionar um mdelay(1000) antes de adquirir o cgroup_lock na função cgroup_path_ns. 2. $cat /proc/<pid>/cpuset repetidamente. 3. $mount -t cgroup -o cpuset cpuset /sys/fs/cgroup/cpuset/ e depois $umount /sys/fs/cgroup/cpuset/ repetidamente.

A condição de corrida que causa este bug pode ser demonstrada abaixo:

(umount) | (cat /proc/<pid>/cpuset) css_release | proc_cpuset_show css_release_work_fn | css = task_get_css(tsk, cpuset_cgrp_id); css_free_rwork_fn | cgroup_path_ns(css->cgroup, ...); cgroup_destroy_root | mutex_lock(&cgroup_mutex); rebind_subsystems | cgroup_free_root | | // cgrp foi liberado, UAF | cgroup_path_ns_locked(cgrp,..);

Quando o cpuset é inicializado, o nó raiz top_cpuset.css.cgrp apontará para &cgrp_dfl_root.cgrp. No cgroup v1, a operação de montagem aloca um cgroup_root e top_cpuset.css.cgrp passará a apontar para o &cgroup_root.cgrp alocado. Quando a operação de desmontagem é executada, top_cpuset.css.cgrp será reassociado a &cgrp_dfl_root.cgrp.

O problema é que, ao fazer a reassociação com cgrp_dfl_root, existem casos em que o cgroup_root alocado pela configuração da raiz para o cgroup v1 permanece em cache. Isso pode levar a um Use-After-Free (UAF) se ele for posteriormente liberado. Os subcgroups descendentes do cgroup v1 só podem ser liberados após o css ser liberado. No entanto, o css da raiz nunca será liberado, embora o cgroup_root deva ser liberado quando desmontado. Isso significa que obter uma referência ao css da raiz não garante que css.cgrp->root não seja liberado.

Corrija este problema usando rcu_read_lock em proc_cpuset_show(). Como cgroup_root é kfree_rcu após o commit d23b5c577715 ("cgroup: Torna as operações na lista raiz do cgroup seguras para RCU"), css->cgroup não será liberado durante a seção crítica. Para chamar cgroup_path_ns_locked, é necessário adquirir css_set_lock; portanto, é seguro substituir task_get_css por task_css.

[1] https://syzkaller.appspot.com/bug?extid=9b1ff7be974a403aa4cd

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

Responsável

Linux

Reservar

17/08/2024

Divulgação

17/08/2024

Moderação

aceite

Entrada

VDB-274921

CPE

pronto

EPSS

0.00223

KEV

não

Atividades

muito baixo

Fontes

Do you need the next level of professionalism?

Upgrade your account now!