
Технический анализ CVE-2021-3493, уязвимости локального повышения привилегий в Ubuntu OverlayFS, включая объяснение первопричины и затронутые версии.
Кратко
Узнайте, как уязвимость в OverlayFS позволяет локальным пользователям Ubuntu получить привилегии root.
Сводка уязвимости
Проблема, специфичная для Ubuntu, в файловой системе overlayfs ядра Linux, где она не проверяла должным образом применение возможностей файловой системы в отношении пространств имён пользователей. Локальный злоумышленник мог использовать это для получения повышенных привилегий из-за исправления, внесённого в Ubuntu для разрешения непривилегированных монтирований overlayfs.
CVE-2021-3493
Автор
Независимый исследователь безопасности сообщил об этой уязвимости в программу SSD Secure Disclosure.
Затронутые версии
Ubuntu 20.10
Ubuntu 20.04 LTS
Ubuntu 18.04 LTS
Ubuntu 16.04 LTS
Ubuntu 14.04 ESM
Ответ поставщика
«Мы опубликовали сегодня уведомления о безопасности по этой проблеме:
https://ubuntu.com/security/notices/USN-4915-1 https://ubuntu.com/security/notices/USN-4916-1 https://ubuntu.com/security/notices/USN-4917-1
а также сделали проблему публичной в нашем трекере CVE:
https://ubuntu.com/security/CVE-2021-3493
Ниже приводится содержание сообщения, отправленного в список рассылки oss-security: https://www.openwall.com/lists/oss-security/2021/04/16/1
Анализ уязвимости
Linux поддерживает возможности файлов, хранящиеся в расширенных атрибутах файлов, которые работают аналогично биту setuid, но могут быть более детализированными. Упрощённая процедура установки возможностей файлов в псевдокоде выглядит так: setxattr(...): if cap_convert_nscap(...) is not OK: then fail vfs_setxattr(...)
Важным вызовом является cap_convert_nscap, который проверяет разрешения в отношении пространств имён.
Если мы устанавливаем возможности файлов из собственного пространства имён и на собственный монтируемый том, проблем нет, и у нас есть на это разрешение. Проблема в том, что когда OverlayFS перенаправляет эту операцию базовой файловой системе, он вызывает только vfs_setxattr и пропускает проверки в cap_convert_nscap.
Это позволяет устанавливать произвольные возможности для файлов во внешнем пространстве имён/монтировании, где они также будут применяться во время выполнения.
В Linux 5.11 вызов cap_convert_nscap был перемещён в vfs_setxattr, поэтому он больше не уязвим.