The OpenNET Project / Index page

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



"Уязвимость в Dropbear SSH, допускающая подстановку команд в dbclient"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Уязвимость в Dropbear SSH, допускающая подстановку команд в dbclient"  +/
Сообщение от opennews (??), 12-Май-25, 10:58 
Опубликован выпуск проекта Dropbear 2025.88, развивающего  сервер и клиент SSH, получивший распространение в  беспроводных маршрутизаторах и компактных дистрибутивах, подобных OpenWrt. В новой версии устранена уязвимость (CVE-2025-47203) в реализации SSH-клиента (программа dbclient), позволяющая выполнить shell-команды при обработке специально оформленного имени хоста. Уязвимость вызвана отсутсвием экранирования спецсимволов в имени хоста и использованием командного интерпретатора при запуске команд в режиме multihop (несколько хостов, разделённых запятой). Уязвимость представляет опасность для систем, запускающих dbclient с непроверенным именем хоста...

Подробнее: https://www.opennet.me/opennews/art.shtml?num=63223

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по ответам | RSS]

1. Сообщение от Аноним (1), 12-Май-25, 10:58    Скрыто ботом-модератором–3 +/
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #2, #3

2. Сообщение от Аноним (2), 12-Май-25, 11:05   +8 +/
Удивительно. Уязвимости находят в кодовых базах одного из самого распространённого из системных языков. Вот это да!
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #11, #15, #18

3. Сообщение от Аноним (3), 12-Май-25, 11:08   +5 +/
Причем тут си, если проблемы в неверном экранировании символов для шела? Точно такие же проблемы будут если переписать и на расте, и на js и на java.

Си головного мозга

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #1 Ответы: #8, #9

4. Сообщение от Аноним (4), 12-Май-25, 11:08   –1 +/
>использованием командного интерпретатора при запуске команд

Сколько раз твердили миру: за использование `exec` для чего-либо кроме запуска команд, которые пользователь приказал запустить, нужно к стенке ставить.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #36, #45

5. Сообщение от Аноним (5), 12-Май-25, 11:09   +/
Так уязвимость получается не для серверов (маршрутизаторов), а для клиента.
Ответить | Правка | Наверх | Cообщить модератору

6. Сообщение от Смузихлеб забывший пароль (?), 12-Май-25, 11:25   +/
> Уязвимость вызвана отсутсвием экранирования спецсимволов в имени хоста

Как же это замечательно. Зато, наверняка, и по типам всё проверяется и всё норм и всевозможные интеграции-тестирования успешно проходит и разработчики всевозможные КоК'и соблюдают да кодят "согласно регламентам и требованиям к оформлению"

Только, дыра есть. Точнее, дырища прямо на месте парадного входа, через которую и авианосец пролезет. Но это - мелочи. Главное - всё по регламентам. А остальное - мелочи

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #10, #16, #26, #27

7. Сообщение от Аноним (7), 12-Май-25, 11:39   +/
> Уязвимость вызвана отсутсвием экранирования спецсимволов в имени хоста

Подозреваю, что надо сказать спасибо дидам, которые накалякали невнятные RFC с взаимоисключающими определениями, какие символы допустимы, а какие нет.

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #22

8. Сообщение от Аноним Анонимович Анонимов (?), 12-Май-25, 11:45   +3 +/
> Си головного мозга

У Свидетелей Rust такого диагноза быть не может.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #12

9. Сообщение от Аноним (11), 12-Май-25, 11:46   +/
> Причем тут си, если проблемы в неверном экранировании символов для шела?

Если вместо традицинно опеннетного "да как он посмел катить бочку на любимую (и в последний раз использованную в laba3.c) сишечку!!1" глянуть в патч, то можно увидеть традиционно-сишное переизобретении лисапедов, не?

> Точно такие же проблемы будут если переписать и на расте, и на js и на java.

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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #3 Ответы: #13

10. Сообщение от aname (?), 12-Май-25, 11:48   +/
А как надо?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

11. Сообщение от Аноним (11), 12-Май-25, 11:48   +3 +/
> Удивительно. Уязвимости находят в 100500ом переизобретении лисапеда

Поправил, не благодари.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #14

12. Сообщение от aname (?), 12-Май-25, 11:49   +/
Конечно, там же всё безопасно
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #8

13. Сообщение от aname (?), 12-Май-25, 11:54   +/
> "готовые" (и массово используемые) либы намного менее проблематичны.

На C или расте?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9 Ответы: #17, #30

14. Сообщение от aname (?), 12-Май-25, 11:55   +1 +/
Кстати, да, это существенно выправляет смысл
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #11

