В ntfs-3g (http://www.tuxera.com/community/open-source-ntfs-3g/), FUSE-драйвере для файловой системы NTFS, выявлена (http://www.openwall.com/lists/oss-security/2017/02/01/8) уязвимость (CVE-2017-0358 (https://security-tracker.debian.org/tracker/CVE-2017-0358)), позволяющая загрузить произвольный модуль в ядро Linux и добиться выполнения своего кода с правами root. Проблема проявляется только при установке утилиты монтирования ntfs-3g с флагом suid root, что практикуется в Debian (https://security-tracker.debian.org/tracker/CVE-2017-0358), Ubuntu 16.04/16.10 (https://people.canonical.com/~ubuntu-security/cve/2017/CVE-2...) и Gentoo (https://bugs.gentoo.org/show_bug.cgi?id=CVE-2017-0358). Ubuntu 14.04, RHEL и SUSE проблеме не подвержены (https://bugzilla.novell.com/show_bug.cgi?id=CVE-2017-0358). Исправления уже выпущены для Ubuntu (https://www.ubuntu.com/usn/usn-3182-1/) и Debian (https://www.debian.org/security/2017/dsa-3780), и ожидаются (https://www.gentoo.org/support/security/) для Gentoo.
Уязвимость вызвана тем, что ntfs-3g не производит очистку переменных окружения перед запуском утилиты modprobe. Локальный атакующий может воспользоваться переменной окружения MODPROBE_OPTIONS для переопределения значений опций "--config" и "--dirname", что приведёт к загрузки своего модуля ядра, вместо загружаемого утилитой ntfs-3g модуля fuse. Отмечается, что проблема присутствовав в коде как минимум с 2008 года.
URL: http://www.openwall.com/lists/oss-security/2017/02/01/8
Новость: http://www.opennet.me/opennews/art.shtml?num=45962
SUID? Но на что? Это fuse-модуль, а не исполняемый файл!
> SUID? Но на что? Это fuse-модуль, а не исполняемый файл!Suid ставят на утилиту для монтирования.
> не исполняемый файлКИСО КУКУ
# ls -la /bin/ntfs-3g
-rwsr-xr-x 1 root root 146160 Jan 28 15:16 /bin/ntfs-3g# file /bin/ntfs-3g
/bin/ntfs-3g: setuid ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=63c08971279ce863ebaf8f0f4996b1675b4ba6be, stripped# /bin/ntfs-3g
ntfs-3g: No device is specified.ntfs-3g 2014.2.15AR.2 integrated FUSE 28 - Third Generation NTFS Driver
Configuration type 7, XATTRS are on, POSIX ACLS are onCopyright (C) 2005-2007 Yura Pakhuchiy
Copyright (C) 2006-2009 Szabolcs Szakacsits
Copyright (C) 2007-2014 Jean-Pierre Andre
Copyright (C) 2009 Erik LarssonUsage: ntfs-3g [-o option[,...]] <device|image_file> <mount_point>
Options: ro (read-only mount), windows_names, uid=, gid=,
umask=, fmask=, dmask=, streams_interface=.
Please see the details in the manual (type: man ntfs-3g).Example: ntfs-3g /dev/sda1 /mnt/windows
News, support and information: http://tuxera.com
> ... и ожидаются для Gentoo.ЛПиП
~ # stat `which ntfs-3g`
Файл: '/usr/bin/ntfs-3g'
Размер: 60688 Блоков: 120 Блок В/В: 4096 обычный файл
Устройство: fd01h/64769d Inode: 264574 Ссылки: 1
Доступ: (0755/-rwxr-xr-x) Uid: ( 0/ root) Gid: ( 0/ root)
Доступ: 2017-01-19 22:52:06.084430590 +0300
Модифицирован: 2017-01-19 22:52:06.084430590 +0300
Изменён: 2017-01-23 22:35:14.289537060 +0300
Создан: -
~ # eix -I ntfs
sys-fs/ntfs3g
Доступные версии: 2016.2.22-r1(0/87){tbz2} {acl debug +external-fuse ntfsdecrypt +ntfsprogs static-libs suid xattr}
Установленные версии: 2016.2.22-r1{tbz2}(22:52:05 19.01.2017)(acl external-fuse ntfsprogs xattr -debug -ntfsdecrypt -static-libs -suid)
Домашняя страница: http://www.tuxera.com/community/ntfs-3g-download/
Описание: Open source read-write NTFS driver that runs under FUSE
а кто включает у себя USE=suid - ССЗБ[сообщение отредактировано модератором]
Кроме того что значит "ожидаются"?Для тех, кто suid включил, к моменту написания новости уже давно было
sys-fs/ntfs3g: Revision bump to 2016.2.22-r2 to add patch for CVE-2017-0358
Patrick McLean, Thu, 2 Feb 2017 00:35, commit 63ab8f50
> Очень тонко, не все поняли кого вы троллите.http://www.opennet.me/openforum/vsluhforumID3/110290.html#134 Да, всё с вами всеми понятно уже давно. Просто и незателиво, не льсти себе.
>> Ubuntu 14.04, RHEL и SUSE проблеме не подвержены
> В Альте тоже все в порядке. Допишите пожалуйста.Если что, новость была предложена сотрудником альта, сидящим за спиной участника команды безопасности альта (которого и попросил переслать ссылочку на то, что он озвучил).
Но раз так настаиваете -- предложил правку, ладно.
А что во FreeBSD ?
> А что во FreeBSD ?а во фрибеэсде у kldload нет никаких невидимых в командной строке нужных и полезных целому одному человеку на весь мир, и то давно забывшему зачем, параметров окружения.
Собственно, вся уязвимость именно в очередном "ненужно" в линуксной modprobe, о котором теперь надо заботиться любому коду, который вынужден ее вызывать (exec'ом, потому что кернельный интерфейс в 2002м году сломали). Вероятно, желающим все делать правильно и не считаясь с затратами, стоит попатчить modprobe, удалив оттуда этот и прочий лишний код - благо, это несложно. Я не могу придумать никакого адекватного сценария, когда эти переменные нужны.
>> А что во FreeBSD ?
> а во фрибеэсде у kldload нет никаких невидимых в командной строке нужных
> и полезных тем, кто сидит в ней через пуссиэкзе, параметров окружения.fix.
см. куцый
https://www.freebsd.org/cgi/man.cgi?kldload(8)
vs. могучий
https://linux.die.net/man/8/modprobe
> см. куцый
> https://www.freebsd.org/cgi/man.cgi?kldload(8)
> vs. могучий
> https://linux.die.net/man/8/modprobeну вообще-то точным аналогом является не modprobe, а insmod, который существенно более туп чем kldload (ровно с тех пор как функционал унесли из него в само ядро), но с точки зрения ntfs3g оно именно так. Ну вот и здравствуй, дыра. А зачем нам эта могучесть - ну хз.
> Собственно, вся уязвимость именно в очередном "ненужно" в линуксной modprobe, о котором
> теперь надо заботиться любому коду, который вынужден ее вызывать (exec'ом, потому
> что кернельный интерфейс в 2002м году сломали).А libkmod не?
> А libkmod не?и получаем зависимость системонезависимой fuse от линуксспецифичного интерфейса в виде optional либы. В которой тоже неизвестно что происходит, и что ей надо принудительно чистить, прежде чем рисковать пользоваться. Проще уж оставить как есть (я бы обвешал враппером)
# locate libkmod
#
(это линукс, да. fuse установлена и используется)или речь об интерфейсе? Не, libkmod это просто modprobe/modinfo в виде .so, внтри там ровно то же, что и в монолитных. afaik, точно так же не умеет проверять результат (поскольку это глубоко в ядре, а не в modprobe)
>> А libkmod не?
> и получаем зависимость системонезависимой fuse от линуксспецифичного интерфейса
> в виде optional либы.Гм, разве #define ещё не изобрели? Или modprobe(8) уже завезли на все целевые платформы?
> # locate libkmod
> #
> (это линукс, да. fuse установлена и используется)./configure: ну нету и нету :)
> Гм, разве #define ещё не изобрели?и получаем лишнюю проверку, которая еще и сломаться может
> Или modprobe(8) уже завезли на все целевые платформы?
какой-то эквивалент - завезли, и вот это да, эту мелочь (название, имена и порядок параметров, if any) допустимо хранить в #define
> /configure: ну нету и нету :)
и ты получаешь _два_ разных кода, каждый из которых может сломаться как одним и тем же способом (хрен вот его знает про libkmod, есть там привычка брать из окружения переменные, или нет - и не появится ли завтра еще какая) и двумя независимыми разными.
Плюс еще пункт 1 - код для детектирования кода. И все это надо поддерживать.Лучше все же потратить эти усилия на что-то еще - порт на еще одну платформу, или оптимизацию для существующих - fuse хороший проект (ну или был, когда я последний раз туда заглядывал), они это действительно делают.
> А что во FreeBSD ?Фрибсдишники пользуются нативным драйвером NTFS, системным, "от производителя".
Может проще использовать Windows, а не изобретать велосипед заново?
Ровно на это Саша грубовато и намекает.А когда используемая платформа универсальна -- то нет, менять её на виндовс не проще. И тем более не лучше.
>> А что во FreeBSD ?
> Фрибсдишники пользуются нативным драйвером NTFS, системным, "от производителя".И поэтому на опеннете можно регулярно почитать новость об очередном дистре, портированном на вендовую подсистему для линукса.
Андройд так рутовать можно?
кто ж тебе запретйт?
> Андройд так рутовать можно?можно, но нужен рут, чтобы разрешить эту фичу ;-)