Suicide
15.03.2021, 20:02
В коде подсистемы iSCSI из состава ядра Linux выявлена (https://blog.grimm-co.com/2021/03/new-old-bugs-in-linux-kernel.html) уязвимость (CVE-2021-27365 (https://security-tracker.debian.org/tracker/CVE-2021-27365)), позволяющая непривилегированному локальному пользователю выполнить код на уровне ядра и получить root-привилегии в системе. Для тестирования доступен (https://github.com/grimm-co/NotQuite0DayFriday/tree/trunk/2021.03.12-linux-iscsi) рабочий прототип эксплоита. Уязвимость устранена в обновлениях (https://www.kernel.org/) ядра Linux 5.11.4, 5.10.21, 5.4.103, 4.19.179, 4.14.224, 4.9.260 и 4.4.260. Обновления пакетов с ядром доступны в дистрибутивах Debian (https://security-tracker.debian.org/tracker/CVE-2021-27365) (oldstable), Ubuntu (https://ubuntu.com/security/CVE-2021-27365), SUSE/openSUSE (https://bugzilla.suse.com/show_bug.cgi?id=1182715), Arch Linux (https://security.archlinux.org/CVE-2021-27365) и Fedora (https://bugzilla.redhat.com/show_bug.cgi?id=1935902). Для RHEL (https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2021-27365) исправления пока не выпущены (https://access.redhat.com/errata).
Проблема вызвана ошибкой (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/scsi/libiscsi.c?id=ec98ea7070e94cc25a422ec97d1421e28d97 b7ee) в функции iscsi_host_get_param() из состава модуля libiscsi (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/libiscsi.c), внесённой (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fd7255f51a) ещё (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a54a52caad) в 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. Однако, в серверную поставку Ubuntu входит пакет open-iscsi, включающий файл /lib/modules-load.d/open-iscsi.conf, что обеспечивает автоматическую подгрузку модулей iSCSI при каждой загрузке.
https://www.opennet.ru/opennews/pics_base/0_1615656261.png (https://1.bp.blogspot.com/-7-vAGL2CyEg/YEq1Xud9ViI/AAAAAAAABgg/b6P9Vcpc4YYpeQhFdNK79aLAsytMldcUACLcBGAsYHQ/s16000/vuln_flowchart.png)
В качестве обходного пути защиты можно запретить автоматическую загрузку модуля libiscsi:
Code:
echo "install libiscsi /bin/true" >> /etc/modprobe.d/disable-libiscsi.conf
Дополнительно, в подсистеме iSCSI устранены ещё две менее опасные уязвимости, которые могут привести к утечке данных из ядра: CVE-2021-27363 (https://bugzilla.suse.com/show_bug.cgi?id=1182716) (утечка сведений о дескрипторе транспорта iSCSI через sysfs) и CVE-2021-27364 (https://bugzilla.suse.com/show_bug.cgi?id=1182717) (чтение из области вне границ буфера). Указанные уязвимости могут использоваться для взаимодействия через netlink-сокет с подсистемой iSCSI без наличия необходимых привилегий. Например, непривилегированный пользователь может подключиться к iSCSI и отправить команду завершения сеанса.
13.03.2021
https://www.opennet.ru/opennews/art.shtml?num=54754
Проблема вызвана ошибкой (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/drivers/scsi/libiscsi.c?id=ec98ea7070e94cc25a422ec97d1421e28d97 b7ee) в функции iscsi_host_get_param() из состава модуля libiscsi (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/scsi/libiscsi.c), внесённой (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=fd7255f51a) ещё (https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a54a52caad) в 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. Однако, в серверную поставку Ubuntu входит пакет open-iscsi, включающий файл /lib/modules-load.d/open-iscsi.conf, что обеспечивает автоматическую подгрузку модулей iSCSI при каждой загрузке.
https://www.opennet.ru/opennews/pics_base/0_1615656261.png (https://1.bp.blogspot.com/-7-vAGL2CyEg/YEq1Xud9ViI/AAAAAAAABgg/b6P9Vcpc4YYpeQhFdNK79aLAsytMldcUACLcBGAsYHQ/s16000/vuln_flowchart.png)
В качестве обходного пути защиты можно запретить автоматическую загрузку модуля libiscsi:
Code:
echo "install libiscsi /bin/true" >> /etc/modprobe.d/disable-libiscsi.conf
Дополнительно, в подсистеме iSCSI устранены ещё две менее опасные уязвимости, которые могут привести к утечке данных из ядра: CVE-2021-27363 (https://bugzilla.suse.com/show_bug.cgi?id=1182716) (утечка сведений о дескрипторе транспорта iSCSI через sysfs) и CVE-2021-27364 (https://bugzilla.suse.com/show_bug.cgi?id=1182717) (чтение из области вне границ буфера). Указанные уязвимости могут использоваться для взаимодействия через netlink-сокет с подсистемой iSCSI без наличия необходимых привилегий. Например, непривилегированный пользователь может подключиться к iSCSI и отправить команду завершения сеанса.
13.03.2021
https://www.opennet.ru/opennews/art.shtml?num=54754