15. Сообщение от Аноним (15), 12-Май-25, 12:08   +/
А так в этом и проблема, родной! Про "системный" язык - это такая придумка, чтобы наделить сишку новыми полномочиями и в этих рамках разматывать аргументы. По факту Си - это никакой не "системный" (что вообще значит это определение?), а ЯП для написания ядер ОС. Для написания прикладного софта (а ssh это прикладной софт) есть языки гораздо более подходящие. Так что вопрос именно в этом - что взяли неподходящий инструмент.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2 Ответы: #20, #35

16. Сообщение от Аноним (16), 12-Май-25, 12:28   +/
Главное что контроль за софтом - кого надо. От вредоносной функцио-анальности внесённой самим автором не защитит ничего. И у автора есть железобетонная отмазка: "проект делался исключительно для себя, я вас не заставлял его юзать"
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

17. Сообщение от Аноним (-), 12-Май-25, 12:34   +/
> На C или расте?

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13

18. Сообщение от Аноним (20), 12-Май-25, 12:34   +/
> Удивительно.

А чего тут удивительного, если мне нужен софт с бекдором и я буду писать на Си, так как его (Си) мало кто "знает" :)

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #2

20. Сообщение от Аноним (20), 12-Май-25, 12:39   +2 +/
> Так что вопрос именно в этом - что взяли неподходящий инструмент.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15 Ответы: #28

22. Сообщение от Аноним (22), 12-Май-25, 12:50   +/
Opennet, это такой большой багтреккер.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #7 Ответы: #24

24. Сообщение от Аноним (24), 12-Май-25, 13:44   +3 +/
Баттхерт-треккер, я бы сказал)
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #22 Ответы: #50

25. Сообщение от Аноним (24), 12-Май-25, 13:46   +/
Мда, всегда лично смотрел с подозрением на сабж, а после новости, тем более нафиг. Лучше уж что то стандарное, но протестированное.
Ответить | Правка | Наверх | Cообщить модератору

26. Сообщение от Аноним (26), 12-Май-25, 13:49   –1 +/
Правильная система типов, с введением типа наподобие ExecArgumentString, который можно получить только как результат экранирования (function escapeExecArgument(string): ExecArgumentString), и который требуется сигнатурой exec(), проблему как раз решает.

Но про типы в этом контексте почему-то редко думают.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6

27. Сообщение от Аноним (26), 12-Май-25, 13:49   +/
Правильная система типов, с введением типа наподобие ExecArgumentString, который можно получить только как результат экранирования (function escapeExecArgument(string): ExecArgumentString), и который требуется сигнатурой exec(), проблему как раз решает.

Но про типы в этом контексте почему-то редко думают.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #6 Ответы: #29, #31

28. Сообщение от 12yoexpert (ok), 12-Май-25, 14:03   +/
раст это торговая марка, а не язык
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #20

29. Сообщение от Аноним (-), 12-Май-25, 14:04   –1 +/
Пффф... О каких типах может идти речь,
если в том коде они вручную считали длину с magic numbers

- len += 4 + strlen(key->filename);

С другой стороны, что от сишки можно ожидать. Какие-то типы? Они даже строки нормальные не осилили.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27

30. Сообщение от Аноним (11), 12-Май-25, 14:17   +/
>> "готовые" (и массово используемые) либы намного менее проблематичны.
> На C или расте?

Э-э, и много ты знаешь много готовых (и используемых массово) сишных либ для экранирования символов?

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #13 Ответы: #43

31. Сообщение от Аноним (11), 12-Май-25, 14:52   +/
> Правильная система типов, с введением типа наподобие ExecArgumentString, который можно
> получить только как результат экранирования (function escapeExecArgument(string): ExecArgumentString),
> и который требуется сигнатурой exec(), проблему как раз решает.
> Но про типы в этом контексте почему-то редко думают.

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


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #27 Ответы: #37, #49

35. Сообщение от Аноним (-), 12-Май-25, 15:06   +/
> А так в этом и проблема, родной! Про "системный" язык - это такая придумка,
> чтобы наделить сишку новыми полномочиями и в этих рамках разматывать аргументы.
> По факту Си - это никакой не "системный"

По факту на си написана почти вся реально исползуемая системщина, от фирмварей в самых мелких MCU до эвон каких операционок и core-софта для них. Без си вы просто пискнуть на этот форум - не сможете. На самом базовом уровне, от кучи фирмварей без которых у вас не будет ни винча/ssd, ни видяхи, ни даже клавы и монитора - до BIOS/UEFI и далее - ОС.

> Для написания прикладного софта (а ssh это прикладной софт) есть языки гораздо более подходящие.

Вот конкретно тому ssh надо быть - мелким и с минимумом зависимостей. Чтобы даже в мелкий роутер с 32 мегами оперативы на все лезть. Если этого не будет - этот проект просто никому даром не сдастся тогда.

А вы с вашими супер яп можете прийти и показать вон тем мастеркласс. Делом. Если вы тоже сможете жрать менее мега RSS - может и у вас будет какая-то ниша. Все познается в сравнении.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15

