LINUX.ORG.RU

В libssh исправлена уязвимость, позволяющая обойти аутентификацию

 ,


1

3

Разработчики библиотеки libssh, предназначенной для интеграции поддержки SSH в программы на языке C, сообщили об устранении недоработки в механизме аутентификации.

Сервер успешно авторизовал злоумышленника, если тот вместо ожидаемого сервером сообщения SSH2_MSG_USERAUTH_REQUEST отправлял SSH2_MSG_USERAUTH_SUCCESS. Таким образом, злоумышленник мог полностью обойти этап аутентификации.

Уязвимости (CVE-2018-10933) подвержены все выпуски libssh, начиная с версии 0.6, выпущенной в январе 2014 года.

Проблема исправлена в выпусках 0.8.4 и 0.7.6.

>>> Подробности

anonymous

Проверено: Shaman007 ()

Ответ на: и не исправлено, да от lzfour

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

Ну вот и нашли.

Black_Shadow ★★★★★ ()
Ответ на: комментарий от devzero

К тому же есть ещё libssh2, которая, вроде бы, совсем отдельно от libssh.

список софта

Вот, держи. Не знаю, поможет ли тебе это, но я прочесал свежее дерево портов OpenBSD:

$ find . -name Makefile -exec grep \-l 'security/libssh[^2]' \{\} \+
./net/gnugk/Makefile
./net/wireshark/Makefile
./x11/kde4/runtime/Makefile
./x11/remmina/Makefile
./x11/x2goclient/Makefile
Для libssh2:
$ find . -name Makefile -exec grep \-l 'security/libssh2' \{\} \+    
./devel/libgit2/libgit2/Makefile
./emulators/qemu/Makefile
./lang/rust/Makefile
./misc/mc/Makefile
./misc/subsurface/Makefile
./net/nmap/Makefile
./net/p5-Net-SSH2/Makefile
./net/zabbix/Makefile
./sysutils/libvirt/Makefile
./www/aria2/Makefile
./www/pecl-ssh2/Makefile
./www/pecl56-ssh2/Makefile

anonymous ()
Ответ на: комментарий от gasinvein

В любом по которое реализует сервер ссх с помощью либссх
Ваш К.

mos ★★★★★ ()
Ответ на: комментарий от AVL2

Lets take it further

Если вход по ключам не задет, то это хорошая, годная проверка на вшивость.

mos ★★★★★ ()
Ответ на: комментарий от mos

libssh используется в любом ПО, в котором используется libssh

Засиделся ты в капитанах, это уже уровня полковника ответ.

anonymous ()
Ответ на: комментарий от anonymous

а, так надо было просто отформатировать правильно

-  SSH_LOG(SSH_LOG_TRACE, "Received SSH_USERAUTH_PK_OK/INFO_REQUEST/GSSAPI_RESPONSE");
+  SSH_LOG(SSH_LOG_TRACE,
+          "Received SSH_USERAUTH_PK_OK/INFO_REQUEST/GSSAPI_RESPONSE");
 
