Проанализирована root-уязвимость в ядре Linux

Проанализирована root-уязвимость в ядре Linux

Проанализирована root-уязвимость в ядре Linux

Раскрыты подробности эксплуатации уязвимости (CVE-2015-8660) в ядре Linux, позволяющей непривилегированному локальному пользователю получить права root. Уязвимость вызвана недоработкой в коде установки прав доступа в файловой системе OverlayFS, проявляющейся при использовании пространств имён для идентификаторов пользователей (user namespaces).

Суть проблемы в том, что пользователь может при помощи технологии "user namespaces" создать изолированное окружение со своим пользователем root и примонтировать в нём часть внешней ФС через OverlayFS. Из-за ошибки в OverlayFS при изменении прав доступа в изолированном окружении, изменения также остаются в связанной с OverlayFS директории для хранения изменений (например, директория для изменений может быть создана в tmpfs и остаётся доступна извне, также доступ к ФС изолированного окружения можно получить через /proc). Таким образом, в изолированном окружении можно создать исполняемый файл с флагом suid root и выполнить его вне изолированного окружения. Для тестирования подготовлен прототип эксплоита, пишет opennet.ru.

Вызвавшая уязвимость ошибка была устранена в ядре Linux в начале декабря и вошла в состав релиза ядра 4.4, но детальная информация об уязвимости обнародована только сейчас. Проблема проявляется начиная с ядра 3.18, поэтому не касается штатных ядер дистрибутивов RHEL/CentOS и Debian, нозатрагивает выпуски Ubuntu 15.10 и Fedora 23 и уже устранена в опубликованных несколько дней назад обновлениях пакетов с ядром.

Следует отметить, что так как многие старые подсистемы ядра написаны без оглядки на возможности User Namespace, не исключается наличие ещё не выявленных похожих уязвимостей. Например, кроме OverlayFS подобные проблемы найдены в ptrace (CVE-2015-8709). В качестве обходного пути защиты рекомендуется отключить поддержку User Namespace в ядре (CONFIG_USER_NS=n). Проверить включена ли поддержка User Namespace можно командой "ls /proc/self/ns|grep user". 

Firefox 148 первым внедрил встроенную защиту от XSS

Mozilla сделала важный шаг в борьбе с одной из самых живучих веб-уязвимостей — XSS (межсайтовый скриптинг). В Firefox 148 компания первой внедрила стандартизированный Sanitizer API, встроенный инструмент для очистки небезопасного HTML прямо на уровне браузера.

XSS десятилетиями остаётся в топе самых распространённых проблем веб-безопасности.

Суть проста: если сайт позволяет злоумышленнику вставить вредоносный HTML или JavaScript через пользовательский контент, атакующий может перехватывать действия пользователя, красть данные и управлять сессией до тех пор, пока уязвимость не будет закрыта. Несмотря на множество защитных механизмов, XSS стабильно держится в числе лидеров рейтингов вроде CWE-79.

Раньше разработчики полагались, например, на Content Security Policy (CSP), но её внедрение часто требовало серьёзной переработки архитектуры и постоянного контроля со стороны специалистов по безопасности. Для небольших проектов это оказывалось слишком сложно.

Sanitizer API призван упростить задачу. Он позволяет очищать небезопасный HTML перед тем, как вставлять его в DOM. Главная цель — заменить рискованное использование свойства innerHTML, которое «слепо» вставляет и исполняет всё, что ему передали.

Вместо этого предлагается метод setHTML(). Если злоумышленник попытается внедрить что-то вроде <img src=x onerror=alert(1)>, новый механизм автоматически удалит опасный атрибут onerror. В итоге пользователь увидит безопасный HTML без выполнения вредоносного кода.

По умолчанию API работает в безопасной конфигурации, но разработчики могут настраивать его под свои задачи — определять, какие теги и атрибуты разрешены, а какие нужно удалять. Для более строгого контроля Sanitizer API можно использовать вместе с Trusted Types, что позволит централизованно управлять вставкой HTML и блокировать небезопасные методы.

Появление Sanitizer API в Firefox 148 фактически открывает новую главу в браузерной защите от XSS. Ожидается, что другие крупные браузеры тоже внедрят этот стандарт.

Если setHTML() действительно начнёт массово вытеснять innerHTML, у разработчиков наконец появится простой и встроенный инструмент против одной из самых старых и упорных уязвимостей интернета.

RSS: Новости на портале Anti-Malware.ru