36. Сообщение от Аноним (-), 12-Май-25, 15:12   +/
>>использованием командного интерпретатора при запуске команд
> Сколько раз твердили миру: за использование `exec` для чего-либо кроме запуска команд,
> которые пользователь приказал запустить, нужно к стенке ставить.

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

37. Сообщение от Аноним (26), 12-Май-25, 15:22   +/
Я специально псевдокодом, синтаксически далёким от C, написал, чтобы было понятно, что я не про конкретный язык, а про то, что в типизации важна не только техническая, но и смысловая сторона. 10 долларов и 10 яблок - это разные вещи. Так же как и строка, несмотря на то, что это просто массив байт технически, может нести совершенно разную смысловую нагрузку.

Я такой подход называю "типизация вместо валидации". Провалидировать строку можно забыть. А если у меня тип Email, то я уверен, что этот массив байт прошёл валидацию и содержит валидный Email. А если окажется невалидный, то единственное проблемное место - это конструктор типа (emailFromString).

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31 Ответы: #41

41. Сообщение от Аноним (11), 12-Май-25, 16:28   +/
> Я специально псевдокодом, синтаксически далёким от C, написал, чтобы было понятно, что
> я не про конкретный язык, а про то, что в типизации
> важна не только техническая, но и смысловая сторона.

...
> А если у меня тип Email, то я уверен, что этот
> массив байт прошёл валидацию и содержит валидный Email. А если окажется
> невалидный, то единственное проблемное место - это конструктор типа (emailFromString).

Это-то понятно, но как раз без "технической стороны" (т.е. поддержки ЯП/компилятором) привычку к такому подходу выработать довольно сложно, как и следовать ему (если только ты не единственный разработчик или не начнешь костылять с помощью struct и прочего, потому что сишный typedef - просто алиас).

Т.е. пишущие в основном на Си (в лучших традициях "Настоящий Погроммист может писать программы на Фортране^W Си на любом языке!") зачастую просто не в курсе, что "так тоже можно было" ...

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #37

43. Сообщение от aname (?), 12-Май-25, 16:59   +/
Это с учётом использования гугла или нет?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #30

44. Сообщение от Аноним (44), 12-Май-25, 17:08   +/
Поднимите руки те, кто использовал их клиентскую реализацию
Серверная в том же OpenWRT и всех прошивках на нем базирующихся(в том числе у Сяоми, у Тенды и прочих бюджетных роутерах), а вот где и кто использует их клиент вместо нормального из OpenSSH я не знаю и не встречал, если честно
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #46

45. Сообщение от Аноним (45), 12-Май-25, 17:29   +/
Shell-out — самый обычный unix-way, в TAoUP это описано и именно в этом ключе. Ты сейчас фактически предложил поставить к стенке тех самыд дидов, которые юниксы сваяли и их ортодоксию^Wфилософию заложили.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #4

46. Сообщение от Аноним (45), 12-Май-25, 17:36   +/
Никогда не приходилось заходить по ssh прямо с роутера по link-local IP на полуживой хост? Хотя, глядя на OpenWRT, понимаю, что быстрее под кровать залезть и моник с клавой подключить, чем что-то там реанимировать как будто бы это unmanned pop за тридевять земель. Пожалуй ты прав, клиентом мало кто пользуется за пределами локалхоста, так что проблема несущественная. Поправили, и на том спасибо. Удивительно, что вообще заметил кто-то.
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #44 Ответы: #47

47. Сообщение от Аноним (44), 12-Май-25, 17:42   +/
Знаешь, у меня у всех роутеров с ОпенВРТ достаточный объем накопителя и я всегда просто его собираю с клиентом от OpenSSH, вот и вообще не видел клиент от dropbear

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

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

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #46

49. Сообщение от Аноним (-), 12-Май-25, 17:56   –1 +/
> Во-первых, в си - слабая типизация, с неявными приведениями и прочим (как
> и куча легаси)

Можно и не очень слабую сделать.
1) -Werror в хороших проектах так то норма.
2) typedef struct ... something_t - и теперь вообще попробуйте вместо something_t или такого указателя что-то другое дать вообще.
3) Со строками 2) кстати прекрасно катит и можно завести строки с .len.

> Во-вторых -- ошибка там как раз в (самопальной) функции экранирования.

#define "самопальный" :)


Ответить | Правка | Наверх | Cообщить модератору
Родитель: #31

50. Сообщение от Аноним (-), 12-Май-25, 17:57   +/
> Баттхерт-треккер, я бы сказал)

Или просто батт-трекер, я бы сказал. Даже индекс топа a$$h0l3z интернета запросто может быть.

Ответить | Правка | Наверх | Cообщить модератору
Родитель: #24

51. Сообщение от Аноним (-), 12-Май-25, 18:07    Скрыто ботом-модератором+/
Ответить | Правка | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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