The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Уязвимость в ntfs-3g, позволяющая поднять свои привилегии в системе

02.02.2017 10:26

В ntfs-3g, драйвере для файловой системы NTFS, выявлена уязвимость (CVE-2017-0358), позволяющая загрузить произвольный модуль в ядро Linux и добиться выполнения своего кода с правами root. Проблема проявляется только при установке утилиты монтирования ntfs-3g с флагом suid root, что практикуется в Debian, Ubuntu 16.04/16.10 и Gentoo. Ubuntu 14.04, RHEL, SUSE и ALT Linux проблеме не подвержены. Исправления уже выпущены для Ubuntu, Debian и Gentoo.

Уязвимость вызвана тем, что ntfs-3g не производит очистку переменных окружения перед запуском утилиты modprobe. Локальный атакующий может воспользоваться переменной окружения MODPROBE_OPTIONS для переопределения значений опций "--config" и "--dirname", что приведёт к загрузке своего модуля ядра, вместо загружаемого утилитой ntfs-3g модуля fuse. Отмечается, что проблема присутствовала в коде как минимум с 2008 года.

  1. Главная ссылка к новости (http://www.openwall.com/lists/...)
  2. OpenNews: Стабильный релиз NTFS-3G и ntfsprogs 2016.2.22
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/45962-ntfs-3g
Ключевые слова: ntfs-3g
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (22) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Аноним (-), 10:37, 02/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    SUID? Но на что? Это fuse-модуль, а не исполняемый файл!
     
     
  • 2.7, Аноним (-), 11:34, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > SUID? Но на что? Это fuse-модуль, а не исполняемый файл!

    Suid ставят на утилиту для монтирования.

     
  • 2.22, rm_ (ok), 15:56, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > не исполняемый файл

    КИСО КУКУ

    # 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 on

    Copyright (C) 2005-2007 Yura Pakhuchiy
    Copyright (C) 2006-2009 Szabolcs Szakacsits
    Copyright (C) 2007-2014 Jean-Pierre Andre
    Copyright (C) 2009 Erik Larsson

    Usage:    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

     

  • 1.3, Аноним (-), 10:55, 02/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    > ... и ожидаются для 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 - ССЗБ

    [сообщение отредактировано модератором]

     
     
  • 2.4, Я. Р. Ош (?), 11:05, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Кроме того что значит "ожидаются"?

    Для тех, кто 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

     
     
  • 3.15, Andrey Mitrofanov (?), 13:59, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Очень тонко, не все поняли кого вы троллите.

    https://www.opennet.ru/openforum/vsluhforumID3/110290.html#134 Да, всё с вами всеми понятно уже давно. Просто и незателиво, не льсти себе.

     
  • 2.25, Michael Shigorin (ok), 16:25, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • –4 +/
    >> Ubuntu 14.04, RHEL и SUSE проблеме не подвержены
    > В Альте тоже все в порядке. Допишите пожалуйста.

    Если что, новость была предложена сотрудником альта, сидящим за спиной участника команды безопасности альта (которого и попросил переслать ссылочку на то, что он озвучил).

    Но раз так настаиваете -- предложил правку, ладно.

     

  • 1.10, Томичанин (?), 12:19, 02/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    А что во FreeBSD ?
     
     
  • 2.11, пох (?), 12:46, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > А что во FreeBSD ?

    а во фрибеэсде у kldload нет никаких невидимых в командной строке нужных и полезных целому одному человеку на весь мир, и то давно забывшему зачем, параметров окружения.

    Собственно, вся уязвимость именно в очередном "ненужно" в линуксной modprobe, о котором теперь надо заботиться любому коду, который вынужден ее вызывать (exec'ом, потому что кернельный интерфейс в 2002м году сломали). Вероятно, желающим все делать правильно и не считаясь с затратами, стоит попатчить modprobe, удалив оттуда этот и прочий лишний код - благо, это несложно. Я не могу придумать никакого адекватного сценария, когда эти переменные нужны.

     
     
  • 3.16, Аноним (-), 14:40, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >> А что во FreeBSD ?
    > а во фрибеэсде у kldload нет никаких невидимых в командной строке нужных
    > и полезных тем, кто сидит в ней через пуссиэкзе, параметров окружения.

    fix.
    см. куцый
    https://www.freebsd.org/cgi/man.cgi?kldload(8)
    vs. могучий
    https://linux.die.net/man/8/modprobe

     
     
  • 4.23, . (?), 16:03, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > см. куцый
    > https://www.freebsd.org/cgi/man.cgi?kldload(8)
    > vs. могучий
    > https://linux.die.net/man/8/modprobe

    ну вообще-то точным аналогом является не modprobe, а insmod, который существенно более туп чем kldload (ровно с тех пор как функционал унесли из него в само ядро), но с точки зрения ntfs3g оно именно так. Ну вот и здравствуй, дыра. А зачем нам эта могучесть - ну хз.


     
  • 3.27, Michael Shigorin (ok), 16:34, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Собственно, вся уязвимость именно в очередном "ненужно" в линуксной modprobe, о котором
    > теперь надо заботиться любому коду, который вынужден ее вызывать (exec'ом, потому
    > что кернельный интерфейс в 2002м году сломали).

    А libkmod не?

     
     
  • 4.32, пох (?), 20:14, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > А libkmod не?

    и получаем зависимость системонезависимой fuse от линуксспецифичного интерфейса в виде optional либы. В которой тоже неизвестно что происходит, и что ей надо принудительно чистить, прежде чем рисковать пользоваться. Проще уж оставить как есть (я бы обвешал враппером)
    # locate libkmod
    #
    (это линукс, да. fuse установлена и используется)

    или речь об интерфейсе? Не, libkmod это просто modprobe/modinfo в виде .so, внтри там ровно то же, что и в монолитных. afaik, точно так же не умеет проверять результат (поскольку это глубоко в ядре, а не в modprobe)

     
     
  • 5.34, Michael Shigorin (ok), 22:41, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> А libkmod не?
    > и получаем зависимость системонезависимой fuse от линуксспецифичного интерфейса
    > в виде optional либы.

    Гм, разве #define ещё не изобрели?  Или modprobe(8) уже завезли на все целевые платформы?

    > # locate libkmod
    > #
    > (это линукс, да. fuse установлена и используется)

    ./configure: ну нету и нету :)

     
     
  • 6.40, пох (?), 17:37, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > Гм, разве #define ещё не изобрели?

    и получаем лишнюю проверку, которая еще и сломаться может

    > Или modprobe(8) уже завезли на все целевые платформы?

    какой-то эквивалент - завезли, и вот это да, эту мелочь (название, имена и порядок параметров, if any) допустимо хранить в #define

    > /configure: ну нету и нету :)

    и ты получаешь _два_ разных кода, каждый из которых может сломаться как одним и тем же способом (хрен вот его знает про libkmod, есть там привычка брать из окружения переменные, или нет - и не появится ли завтра еще какая) и двумя независимыми разными.
    Плюс еще пункт 1 - код для детектирования кода. И все это надо поддерживать.

    Лучше все же потратить эти усилия на что-то еще - порт на еще одну платформу, или оптимизацию для существующих - fuse хороший проект (ну или был, когда я последний раз туда заглядывал), они это действительно делают.


     
  • 2.33, Led (ok), 22:06, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > А что во FreeBSD ?

    Фрибсдишники пользуются нативным драйвером NTFS, системным, "от производителя".

     
     
  • 3.35, Гость (??), 12:22, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Может проще использовать Windows, а не изобретать велосипед заново?
     
     
  • 4.36, Michael Shigorin (ok), 12:35, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ровно на это Саша грубовато и намекает.

    А когда используемая платформа универсальна -- то нет, менять её на виндовс не проще.  И тем более не лучше.

     
  • 3.37, Аноним (-), 15:55, 03/02/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    >> А что во FreeBSD ?
    > Фрибсдишники пользуются нативным драйвером NTFS, системным, "от производителя".

    И поэтому на опеннете можно регулярно почитать новость об очередном дистре, портированном на вендовую подсистему для линукса.


     

  • 1.13, Аноним (-), 13:53, 02/02/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Андройд так рутовать можно?
     
     
  • 2.17, kpx2 (?), 14:58, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    кто ж тебе запретйт?
     
  • 2.24, . (?), 16:05, 02/02/2017 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Андройд так рутовать можно?

    можно, но нужен рут, чтобы разрешить эту фичу ;-)

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру