21.04.2021

Уязвимость в подсистеме iSCSI ядра Linux, позволяющая поднять свои привилегии

В коде подсистемы iSCSI из состава ядра Linux выявлена уязвимость (CVE-2021-27365), позволяющая непривилегированному локальному пользователю выполнить код на уровне ядра и получить root-привилегии в системе. Для тестирования доступен рабочий прототип эксплоита. Уязвимость устранена в обновлениях ядра Linux 5.11.4, 5.10.21, 5.4.103, 4.19.179, 4.14.224, 4.9.260 и 4.4.260. Обновления пакетов с ядром доступны в дистрибутивах Debian, Ubuntu, SUSE/openSUSE, Arch Linux и Fedora. Для RHEL исправления пока не выпущены.

Проблема вызвана ошибкой в функции iscsi_host_get_param() из состава модуля libiscsi, внесённой ещё в 2006 году во время разработки подсистемы iSCSI. Из-за отсутствия должных проверок размера, некоторые строковые атрибуты iSCSI, такие как hostname или username, могут превышать значение PAGE_SIZE (4 КБ). Уязвимость может быть эксплуатирована через отправку непривилегированным пользователем Netlink-сообщений, устанавливающих атрибуты iSCSI в значения, превышающее PAGE_SIZE. При чтении данных атрибутов через sysfs или seqfs вызывается код, передающий атрибуты в функцию sprintf для копирования в буфер, размер которого равен PAGE_SIZE.

Эксплуатация уязвимости в дистрибутивах зависит от поддержки автоматической загрузки модуля ядра scsi_transport_iscsi при попытке создания сокета NETLINK_ISCSI. В дистрибутивах, в которых данный модуль загружается автоматически, атака может быть совершена независимо от использования функциональности iSCSI. При этом для успешного применения эксплоита дополнительно требуется регистрация как минимум одного транспорта iSCSI. В свою очередь, для регистрации транспорта можно использовать модуль ядра ib_iser, загружаемый автоматически при попытке создания непривилегированным пользователем сокета NETLINK_RDMA.

Автоматическая загрузка необходимых для применения эксплоита модулей поддерживается в CentOS 8, RHEL 8 и Fedora при установке в системе пакета rdma-core, который является зависимостью для некоторых популярных пакетов и по умолчанию устанавливается в конфигурациях для рабочих станций, серверных систем с GUI и хост-окружений виртуализации. При этом rdma-core не устанавливается при использовании серверной сборки, работающей только в консольном режиме, и при установке минимального инсталляционного образа. Например, пакет входит в базовую поставку Fedora 31 Workstation, но не включён в Fedora 31 Server. Debian и Ubuntu менее подвержены проблеме, так как пакет rdma-core загружает необходимые для атаки модули ядра только при наличии оборудования RDMA.

В качестве обходного пути защиты можно запретить автоматическую загрузку модуля libiscsi:

 echo "install libiscsi /bin/true" >> /etc/modprobe.d/disable-libiscsi.conf

Дополнительно, в подсистеме iSCSI устранены ещё две менее опасные уязвимости, которые могут привести к утечке данных из ядра: CVE-2021-27363 (утечка сведений о дескрипторе транспорта iSCSI через sysfs) и CVE-2021-27364 (чтение из области вне границ буфера). Указанные уязвимости могут использоваться для взаимодействия через netlink-сокет с подсистемой iSCSI без наличия необходимых привилегий. Например, непривилегированный пользователь может подключиться к iSCSI и отпрвить команду «end a session» для обрыва сеанса.

Источник.