URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 108355
[ Назад ]

Исходное сообщение
"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."

Отправлено opennews , 24-Июн-16 22:31 
В дерево портов FreeBSD добавлена утилита doas (http://www.freshports.org/security/doas/), представляющая собой упрощённый аналог программы sudo, позволяющий выполнять команды от имени другого пользователя. Утилита развивается в недрах проекта OpenBSD в ответ на усложнение современных выпусков sudo,  которые не отвечают требованиям OpenBSD по безопасности и зависимостям.


Портирование (https://github.com/slicer69/doas) не обошлось без казуса - спустя несколько часов после публикации порта, в нём была обнаружена критическая уязвимость (https://github.com/slicer69/doas/issues/2), позволяющая (https://twitter.com/mordin_/status/746372693071642624) выполнить привилегированные операции, даже если был указан неверный пароль пользователя. Т.е. любой пользователь, указанный в секции "permit" в файле doas.conf может выполнить любые допустимые команды, указав любые символы в ответ на запрос пароля. Проблема была вызвана  ошибкой (https://github.com/slicer69/doas/commit/720db7212167f05bcdcb...) в коде обработки отрицательного результата проверки пароля через PAM (при ошибке программа не завершала свою работу).


URL: https://www.reddit.com/r/freebsd/comments/4pmp78/openbsds_do.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=44663


Содержание

Сообщения в этом обсуждении
"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено G.NercY.uR , 24-Июн-16 22:32 
Бывает. Строк кода много, разрабов мало, тех кто смотрит этот код ещё меньше.
А добавили проблему я так понимаю этим коммитом:
https://github.com/slicer69/doas/commit/d55af6cdf4267e6e1cfb...

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Kodir , 25-Июн-16 00:46 
> (void) strlcpy(cmdline, argv[0], sizeof(cmdline));
> char *challenge = NULL, *response, rbuf[1024], cbuf[128];

* facepalm.avi 10GB *

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Michael Shigorin , 25-Июн-16 12:05 
> Бывает. Строк кода много, разрабов мало, тех кто смотрит этот код ещё меньше.

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 08-Июл-16 02:43 
> Бывает. Строк кода много, разрабов мало, тех кто смотрит этот код ещё
> меньше.

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

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 24-Июн-16 22:43 
да и в названии опечатались и пропустили вторую "s" вконце

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено A.Stahl , 24-Июн-16 23:04 
А откуда ты знаешь, что пропустили именно вторую "s"? Мне кажется первую...

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено _ , 25-Июн-16 00:24 
А мне кажется что там DoАзЪ должен быть ... истинно вам говорю!, иже херувимы ... :)

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено anonymous , 25-Июн-16 00:32 
do. do as. do as root

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 26-Июн-16 12:49 
do
do ass
do ass hard

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 24-Июн-16 23:18 
doass — хорошее название программы, прям как 1С

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 25-Июн-16 18:49 
Ага, хотели портировать хорошую утилиту doas, а вышло как всегда - doass ;)

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Онаним , 24-Июн-16 23:22 
А что умудрились в sudo-то усложнить?

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Michael Shigorin , 25-Июн-16 12:09 
> А что умудрились в sudo-то усложнить?

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено . , 27-Июн-16 16:31 
и сколько в альте правок этой самой p12 поверх оригинала?
Не получится ли больше чем в федоре (причем там - половина в том что что-то не работает как задумано) при на два порядка меньшей user base и соответственно меньшей верифицированности?

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

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Michael Shigorin , 27-Июн-16 17:25 
> и сколько в альте правок этой самой p12 поверх оригинала?

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

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

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено . , 28-Июн-16 12:45 
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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Michael Shigorin , 28-Июн-16 14:07 
> Ну и стоило оно того?

Да.

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

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

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 08-Июл-16 02:45 
>[оверквотинг удален]
> меньшей user base и соответственно меньшей верифицированности?
> хотя, конечно, sudo и от рождения-то была не фонтан (в частности и
> пресловутый pam - так же как в этой do-ass, добавлен туда
> далеко не сразу, и не с первой попытки без существенных косяков
> - я помню как ковырнул, ужаснулся, и пару лет жил без
> sudo), а наверчивание на нее все новых и новых нужных непойми
> кому приблуд (на, пардон, _security_ утилиту, которая обязана быть как можно
> более простой) лучше ее не сделало.
> Но я бы нынче смотрел в сторону хака sudo по образцу libressl,
> а не в сторону портирования поделий из openbsd.

x/0

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 24-Июн-16 23:26 
Какая-то желтая насквозь новость. Представляется, как сразу после опубликования порта все пошли вдруг устанавливать doas, но тут вдруг, критическая уязвимость! Сколько невинных душ пострадало за этот час.

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 24-Июн-16 23:55 
> Какая-то желтая насквозь новость. Представляется, как сразу после опубликования порта
> все пошли вдруг устанавливать doas, но тут вдруг, критическая уязвимость! Сколько
> невинных душ пострадало за этот час.

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 25-Июн-16 00:14 
> что с остальным кодом творится? Бсдшное качество как есть.

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 25-Июн-16 00:52 
этому Анониму больше не наливать

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 25-Июн-16 00:20 
>  Бсдшное качество как есть.

А еще у них в портах есть 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.
>


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Led , 25-Июн-16 00:40 
> Бсдшное качество

