The OpenNET Project / Index page

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

При портировании во FreeBSD утилиты doas, аналога sudo от OpenBSD, возникла опасная уязвимость

24.06.2016 21:55

В дерево портов FreeBSD добавлена утилита doas, представляющая собой упрощённый аналог программы sudo, позволяющий выполнять команды от имени другого пользователя. Утилита развивается в недрах проекта OpenBSD в ответ на усложнение современных выпусков sudo, которые не отвечают требованиям OpenBSD по безопасности и зависимостям.

Портирование не обошлось без казуса - спустя несколько часов после публикации, в варианте утилиты doas для FreeBSD была обнаружена критическая уязвимость, позволяющая выполнить привилегированные операции, даже если был указан неверный пароль пользователя. Т.е. любой пользователь, указанный в секции "permit" в файле doas.conf может выполнить любые допустимые команды, указав любые символы в ответ на запрос пароля. Проблема была внесена разработчиком порта при добавлении поддержки PAM и вызвана ошибкой в коде обработки отрицательного результата проверки пароля через PAM (при ошибке программа не завершала свою работу).

  1. Главная ссылка к новости (https://www.reddit.com/r/freeb...)
  2. OpenNews: В дерево исходных текстов OpenBSD принят код замены sudo
  3. OpenNews: В день двадцатилетия проекта доступен релиз OpenBSD 5.8
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/44663-doas
Ключевые слова: doas, sudo
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (41) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, G.NercY.uR (?), 22:32, 24/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Бывает. Строк кода много, разрабов мало, тех кто смотрит этот код ещё меньше.
    А добавили проблему я так понимаю этим коммитом:
    https://github.com/slicer69/doas/commit/d55af6cdf4267e6e1cfb43b408d893b52c763c
     
     
  • 2.16, Kodir (ok), 00:46, 25/06/2016 [^] [^^] [^^^] [ответить]  
  • –11 +/
    > (void) strlcpy(cmdline, argv[0], sizeof(cmdline));
    > char *challenge = NULL, *response, rbuf[1024], cbuf[128];

    * facepalm.avi 10GB *

    Шёл 21 век. В мире FOSS все знали про языки с GC, но сказать вслух плохое про святую сипиписю никто не отваживался и мыши продолжали жрать кактус и писать фиксед буфера с копированием строк уровня CPU.
    капец....

     
  • 2.20, Michael Shigorin (ok), 12:05, 25/06/2016 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Бывает. Строк кода много, разрабов мало, тех кто смотрит этот код ещё меньше.

    А уж тех, кто понимает...

     
  • 2.48, Аноним (-), 02:43, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Бывает. Строк кода много, разрабов мало, тех кто смотрит этот код ещё
    > меньше.

    Что «бывает» — согласен. А вот насчёт «строк кода много» — это в doas-то?

    <pre>$ wc -l doas.c doas.h parse.y
         475 doas.c
          23 doas.h
         324 parse.y
         822 total</pre>

     

  • 1.3, Аноним (-), 22:43, 24/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    да и в названии опечатались и пропустили вторую "s" вконце
     
     
  • 2.4, A.Stahl (ok), 23:04, 24/06/2016 [^] [^^] [^^^] [ответить]  
  • +9 +/
    А откуда ты знаешь, что пропустили именно вторую "s"? Мне кажется первую...
     
     
  • 3.13, _ (??), 00:24, 25/06/2016 [^] [^^] [^^^] [ответить]  
  • +3 +/
    А мне кажется что там DoАзЪ должен быть ... истинно вам говорю!, иже херувимы ... :)
     
     
  • 4.14, anonymous (??), 00:32, 25/06/2016 [^] [^^] [^^^] [ответить]  
  • +14 +/
    do. do as. do as root
     
     
  • 5.31, Аноним (-), 12:49, 26/06/2016 [^] [^^] [^^^] [ответить]  
  • –2 +/
    do
    do ass
    do ass hard
     

  • 1.5, Аноним (-), 23:18, 24/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    doass — хорошее название программы, прям как 1С
     
     
  • 2.24, Аноним (-), 18:49, 25/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ага, хотели портировать хорошую утилиту doas, а вышло как всегда - doass ;)
     

  • 1.6, Онаним (?), 23:22, 24/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    А что умудрились в sudo-то усложнить?
     
     
  • 2.21, Michael Shigorin (ok), 12:09, 25/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > А что умудрились в sudo-то усложнить?

    Много чего -- поэтому в альте до сих пор 1.6.8p12 имени courtesan.com, а в федоре, скажем, https://bugzilla.redhat.com/buglist.cgi?component=sudo&list_id=5351753&product

     
     
  • 3.42, . (?), 16:31, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    и сколько в альте правок этой самой p12 поверх оригинала?
    Не получится ли больше чем в федоре (причем там - половина в том что что-то не работает как задумано) при на два порядка меньшей user base и соответственно меньшей верифицированности?

    хотя, конечно, sudo и от рождения-то была не фонтан (в частности и пресловутый pam - так же как в этой do-ass, добавлен туда далеко не сразу, и не с первой попытки без существенных косяков - я помню как ковырнул, ужаснулся, и пару лет жил без sudo), а наверчивание на нее все новых и новых нужных непойми кому приблуд (на, пардон, _security_ утилиту, которая обязана быть как можно более простой) лучше ее не сделало.

    Но я бы нынче смотрел в сторону хака sudo по образцу libressl, а не в сторону портирования поделий из openbsd.

     
     
  • 4.43, Michael Shigorin (ok), 17:25, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > и сколько в альте правок этой самой p12 поверх оригинала?

    Жалких сорок килобайт: https://packages.altlinux.org/ru/Sisyphus/srpms/sudo/patches :)

    > Не получится ли больше чем в федоре (причем там - половина в
    > том что что-то не работает как задумано) при на два порядка
    > меньшей user base и соответственно меньшей верифицированности?

    Те users, которые вычитывали этот код, явно минимум на порядок *более* квалифицированны, судя по сопоставлению списков применимых CVE...

     
     
  • 5.44, . (?), 12:45, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Makefile.in     |   17 ++--
    UPGRADE         |   12 +++
    aclocal.m4      |   16 ++--
    auth/pam.c      |   23 ++++-
    check.c         |   18 ++++
    config.h.in     |    3 +
    configure.in    |   35 +++++---
    defaults.c      |    3 +-
    env.c           |   33 +++++--
    find_path.c     |    5 +-
    logging.c       |    5 +-
    parse.c         |  255 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
    parse.yacc      |   13 +++
    pathnames.h.in  |   14 +++
    rpminst.sudoers |   19 +++++
    sample.pam      |   33 +------
    sudo.c          |   92 ++------------------
    sudo.control    |   17 ++++
    sudo.h          |    1 -
    sudo.pod        |   15 ++--
    sudoers         |   22 ++---
    sudoers.control |   19 +++++
    sudoers.man.in  |    2 +-
    sudoers.pod     |    9 +-
    tgetpass.c      |    7 +-
    visudo.man.in   |    2 +-
    visudo.pod      |    5 +-
    27 files changed, 487 insertions(+), 208 deletions(-)

    то есть затронуто этими сорока килобайтами - почти все и не по разу. Ну и стоило оно того?

    > Те users, которые вычитывали этот код, явно минимум на порядок *более*
    > квалифицированны, судя по сопоставлению списков применимых CVE...

    еще раз, медленно: большая часть этих CVE относится к фичам, которых в вашей версии вообще нет, и, не всегда, но часто, совершенно безвредны, если этими самыми фичами не пользоваться - то есть это следствия добавления нового функционала. А у тебя уже полтыщи правок - без копейки нового, разумеется, оно так спокойнее, но причем тут квалификация?

    Ну и было за что бороться?

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

     
     
  • 6.45, Michael Shigorin (ok), 14:07, 28/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ну и стоило оно того?

    Да.

    > причем тут квалификация?

    При выборе, среди прочего -- что тянуть, что нет.

    PS: su(8) тоже другой, но иначе. :)

     
  • 4.49, Аноним (-), 02:45, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    > меньшей user base и соответственно меньшей верифицированности?
    > хотя, конечно, sudo и от рождения-то была не фонтан (в частности и
    > пресловутый pam - так же как в этой do-ass, добавлен туда
    > далеко не сразу, и не с первой попытки без существенных косяков
    > - я помню как ковырнул, ужаснулся, и пару лет жил без
    > sudo), а наверчивание на нее все новых и новых нужных непойми
    > кому приблуд (на, пардон, _security_ утилиту, которая обязана быть как можно
    > более простой) лучше ее не сделало.
    > Но я бы нынче смотрел в сторону хака sudo по образцу libressl,
    > а не в сторону портирования поделий из openbsd.

    x/0

    Ничего, что автор doas — один из основателей LibreSSL?

     

  • 1.7, Аноним (-), 23:26, 24/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Какая-то желтая насквозь новость. Представляется, как сразу после опубликования порта все пошли вдруг устанавливать doas, но тут вдруг, критическая уязвимость! Сколько невинных душ пострадало за этот час.
     
     
  • 2.9, Аноним (-), 23:55, 24/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Какая-то желтая насквозь новость. Представляется, как сразу после опубликования порта
    > все пошли вдруг устанавливать doas, но тут вдруг, критическая уязвимость! Сколько
    > невинных душ пострадало за этот час.

    С другой стороны, если такая плюха находится в первый же час - что с остальным кодом творится? Бсдшное качество как есть.

     
     
  • 3.10, Аноним (-), 00:14, 25/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > что с остальным кодом творится? Бсдшное качество как есть.

    То ли дело PPA с AURами!
    Кстати, да, не у всех юниксоподобных есть такие классные друзья:
    http://www.linux-magazine.com/Online/News/Microsoft-Patents-Sudo
    Так что да, лапчатые могут гордиться!

     
     
  • 4.17, Аноним (-), 00:52, 25/06/2016 [^] [^^] [^^^] [ответить]  
  • +6 +/
    этому Анониму больше не наливать
     
  • 3.11, Аноним (-), 00:20, 25/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >  Бсдшное качество как есть.

    А еще у них в портах есть sudo
    http://www.freshports.org/security/sudo/
    да-да, тот самый:
    http://cve.mitre.org/cgi-bin/cvename.cgi?name=2012-0809
    > Format string vulnerability in the sudo_debug function in Sudo 1.8.0 through 1.8.3p1 allows local users to execute arbitrary code via format string sequences in the program name for sudo.

    https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-0106
    > Sudo 1.6.9 before 1.8.5, when env_reset is disabled, does not properly check environment variables for the env_delete restriction, which allows local users with sudo permissions to bypass intended command restrictions via a crafted environment variable.
    >

     
  • 3.15, Led (ok), 00:40, 25/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Бсдшное качество

    Забавно

     
     
  • 4.29, Аноним (-), 21:02, 25/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Особенно на фоне всяких http://mobile.opennet.ru/opennews/art.shtml?num=44669
     
     
  • 5.36, Аноним (-), 08:13, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Особенно на фоне всяких http://mobile.opennet.ru/opennews/art.shtml?num=44669

    Там обычное повышение прав, в хитрой ситуации котрую не предусмотрели. Но вот не предусмотреть что пользователь введет неправильный пароль?!?!!!

     
     
  • 6.40, anonymous (??), 10:12, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> Особенно на фоне всяких http://mobile.opennet.ru/opennews/art.shtml?num=44669
    > Там обычное повышение прав, в хитрой ситуации котрую не предусмотрели. Но вот
    > не предусмотреть что пользователь введет неправильный пароль?!?!!!

    Тут обычная опечатка, которую заметили и исправили моментально. А там серьезная уязвимость...

     
     
  • 7.46, Аноним (-), 07:45, 04/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Тут обычная опечатка, которую заметили и исправили моментально. А там серьезная уязвимость...

    Спору нет, вход без знания пароля под правами рута - серьезная уязвимость. Но вот не заметить ее можно только если ни разу не запускать свой код. Автор наверное использовал putty.exe и UAC вместо doas.

     
  • 3.23, Ordu (ok), 16:41, 25/06/2016 [^] [^^] [^^^] [ответить]  
  • +/
    Было бы печальнее, если бы эта плюха не была бы найдена в первый час. А так, значит, что не всё ещё потеряно, и сообщество ещё в состоянии скорректировать ошибки индивидуалов.
     
     
  • 4.37, Аноним (-), 08:15, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Было бы печальнее, если бы эта плюха не была бы найдена в
    > первый час. А так, значит, что не всё ещё потеряно, и
    > сообщество ещё в состоянии скорректировать ошибки индивидуалов.

    На месте сообщества было бы разумно объявить такую программу глубоко экспериментальной альфой, непригодной для практического применения. Чтобы люди понимали что автор в момент написания был невменяем и аудит может потребовать значительное время.

     
     
  • 5.50, Аноним (-), 02:48, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >> Было бы печальнее, если бы эта плюха не была бы найдена в
    >> первый час. А так, значит, что не всё ещё потеряно, и
    >> сообщество ещё в состоянии скорректировать ошибки индивидуалов.
    > На месте сообщества было бы разумно объявить такую программу глубоко экспериментальной
    > альфой, непригодной для практического применения. Чтобы люди понимали что автор в
    > момент написания был невменяем и аудит может потребовать значительное время.

    Какую такую? В оригинальном doas банально нет поддержки PAM, это в FreeBSD её прикрутили.

     
  • 3.32, Аноним (-), 13:01, 26/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > С другой стороны, если такая плюха находится в первый же час -
    > что с остальным кодом творится? Бсдшное качество как есть.

    Смотрите дети, альтернативная логика очередного лапчатого зилота – это вот так! )
    А сейчас он нам расскажет, что в официальных репах его дистрибутива нет PHP c OpenJDK, ну или что это совсем-совсем не тоже самое … =)

     
     
  • 4.38, Аноним (-), 08:23, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Смотрите дети, альтернативная логика очередного лапчатого зилота – это вот так! )

    Это альтернативная логика зилотов. Но не лапчатых.

    > А сейчас он нам расскажет, что в официальных репах его дистрибутива нет
    > PHP c OpenJDK, ну или что это совсем-совсем не тоже самое … =)

    PHP и OpenJDK - громадные монстры с сложным кодом. Логично что там багов - оптом. По умолчанию этого багодрома в дистрах все-таки нет. А в этом случае налицо тот факт что автор свою программу даже не запускал. Иначе как он смог прошляпить повышение прав при неправильном пароле?

     
     
  • 5.39, имя (?), 09:45, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Иначе как он смог прошляпить повышение прав при неправильном пароле?

    может у него руки из нужного места растут и он ниразу не смог ввести не правильный пароль?;(

     
  • 5.41, Аноним (-), 14:03, 27/06/2016 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Т е можно сказать пингвинячье качество как есть только из-за того, что оно ес... большой текст свёрнут, показать
     
     
  • 6.47, Аноним (-), 07:53, 04/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Т.е. можно сказать "пингвинячье качество как есть" только из-за того, что оно
    > есть в репах дистров пингвина?

    У пингвинов нет никаких заскоков с базовыми системами и прочим. Линукс это вообше только ядро, которое можно использовать с самыми разными юзермодами. Остальные отдуваются за свои баги сами.

    > Там баг открыт самим автором.

    Быстро поднятый маздай не считается упавшим?

    > Эдакая "самореклама" еще одного портировщика, но уже для линукса:

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

     
     
  • 7.51, Аноним (-), 02:49, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    > вообше только ядро, которое можно использовать с самыми разными юзермодами. Остальные
    > отдуваются за свои баги сами.
    >> Там баг открыт самим автором.
    > Быстро поднятый маздай не считается упавшим?
    >> Эдакая "самореклама" еще одного портировщика, но уже для линукса:
    > Пусть этот портировщик себе оставит все эти качественные продукты жизнедеятельности, где
    > авторы даже не удосуживаются запустить свой код и проверить два тривиальных
    > юзкейса: правильный пароль и неправильный. Ладно там еще сложные баги в
    > продвинутых фичах, но вот не поймать такое еще до релиза на
    > публику - это фэйл.

    Релиза, вообще-то, ещё не было.

     

  • 1.8, Аноним (-), 23:53, 24/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > привилегированные операции, даже если был указан неверный пароль пользователя

    Эпично!

     
  • 1.22, Аноним (-), 15:23, 25/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Хотели doas, а получился doass. Ну или doarse, на любителя.
     
  • 1.30, Ilya Indigo (ok), 02:46, 26/06/2016 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Мне в sudo не нравится первое ALL в sudoers. Прописывать его всегда нуэжно и кроме значения ALL что то указывать бессмысленно. localhost оно не понимает.
    Нельзя, точнее бессмысленно, писать:


    user localhost=NOPASSWD:COMMANDS_LIST
    user ALL=COMMANDS_LIST


    А если вместо localhost, указать hostname сервера, то подключаясь по SSH с явно другого хоста, sudo всё ровно выполняет это правило. То есть указывать хост отличный от ALL обессмыслено. Как с этим в doas?
     
     
  • 2.52, Аноним (-), 02:50, 08/07/2016 [^] [^^] [^^^] [ответить]  
  • +/
    > Мне в sudo не нравится первое ALL в sudoers. Прописывать его всегда
    > нуэжно и кроме значения ALL что то указывать бессмысленно. localhost оно
    > не понимает.
    > Нельзя, точнее бессмысленно, писать:
    >

    user localhost=NOPASSWD:COMMANDS_LIST

    > user ALL=COMMANDS_LIST


    > А если вместо localhost, указать hostname сервера, то подключаясь по SSH с
    > явно другого хоста, sudo всё ровно выполняет это правило. То есть
    > указывать хост отличный от ALL обессмыслено. Как с этим в doas?

    Там свой конфиг, без этой «фичи», которая была актуальна в эпоху тотального монтирования /etc по NFS.

     

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



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

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