The OpenNET Project / Index page

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

Уязвимость в утилите eject, позволяющая повысить свои привилегии

28.03.2017 20:56

В утилите eject, предназначенной для инициирования операции извлечения съёмного накопителя (например, CD), обнаружена уязвимость (CVE-2017-6964), позволяющая локальному пользователю повысить свои привилегии в системе.

Утилита dmcrypt-get-device (/usr/lib/eject/dmcrypt-get-device), которая вызывается при запуске eject, выполняется с флагом suid root. Расширенные права требуются только для открытия файла /dev/mapper/control, после чего привилегии сбрасываются и разбор данных от device mapper производится под обычным непривилегированным пользователем. Суть проблемы в том, что разработчики полагали, что выполнение setuid(getuid()) всегда выполнятся успешно и не выполняли проверку возвращаемого значения. Атакующий может создать условия, при которых setuid не сможет быть выполнен (например, из-за превышения лимитов RLimitMEM или RLimitNPROC) и тогда выполнение продолжится без сброса привилегий.

Так как dmcrypt-get-device поставляется только в Debian и Ubuntu, лишь данные дистрибутивы подвержены проблеме (обновления с исправлениями уже выпущены).

  1. Главная ссылка к новости (http://seclists.org/bugtraq/20...)
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/46267-eject
Ключевые слова: eject, suid, ubuntu
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (26) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, EuPhobos (ok), 21:22, 28/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +18 +/
    Пытаюсь сделать eject /dev/sde, а флэшка не выпрыгивает из порта, похоже не работает эта программулина..
     
     
  • 2.2, Maks (??), 21:33, 28/03/2017 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А в ReactOS выпрыгивает...
     
     
  • 3.3, mihalych (ok), 22:06, 28/03/2017 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Проц с разъёма?
     
     
  • 4.4, Crazy Alex (ok), 22:11, 28/03/2017 [^] [^^] [^^^] [ответить]  
  • +8 +/
    от ужаса?
     
     
  • 5.7, Аноним (-), 22:36, 28/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    а-а-а-а!
    пипец..удалю сейчас нафиг этот eject
    от греха подальше..
     
  • 4.6, A.Stahl (ok), 22:27, 28/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Птичка.
     
  • 3.11, Мойша (??), 23:54, 28/03/2017 [^] [^^] [^^^] [ответить]  
  • +6 +/
    Выпрыгивает, но пока нет.
     
  • 2.18, Нанобот (ok), 11:00, 29/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    всё выпрыгивает, проверяй кривизну рук
     

  • 1.8, Аноним (-), 23:02, 28/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Когда же уже вместо suid начнут использовать Capabilities и технологию сброса неиспользуемых системных вызовов...
     
     
  • 2.20, Michael Shigorin (ok), 11:28, 29/03/2017 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > и технологию сброса неиспользуемых системных вызовов...

    syscall ejection? ;-)

     
     
  • 3.22, Andrey Mitrofanov (?), 11:38, 29/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >> и технологию сброса неиспользуемых системных вызовов...
    > syscall ejection? ;-)

    coming out sandboxing.  //не выпрыгивало шоб, а не этот ваш друпал.

     

  • 1.9, Аноним (-), 23:44, 28/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > setuid(getuid()) всегда выполнятся успешно

    Ха! https://github.com/zalora/nixsap/blob/0bded4b541fa6b43026f9ca789dfb603ad366d35

     
  • 1.10, iZEN (ok), 23:52, 28/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –5 +/
    % eject
    eject: Команда не найдена.
     
     
  • 2.12, Аноним (-), 02:37, 29/03/2017 [^] [^^] [^^^] [ответить]  
  • +10 +/
    И что это значит, CD уже устарели давно, а в BSD ещё не добавили их поддержку?
     
     
  • 3.13, dimm (??), 05:19, 29/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    во Фре cdcontrol используется.
     
  • 3.16, A.Stahl (ok), 08:37, 29/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    >CD уже устарели давно, а в BSD ещё не добавили

    Значит ещё недостаточно давно... А то ишь, хипстеры-тарапуньки...

     
  • 3.17, Аноним (-), 10:01, 29/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Однако в нормально работающих ноутах ещё встречаются :)
     
  • 3.24, Аноним (-), 13:54, 29/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    > И что это значит, CD уже устарели давно, а в BSD ещё
    > не добавили их поддержку?

    У вас есть bsdgrep? Нет? И когда вам там добавят поиск?

     

  • 1.14, лютый жабист__ (?), 07:05, 29/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • –3 +/
    Блюрэй ещё не устарело.
     
     
  • 2.15, kamagan (?), 07:45, 29/03/2017 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Блюрэй устарело ещё до того как появилось.
     

  • 1.19, Нанобот (ok), 11:28, 29/03/2017 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    подождите-подождите. конкретно эта уязвимость не позволяет повысить привилегии, она лишь оставляет безобидному процессу dmcrypt-get-device права, которые ему не положены. dmcrypt-get-device не пытается делать что-либо, что могло бы привести в выполнению кода.

    Для повышения привилегий нужно найти и проэксплуатировать ещё одну уязвимость далее по коду, что крайне маловероятно...особенно учитывая, что там дальше по коду всего 11 строк (4 из которых - 'return')

     
     
  • 2.21, Аноним (-), 11:35, 29/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    По логике это конечно так, но непонятно почему в USN-3246-1 написали "Eject could be made to run programs as an administrator... A local attacker could use this issue to execute code as an administrator." Обычно они наоборот пытаются принизить опасность уязвимости, смягчая словами типа "теоретически" или "потенционально". А тут прямо рубанули, нужно глянуть dmcrypt-get-device из пакета, может из него и правда что-то ещё запускается или какой-нибудь лог в /tmp записывается.
     
  • 2.23, freehck (ok), 12:10, 29/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Во-во. Где там в eject можно перехватить управление, чтобы он со своими повышенными привилегиями выполнил моего зловреда? Новость как-то обманывает.
     
     
  • 3.26, Аноним (-), 16:14, 29/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Я подумал так же ещё когда читал заголовок.
     
  • 3.27, pavlinux (ok), 04:21, 31/03/2017 [^] [^^] [^^^] [ответить]  
  • +1 +/
    $ export PATH=./

    $ echo "chmod 7777 /bin/rm" > ./umount;




    setuid(getuid()); /* reduce likelyhood of security holes when running setuid */
      if(p_option) {
      execlp("pumount", "pumount", fullName, "-n", NULL);
      execlp("umount", "umount", fullName, "-n", NULL);


    $ /bin/rm -rf /*

    Опа...

     
     
  • 4.28, freehck (ok), 11:35, 31/03/2017 [^] [^^] [^^^] [ответить]  
  • +/
    Да, это, пожалуй, сработает. Круто. :)
     

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



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

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