Забавно


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 25-Июн-16 21:02 
Особенно на фоне всяких http://mobile.opennet.ru/opennews/art.shtml?num=44669

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 27-Июн-16 08:13 
> Особенно на фоне всяких http://mobile.opennet.ru/opennews/art.shtml?num=44669

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено anonymous , 27-Июн-16 10:12 
>> Особенно на фоне всяких http://mobile.opennet.ru/opennews/art.shtml?num=44669
> Там обычное повышение прав, в хитрой ситуации котрую не предусмотрели. Но вот
> не предусмотреть что пользователь введет неправильный пароль?!?!!!

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 04-Июл-16 07:45 
> Тут обычная опечатка, которую заметили и исправили моментально. А там серьезная уязвимость...

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Ordu , 25-Июн-16 16:41 
Было бы печальнее, если бы эта плюха не была бы найдена в первый час. А так, значит, что не всё ещё потеряно, и сообщество ещё в состоянии скорректировать ошибки индивидуалов.

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 27-Июн-16 08:15 
> Было бы печальнее, если бы эта плюха не была бы найдена в
> первый час. А так, значит, что не всё ещё потеряно, и
> сообщество ещё в состоянии скорректировать ошибки индивидуалов.

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 08-Июл-16 02:48 
>> Было бы печальнее, если бы эта плюха не была бы найдена в
>> первый час. А так, значит, что не всё ещё потеряно, и
>> сообщество ещё в состоянии скорректировать ошибки индивидуалов.
> На месте сообщества было бы разумно объявить такую программу глубоко экспериментальной
> альфой, непригодной для практического применения. Чтобы люди понимали что автор в
> момент написания был невменяем и аудит может потребовать значительное время.

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 26-Июн-16 13:01 
> С другой стороны, если такая плюха находится в первый же час -
> что с остальным кодом творится? Бсдшное качество как есть.

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 27-Июн-16 08:23 
> Смотрите дети, альтернативная логика очередного лапчатого зилота – это вот так! )

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

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

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено имя , 27-Июн-16 09:45 
>Иначе как он смог прошляпить повышение прав при неправильном пароле?

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 27-Июн-16 14:03 
> PHP и OpenJDK - громадные монстры с сложным кодом. Логично что там
> багов - оптом.

Т.е. можно сказать "пингвинячье качество как есть" только из-за того, что оно есть в репах дистров пингвина?

> А в этом случае налицо тот факт что автор свою программу
> даже не запускал. Иначе как он смог прошляпить повышение прав при
> неправильном пароле?

Гм, вы все-таки сходите по ссылке
https://github.com/slicer69/doas/issues/2
> slicer69 commented 3 days ago
> I have found

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

ЗЫ:
https://github.com/slicer69/doas/issues/4
Эдакая "самореклама" еще одного портировщика, но уже для линукса:
> I mainly focused to port it to linux and staying

и вот прикольный каммит "fix horrible mistake"
https://github.com/Duncaen/OpenDoas/commit/9972a8ee4233ba9e4...


            ret = pam_end(pamh, ret);
            if (ret != PAM_SUCCESS)
                errx(1, "pam_end(): %s\n", pam_strerror(pamh, ret));
-            return 1;
+            return 0;
        }
    }

Ничего не напоминает? ))

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 04-Июл-16 07:53 
> Т.е. можно сказать "пингвинячье качество как есть" только из-за того, что оно
> есть в репах дистров пингвина?

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

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

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

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

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 08-Июл-16 02:49 
>[оверквотинг удален]
> вообше только ядро, которое можно использовать с самыми разными юзермодами. Остальные
> отдуваются за свои баги сами.
>> Там баг открыт самим автором.
> Быстро поднятый маздай не считается упавшим?
>> Эдакая "самореклама" еще одного портировщика, но уже для линукса:
> Пусть этот портировщик себе оставит все эти качественные продукты жизнедеятельности, где
> авторы даже не удосуживаются запустить свой код и проверить два тривиальных
> юзкейса: правильный пароль и неправильный. Ладно там еще сложные баги в
> продвинутых фичах, но вот не поймать такое еще до релиза на
> публику - это фэйл.

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


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 24-Июн-16 23:53 
> привилегированные операции, даже если был указан неверный пароль пользователя

Эпично!


"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 25-Июн-16 15:23 
Хотели doas, а получился doass. Ну или doarse, на любителя.

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Ilya Indigo , 26-Июн-16 02:46 
Мне в sudo не нравится первое ALL в sudoers. Прописывать его всегда нуэжно и кроме значения ALL что то указывать бессмысленно. localhost оно не понимает.
Нельзя, точнее бессмысленно, писать:
user localhost=NOPASSWD:COMMANDS_LIST
user ALL=COMMANDS_LIST

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

"При портировании во FreeBSD утилиты doas, аналога sudo от Op..."
Отправлено Аноним , 08-Июл-16 02:50 
> Мне в sudo не нравится первое ALL в sudoers. Прописывать его всегда
> нуэжно и кроме значения ALL что то указывать бессмысленно. localhost оно
> не понимает.
> Нельзя, точнее бессмысленно, писать:
>
user localhost=NOPASSWD:COMMANDS_LIST 
> user ALL=COMMANDS_LIST

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

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