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

Discussion in 'Мировые новости. Обсуждения.' started by Suicide, 15 Mar 2021.

  1. Suicide

    Suicide Super Moderator
    Staff Member

    Joined:
    24 Apr 2009
    Messages:
    2,373
    Likes Received:
    6,619
    Reputations:
    693
    В коде подсистемы 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 (oldstable), 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. Однако, в серверную поставку Ubuntu входит пакет open-iscsi, включающий файл /lib/modules-load.d/open-iscsi.conf, что обеспечивает автоматическую подгрузку модулей iSCSI при каждой загрузке.

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

    Code:
     echo "install libiscsi /bin/true" >> /etc/modprobe.d/disable-libiscsi.conf
    Дополнительно, в подсистеме iSCSI устранены ещё две менее опасные уязвимости, которые могут привести к утечке данных из ядра: CVE-2021-27363 (утечка сведений о дескрипторе транспорта iSCSI через sysfs) и CVE-2021-27364 (чтение из области вне границ буфера). Указанные уязвимости могут использоваться для взаимодействия через netlink-сокет с подсистемой iSCSI без наличия необходимых привилегий. Например, непривилегированный пользователь может подключиться к iSCSI и отправить команду завершения сеанса.

     
    seostock, Svan, erwerr2321 and 2 others like this.
  2. Svan

    Svan Well-Known Member

    Joined:
    24 Sep 2020
    Messages:
    68
    Likes Received:
    369
    Reputations:
    2
    Да Линус Торвальдс уже заколебался исправлять баги за этими энтузиастами, дайте ему отдохнуть!