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 ()
Последнее исправление: Shaman007 (всего исправлений: 1)

Орханник: Мне известно, что ты выносишь спецодежду. Покажи, что в рюкзаке.
Сотрудник: У меня там ничего нет.
Охранник: Ну, ок проходи...

Ничего не напоминает...

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

Но вообще направление хорошее.

Я, правда, не верю, что все это вот так пойдёт в мейнстрим, как оно сейчас есть. Но теорию отработают, а там лет через 10 может и выпустят какой-нибудь очередной C** с этими наработками.

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

Спасибо за развёрнутый ответ, интересно. Похожу по ссылкам.

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

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

Гм, ну тут аргумент такой: такой код был бы объективно говнокодом. Ибо не для того идрис (как и хаскель), чтобы считать на интах.

Если же наниматель не способен отличить хороший код от плохого, то тут ССЗБ.

Что касается опенсорс библиотек, то я бы к подобному произведению искусства наверное не подошёл бы на километр.

А вот на си попробуй отличи что хорошо а что плохо: так, на вскидку, «типы не те» этого не скажешь, нужен полноценный аудит.

Я, правда, не верю, что все это вот так пойдёт в мейнстрим, как оно сейчас есть. Но теорию отработают, а там лет через 10 может и выпустят какой-нибудь очередной C** с этими наработками.

Я, честно говоря, надеюсь на противополножное: подавляющее большинство не верило в возможность использования хаскеля в продакшине как раз по названным тобою причинам («заумно».. да и до сих пор не верят, чего уж там), но он используется уже во всю. Думаю, из за преимуществ в производительности труда, которые оказывают давление на выбор инструмента. Мне кажется то же произойдёт и с идрисом, хотя может быть более медленно. Но и более верно.

AndreyKl ★★★★★
()
Последнее исправление: AndreyKl (всего исправлений: 4)

Каждый линуксоид на вопрос «чем опенсорс лучше проприетарщины», смело заявляет - «в нём меньше багов, потому что много людей их ищут и фиксят!». Вот после ТАКОГО бага я считаю надо линчевать всю команду этих остолопов!!! Бестолковейшая проверка, где, казалось бы, комар носа не подточит - всё же «открытое», мать его! Как так-то??

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

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

Тупость гонишь. Ошибка - она в человеке, а не языке. Язык может что-то подсказывать, проверять, но это уже зависит от прогера - как он правильно составит алгоритм. Можно и на Си сваять так, что все проверки будут корректны.
Убивает-то не уязвимость, а её причина - свора тупоголовых опенсорсников, у которых вместо мозга - пингвин нас***л - они наивно думают, что хороший софт можно писать просто пересев на Линукс. Убогие...

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

Дочитал, ничего не понял. Idris — это haskell? Как кстати haskell поставить, я на одной системе наустанавливал всяких штук с сайта, а у меня ничего не завелось, в geany что-то скопировал, а оно вроде бы не работало.

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

Тупость гонишь.

Тебе не приходило на ум поинтересоваться почему в яве никогда не бывает Segmentation Failed?

Не просто «редко» или там «как кодер напишет», а имеено что вообще НИКОГДА.

Знаешь какой ответ? Это свойство языка. Там такое просто невозможно.

Но бывают и другие свойства у языков. Выше я говорил о более сложном свойстве которое можно описать как «значительно проще писать так чтобы такую ошибку не допустить. и значительно легче опознать код в котором такая ошибка возможна.».

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

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

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

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

требования к надежности кода должны быть

пофиксил

MyTrooName ★★★★★
()

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

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

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

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

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

не совсем так, поскольку закрытый код вообще недоступен

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

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

«в нём меньше багов, потому что много людей их ищут и фиксят!»
Как так-то??

Всё потому, что большинство надеется, что какие-то другие люди ищут и фиксят баги. На деле же тех, кто реально этим занимается, немного.

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

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

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

И кому же ты собрался предъявлять эти требования?

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

В целом на «острие прогресса» сейчас идрис/агда (ну и кстати раст, но он немного «другой»). Вернее на переходе из чисто исследовательской стадии в стадию реального применения. Но нельзя заранее знать закончиться ли этот переход успешно. Лично я надеюсь что да и изучаю идрис.

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

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

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