-  if(session->auth_state==SSH_AUTH_STATE_KBDINT_SENT){
+  if (session->auth_state == SSH_AUTH_STATE_KBDINT_SENT) {
     /* Assuming we are in keyboard-interactive context */
     SSH_LOG(SSH_LOG_TRACE,
-            "keyboard-interactive context, assuming SSH_USERAUTH_INFO_REQUEST");
-    rc=ssh_packet_userauth_info_request(session,type,packet,user);
+            "keyboard-interactive context, "
+            "assuming SSH_USERAUTH_INFO_REQUEST");
+    rc = ssh_packet_userauth_info_request(session, type, packet, user);
 #ifdef WITH_GSSAPI
-  } else if (session->auth_state == SSH_AUTH_STATE_GSSAPI_REQUEST_SENT){
+  } else if (session->auth_state == SSH_AUTH_STATE_GSSAPI_REQUEST_SENT) {
     rc = ssh_packet_userauth_gssapi_response(session, type, packet, user);
MyTrooName ★★★★★ ()
Ответ на: комментарий от missxu

(дада в этом самом ООП такого никогдаб не произошло)

Бугага. Ну конечно, масенький, конечно.

kirk_johnson ★★ ()
Ответ на: комментарий от gasinvein

А конкретные примеры ПО какие?

Вон выше анон список вбросил с конкретными примерами.

anonymous ()
Ответ на: комментарий от anonymous

Народ, а может кто проверить сертифицированные линуксы? Там как?

Ну а как там может быть? Если бы там нашли, наверное давно бы баг зарепортили. Но, кстати, не так уж и много, где libssh используется, если взглянуть на какой-нибудь «apt-cache whatdepends libssh». Из того, что мне показывает, видимо только kde4base-runtime-core несколько напрягает. И то, надо посмотреть, для чего оно там. Ещё вот remmina, но я, например, не пользуюсь.

AS ★★★★★ ()
Ответ на: комментарий от devzero

Ну используется мало где судя по этому https://packages.debian.org/search?keywords=libssh&searchon=all&suite... ,но там проглядывается есть для php модуль, но https://qa.debian.org/popcon.php?package=php5-ssh2 и его судя по популярности вообще никто не юзает. Хотя вот стата по собственно libssh тут уже подвижки есть https://qa.debian.org/popcon.php?package=libssh

linux-org-ru ()

Уязвимость звучит глупо. Т.е ssh верил «на слово» любому?

karton1 ★★★★ ()

Решил посмотреть а кто зависит от libssh (различные версии по одного пакета поскипал):

~ $ equery d -a libssh
 * These packages depend on libssh:
app-emulation/libvirt-4.6.0-r1 (libssh ? net-libs/libssh)
app-misc/tmate-2.2.1 (>=net-libs/libssh-0.6.0[static-libs?])
kde-apps/kio-extras-18.08.2 (sftp ? net-libs/libssh[sftp])
media-gfx/exiv2-0.26_p20180811-r3 (webready ? net-libs/libssh[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?])
media-plugins/kodi-vfs-sftp-9999 (net-libs/libssh[sftp])
media-tv/kodi-17.6-r7 (sftp ? net-libs/libssh[sftp])
media-video/dcpomatic-2.12.4 (net-libs/libssh)
media-video/ffmpeg-4.0.2 (ssh ? >=net-libs/libssh-0.5.5[abi_x86_32(-)?,abi_x86_64(-)?,abi_x86_x32(-)?,abi_mips_n32(-)?,abi_mips_n64(-)?,abi_mips_o32(-)?,abi_ppc_32(-)?,abi_ppc_64(-)?,abi_s390_32(-)?,abi_s390_64(-)?])
net-analyzer/hydra-8.6 (ssl ? >=net-libs/libssh-0.4.0)
net-analyzer/openvas-libraries-8.0.5 (>=net-libs/libssh-0.5.0)
net-analyzer/wireshark-2.6.4-r1 (sshdump ? >=net-libs/libssh-0.6)
                                (ciscodump ? >=net-libs/libssh-0.6)
net-ftp/yafc-1.3.7 (ssh ? net-libs/libssh)
net-misc/csync-0.50.0 (sftp ? >=net-libs/libssh-0.5)
net-misc/remmina-1.2.31.3 (ssh ? net-libs/libssh[sftp])
net-misc/x2goclient-4.1.2.1 (>=net-libs/libssh-0.7.5-r2)
 ~ $


Причём, как понимаю, почти все, кроме разве что libvirt наверно, используют только клиентскую часть libssh.

Так что истерящие в каментах смотрятся смешно.

WatchCat ★★★★★ ()
Последнее исправление: WatchCat (всего исправлений: 1)
Ответ на: комментарий от snizovtsev

Я так понял эта реализация libssh != openssh и панику можно не поднимать?

скорее всего, эта байда использовалась исключительно для реализации клиентов. именно поэтому этот косяк только теперь заметили. кому интересен мертвый код?

anonymous ()
Ответ на: комментарий от karton1

А ты думал. В мире софта настолько «на соплях» всё сделано, что иногда хочется залезть под одеяло, свернуться в позу эмбриона и тихо лежать, посасывая большой палец и пуская слюни.

anonymous ()
Ответ на: комментарий от anonymous

Ты умеешь читать?

А где используется серверная часть libssh?
серверная часть libssh
серверная

Кто в том списке реализует ssh-сервер, mc или remmina?

gasinvein ★★★ ()
Последнее исправление: gasinvein (всего исправлений: 1)
Ответ на: комментарий от anonymous

свернуться в позу эмбриона
посасывая большой палец и пуская слюни

А ты затейник.

kirk_johnson ★★ ()

я вот сейчас не понял т.е. там даже эксплойт в обычном смысле не нужен, просто посылаешь сообщение и ты на сервере, верно?

надо, надо idris внедрять в массы.

AndreyKl ★★★★★ ()
Ответ на: комментарий от AndreyKl

надо, надо idris внедрять в массы.

для начала неплохо было бы внедрить в массы умение пользоваться головным мозгом. а там, глядишь, idris (или что-нибудь похожее) и сам подтянется.

anonymous ()
Ответ на: комментарий от anonymous

Просто издать закон, чтоб у всех был IQ > 120!

anonymous ()

Жалко с девушками так не работает.

hotpil ★★★ ()
Ответ на: комментарий от kirk_johnson

в этом самом ООП такого никогдаб не произошло

а между прочим. нормальная, читаемая реализация state machine сделала бы этот баг самоочевидным. с ООП или без

MyTrooName ★★★★★ ()
Последнее исправление: MyTrooName (всего исправлений: 2)
Ответ на: комментарий от missxu

(дада в этом самом ООП такого никогдаб не произошло)

Этого никогда бы не произошло в языке с зависимыми типами. Вот пример реализации сетевого протокола.

http://docs.idris-lang.org/en/latest/st/examples.html

Как можно видеть, всё состояние выражено в типах. Т.е. компилятор, для нашего случая, просто не позволил бы вызвать любую функцию доступную «авторизованному» подмножеству функций из неавторизованного состояния. И пишется это легко и элегантно, с полной компил-таймовой проверкой (в отличие от рантаймовой при реализации стейт-машин на си).

(вот тут получше разжёвано и пример попроще, кому интересно http://docs.idris-lang.org/en/latest/st/machines.html )

AndreyKl ★★★★★ ()
Последнее исправление: AndreyKl (всего исправлений: 5)
Ответ на: комментарий от Black_Shadow

ага, выявили

где? не в стабильной ветке?
при тестироввнии или кто то поймал баг и полез смотреть?

lzfour ()
Ответ на: комментарий от anonymous

Во-первых, IQ переоценен. Это не единственный и не всегда самый важный показатель означенного умения.

Во-вторых, у всех не надо. Дворники же тоже нужны. Просто не подпускать к деятельности, которая требует интенсивного использования мозга, тех, кто в этом использовании не силён.

anonymous ()
Ответ на: комментарий от anonymous

«умение пользоваться головным мозгом» - это весьма неформальный инструмент.

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

AndreyKl ★★★★★ ()
Последнее исправление: AndreyKl (всего исправлений: 1)
Ответ на: комментарий от h578b1bde

для миллионов глаз сообщества

Это не openssh. Эта библиотека не такая уж и популярная.

goingUp ★★★★★ ()
Ответ на: комментарий от AndreyKl

Кстати, «in-depth» интервью с автором idris https://corecursive.com/006-type-driven-development-and-idris-with-edwin-brady/

Тем кто интересуется будет любопытно ознакомиться с основными идеями технологии и тем как они влияют на практику программирования на этом языке.

Язык английский, конечно...

AndreyKl ★★★★★ ()
Последнее исправление: AndreyKl (всего исправлений: 1)
Ответ на: комментарий от AndreyKl

даст заведомо гарантированный результат любому кто умеет его использовать.
любому кто умеет

Вот-вот.

Это как пневмомолоток: можно конечно научиться витруозно забивать гвозди камнем. Но у того кто умеет пользоваться пневмомолотком результат заведомо лучше на порядок, а то и пару.

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

Если что, я не против Idrisa. Вот только это, как обычно, не «серебряная пуля». Проблемы по прежнему в головах, и начинать их решение надо оттуда.

anonymous ()
Ответ на: комментарий от osmanman

Чем libssh отличается от openssh

Поскольку вопрос неконкретный, отвечу так же неконкретно: да почти всем.

anonymous ()
Ответ на: комментарий от anonymous

Тут фокус в том, что в отличии, скажем, от гранаты, которую, действительно, может использовать даже обезьяна, идрис требует определённой квалификации, которую значительно легче проверить формальными тестами, чем, скажем, квалификацию php-шника.

Ну и лично я думаю что идрис в том же смысле серебряная пуля в котором серебряной пулей была ява (против с++) или даже си (против ассемблера): т.е. да, всех проблем не решит, но это значительно более производительная технология.

// блин, в первом предложении настоящий квест с запятыми...

AndreyKl ★★★★★ ()
Последнее исправление: AndreyKl (всего исправлений: 6)
Ответ на: комментарий от hotpil

это намек, что там был говнокод до (неконсистентное форматирование, в том числе отступы), и исправили его говнокоммитом (слепили фикс форматирования и секуритификс в один коммит)

MyTrooName ★★★★★ ()
Ответ на: комментарий от AndreyKl

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

Ну что ж, в чём-то ты меня убедил. Если действительно можно формально проверить квалификацию, то по крайней мере обезьян можно не подпускать к идрису.

Ксати, скажи, а на хаскелле можно ли программировать с зависимыми типами и будет ли от этого такой же (или хотя бы близкий) профит, как от идриса? А то сам идрис довольно далёк пока ещё от практического применения.

anonymous ()
Ответ на: комментарий от dv76

(откашлявшись) РЕШЕТО!!! :D

Приз в номинации «самый очаровательный камент месяца». :)

dimgel ()
Ответ на: комментарий от AndreyKl

И была бы ошибка в системе типов. Будто говнокодеров не знаешь.

devzero ()
Ответ на: комментарий от anonymous

которую легко проверить формальными тестами

Я там исправил «легко» на «легче»: момент в том что есть набор формальных вещей которые нужно уметь использовать чтобы эффективно программировать на идрисе. И на этот набор (поскольку методы формальные) гипотетически можно написать приличный набор тестов.

По поводу зависимых типов на хаскеле. Я не то чтобы супер разбираюсь. Кажется где то с год назад я попробовал написать на хаскеле несколько примеров используя «зависимые типы». В целом техника весьма нетривиальна, даже для тех простых примеров которые я пытался реализовать по туториалам*: например, чего стоят одни только синглтоны. Плюс нужно несколько расширений (как я помню минимум 5).

Но скажем функция filter для списков оказалась для меня непреодолимой. Вероятно её нельзя написать на сегодняшнем хаскеле (вместе с расширениями) либо это уж совсем не просто. Я не ахти какой спец, повторюсь, но есть например библиотека** для работы с векторами на хаскеле и там я в общем-то фильтр не увидел. Т.е. вернуть доказательство в хаскеле нельзя. А это, при использовании зависимых типов, часто нужно и удобно.

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

Это что касается полноценных зависимых типов. Т.е. ответ «нет». Но их в общем-то нигде нет пока что. Идрис есть, но как ты верно заметил, ему ещё надо расти. Агда вроде взрослее, но у неё похоже с общими библиотеками («батарейками») не очень дела обстоят пока.

Если говорить о повседневных задачах, то по моему система типов хаскеля - самое хорошее что сегодня есть из готового к использованию.

Вот пример с протоколами, на сколько я понимаю, вполне можно реализовать применяя технику фантомных типов***, которая довольно проста в понимании и использовании.

За вопрос спасибо, постарался поинформативнее и покороче, по возможности)

* пример туториала https://www.schoolofhaskell.com/user/konn/prove-your-haskell-for-great-safety...
** библиотека для работы с векторами Vector-Sized
*** фантомные типы https://wiki.haskell.org/Phantom_type

AndreyKl ★★★★★ ()
Ответ на: комментарий от devzero

И была бы ошибка в системе типов.

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

AndreyKl ★★★★★ ()
Последнее исправление: AndreyKl (всего исправлений: 2)
Ответ на: комментарий от AndreyKl

Так нет, в логике типов. Прошло бы, потому что ишь компилятор какой-то что-то там вопит, щас мы все типы выкинем и будем на интах считать по старинке.

devzero ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.