По поводу установки - в целом нужно ставить хаскель платформу https://www.haskell.org/platform/ . Часто есть в дистрибутивах, но я предпочитаю скачивать. Хотя для обучения пойдёт практически любая. Обычно проблем не возникает. Если всё таки возникнут, напиши мне на pubacc050 на гмыле. Постараюсь помочь, в чате обычно удобнее. Ну или просто создай тему с описанием проблемы и тегом хаскель. Хаскелисты тут есть.

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

Сильно подозреваю, что даже на Си можно было бы сделать так, чтобы возникала ошибка типов.

честно говоря примерно представляю себе как описывать стейтмашины на си. но вот как сделать чтобы была компил тайм ошибка - нет. правда я не сишник.

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

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

но вот как сделать чтобы была компил тайм ошибка - нет

Представлять каждое состояние объектом отдельного типа.

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

Это да.

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

Представлять каждое состояние объектом отдельного типа.

что то я совсем от си далёк похоже. если брать с++, то для меня смысл сказанного ясен, кажется: описываем класс на каждое состояние (можно пустой, лишь бы разный), описываем переходы в виде методов вроде OpenDoor ClosedDoor.openDoor(). Кажется статическая проверка должна работать. Правда это всё нечитаемо особо, потому что будет разбросано по классам. В том смысле что перед глазами удобно видеть некую «таблицу переходов», а тут только пара переходов будет. Но лучше чем ничего. К тому же можно набросать набор фукнций вида

OpenDoor openDoor(ClosedDoor door)
ClosedDoor closeDoor(OpenDoor door)
, а сами классы сделать пустыми. Станет наглядно. Но что ты имеешь ввиду я не улавливаю. Единственное что приходит на ум как то использовать енумы, но не соображу даже как. Можешь проиллюстрировать если есть минутка?

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

про какой язык программирования лучше почитать? Python, Haskell или вот этот idris?

про все, очевидно, лучше.

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

Представлять каждое состояние объектом отдельного типа.

отдельного типа

это наследство С++, где можно было творить подобные проверки только через типы. с лютым кстати оверхедом.

а вообще нужны finite state machine с четко задефайненым графом состояний. но только язык который такое сделает - его самого пока не сделали.

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

Да, это совершенно верно. В некоторых областях от си отказаться на сегодняшний день нельзя. Но это никак не влияет на мои рассуждения.

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

а вообще нужны finite state machine с четко задефайненым графом состояний. но только язык который такое сделает - его самого пока не сделали.

ну как же не сделали, сделали, вот, ознакомьтесь пожалуйста

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

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

Ну так он используется. Не так широко как ява или сишарп, но я так понимаю есть рост.

Тут поинт в том что довольно большая часть поверхностно (а может быть и глубже) знакомых с хаскелем высказывали мнение сводящееся к «эта заумь никогда на практике широко применяться не будет».

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

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

Я думаю что у идриса эти факторы ещё более выражены чем у хаскеля.

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

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

idris: couchbase, kafka, rethink, spark. я правильно понимаю что пока жабобыдляки будут делать бизнес, ылитка будет писать свои конекторы?

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

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

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

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

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

praseodim ★★★★★
()

Баг эпичный. Прямо анекдот вспомнился со словами «А чё, так можно было?» =)

Кстати, libssl же вроде появилась как ответ на задолбавшие баги и дыры в openssl. И на тебе как эпично обляпатьсся.

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

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

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

libssl же вроде появилась как ответ на задолбавшие баги и дыры в openssl

У тебя какая-то каша в голове.

  1. в ответ на баги и дыры в openssl появилась LibreSSL
  2. проекта libssl не существует
  3. libssh, о которой тут речь, не имеет отношения ни к одному проекту из первого пункта
anonymous
()
Ответ на: комментарий от praseodim

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

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

Если тебе так будет легче, я уточню свою фразу:

опенсорсный код, в отличие от закрытого, даёт тебе гораздо больше возможностей проверить его на надёжность

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

хацкель ... не красив

вопрос вкуса. и, вероятно, привычки. тебе не нравится, а кому то очень даже.

хацкель ... перпендикулярен нормальному мышлению

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

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

Ты путаешь libssl и libssh. Здесь про вторую.

Да, перепутал.

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