1.4, Аноним (4), 11:08, 12/05/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
>использованием командного интерпретатора при запуске команд
Сколько раз твердили миру: за использование 'exec' для чего-либо кроме запуска команд, которые пользователь приказал запустить, нужно к стенке ставить.
| |
|
2.36, Аноним (-), 15:12, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
>>использованием командного интерпретатора при запуске команд
> Сколько раз твердили миру: за использование 'exec' для чего-либо кроме запуска команд,
> которые пользователь приказал запустить, нужно к стенке ставить.
Скорее за system(). Exec значительно безопаснее. Но ssh с его юниксвеем так работает что вот именно ssh сделать именно безопасно - и не встав на грабли - не очень просто. Допушения неудобные, и от клиента и от сервера требуется жесткая валидация все и вся, иначе те два самосвала грабель в полях - заедут ручкой по лбу, и еще скажите спасибо если оптимизаторы топор не насадили.
| |
2.45, Аноним (45), 17:29, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
Shell-out — самый обычный unix-way, в TAoUP это описано и именно в этом ключе. Ты сейчас фактически предложил поставить к стенке тех самыд дидов, которые юниксы сваяли и их ортодоксию^Wфилософию заложили.
| |
|
3.52, Аноним (52), 18:38, 12/05/2025 [^] [^^] [^^^] [ответить] | +/– | Знаешь, unix-way - это вообще не об использовании баша Он о декомпозиции Более... большой текст свёрнут, показать | |
|
4.58, Аноним (-), 20:14, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Шелл вообще может быть полностью объектно-ориентированным
Вообще-то McIlroy прямо требует:
"Write programs to handle text streams"
Так что объектно-ориентированный уже будет нарушением unix-way.
| |
|
5.60, Аноним (45), 20:37, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
Обмен сериализованнымт в текстовое представление объектами — это всё ещё unix-way, определение которого если и существует, то только вот в этих самых свидетельствах апостолов и толкованиях муллы, или уже нет?
| |
|
4.61, Аноним (45), 20:40, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
Ты крайне плохо представляешь о чём ты говоришь. Когда концепцию назвали shell out, баш ещё не начали даже писать. Но мой тезис про ортодоксию ты таки подтвердил, молодец.
| |
|
|
|
1.5, Аноним (5), 11:09, 12/05/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Так уязвимость получается не для серверов (маршрутизаторов), а для клиента.
| |
1.6, Смузихлеб забывший пароль (?), 11:25, 12/05/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
> Уязвимость вызвана отсутсвием экранирования спецсимволов в имени хоста
Как же это замечательно. Зато, наверняка, и по типам всё проверяется и всё норм и всевозможные интеграции-тестирования успешно проходит и разработчики всевозможные КоК'и соблюдают да кодят "согласно регламентам и требованиям к оформлению"
Только, дыра есть. Точнее, дырища прямо на месте парадного входа, через которую и авианосец пролезет. Но это - мелочи. Главное - всё по регламентам. А остальное - мелочи
| |
|
2.16, Аноним (16), 12:28, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
Главное что контроль за софтом - кого надо. От вредоносной функцио-анальности внесённой самим автором не защитит ничего. И у автора есть железобетонная отмазка: "проект делался исключительно для себя, я вас не заставлял его юзать"
| |
2.26, Аноним (26), 13:49, 12/05/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
Правильная система типов, с введением типа наподобие ExecArgumentString, который можно получить только как результат экранирования (function escapeExecArgument(string): ExecArgumentString), и который требуется сигнатурой exec(), проблему как раз решает.
Но про типы в этом контексте почему-то редко думают.
| |
2.27, Аноним (26), 13:49, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
Правильная система типов, с введением типа наподобие ExecArgumentString, который можно получить только как результат экранирования (function escapeExecArgument(string): ExecArgumentString), и который требуется сигнатурой exec(), проблему как раз решает.
Но про типы в этом контексте почему-то редко думают.
| |
|
3.29, Аноним (-), 14:04, 12/05/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
Пффф... О каких типах может идти речь,
если в том коде они вручную считали длину с magic numbers
- len += 4 + strlen(key->filename);
С другой стороны, что от сишки можно ожидать. Какие-то типы? Они даже строки нормальные не осилили.
| |
3.31, Аноним (11), 14:52, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Правильная система типов, с введением типа наподобие ExecArgumentString, который можно
> получить только как результат экранирования (function escapeExecArgument(string): ExecArgumentString),
> и который требуется сигнатурой exec(), проблему как раз решает.
> Но про типы в этом контексте почему-то редко думают.
Во-первых, в си - слабая типизация, с неявными приведениями и прочим (как и куча легаси)
Во-вторых -- ошибка там как раз в (самопальной) функции экранирования.
| |
|
4.37, Аноним (26), 15:22, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
Я специально псевдокодом, синтаксически далёким от C, написал, чтобы было понятно, что я не про конкретный язык, а про то, что в типизации важна не только техническая, но и смысловая сторона. 10 долларов и 10 яблок - это разные вещи. Так же как и строка, несмотря на то, что это просто массив байт технически, может нести совершенно разную смысловую нагрузку.
Я такой подход называю "типизация вместо валидации". Провалидировать строку можно забыть. А если у меня тип Email, то я уверен, что этот массив байт прошёл валидацию и содержит валидный Email. А если окажется невалидный, то единственное проблемное место - это конструктор типа (emailFromString).
| |
|
5.41, Аноним (11), 16:28, 12/05/2025 [^] [^^] [^^^] [ответить] | +/– |  Это-то понятно, но как раз без технической стороны т е поддержки ЯП комп... большой текст свёрнут, показать | |
|
4.49, Аноним (-), 17:56, 12/05/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
> Во-первых, в си - слабая типизация, с неявными приведениями и прочим (как
> и куча легаси)
Можно и не очень слабую сделать.
1) -Werror в хороших проектах так то норма.
2) typedef struct ... something_t - и теперь вообще попробуйте вместо something_t или такого указателя что-то другое дать вообще.
3) Со строками 2) кстати прекрасно катит и можно завести строки с .len.
> Во-вторых -- ошибка там как раз в (самопальной) функции экранирования.
#define "самопальный" :)
| |
|
|
|
1.7, Аноним (7), 11:39, 12/05/2025 [ответить] [﹢﹢﹢] [ · · · ]
| –1 +/– |
> Уязвимость вызвана отсутсвием экранирования спецсимволов в имени хоста
Подозреваю, что надо сказать спасибо дидам, которые накалякали невнятные RFC с взаимоисключающими определениями, какие символы допустимы, а какие нет.
| |
|
|
|
4.50, Аноним (-), 17:57, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
> Баттхерт-треккер, я бы сказал)
Или просто батт-трекер, я бы сказал. Даже индекс топа a$$h0l3z интернета запросто может быть.
| |
|
|
|
1.25, Аноним (24), 13:46, 12/05/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Мда, всегда лично смотрел с подозрением на сабж, а после новости, тем более нафиг. Лучше уж что то стандарное, но протестированное.
| |
1.44, Аноним (44), 17:08, 12/05/2025 [ответить] [﹢﹢﹢] [ · · · ]
| +/– |
Поднимите руки те, кто использовал их клиентскую реализацию
Серверная в том же OpenWRT и всех прошивках на нем базирующихся(в том числе у Сяоми, у Тенды и прочих бюджетных роутерах), а вот где и кто использует их клиент вместо нормального из OpenSSH я не знаю и не встречал, если честно
| |
|
2.46, Аноним (45), 17:36, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
Никогда не приходилось заходить по ssh прямо с роутера по link-local IP на полуживой хост? Хотя, глядя на OpenWRT, понимаю, что быстрее под кровать залезть и моник с клавой подключить, чем что-то там реанимировать как будто бы это unmanned pop за тридевять земель. Пожалуй ты прав, клиентом мало кто пользуется за пределами локалхоста, так что проблема несущественная. Поправили, и на том спасибо. Удивительно, что вообще заметил кто-то.
| |
|
3.47, Аноним (44), 17:42, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
Знаешь, у меня у всех роутеров с ОпенВРТ достаточный объем накопителя и я всегда просто его собираю с клиентом от OpenSSH, вот и вообще не видел клиент от dropbear
Не, я помню как пару лет назад зачем-то пытался вспомнить как этот клиент вообще зовут, сидел и минут пять тупил, без гуглежа так и не мог вспомнить
Но по факту клиент вообще не используют же. Сервер да, много где и все такое, а клиент вообще по нулям. Так что и правда хорошо, что нашелся единственный пользователь и он нашел ошибку.
| |
|
4.55, Аноним (55), 18:56, 12/05/2025 [^] [^^] [^^^] [ответить]
| –1 +/– |
Dropbear в реальных системах вроде облаков популярен. Ну, в целом его любят за то, что он минималистичный и стабильный, чего про openssh никак не скажешь. Кто любит? Разные серьёзные дяди с датацентрами.
| |
|
5.62, Аноним (44), 21:25, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
Фантазер, мы тебя называли фантазер
dropbear это игрушка чисто для SOHO-роутеров, нет его нигде больше
| |
|
|
3.53, Аноним (53), 18:43, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
Дорогой, если ты клиент вручную можешь запустить, то и ту команду, которую ты в имя хоста зачем-то воткнул, можешь и так запустить. Не понимаю чего все так возбудились. Уязвимость скорее из категории когда клиента невозможно запускать вручную (нет шелла, только вэбморда какая нибудь которая дергает клиент для заданного хоста). Вот тогда приплетаешь хитрым образом шелл к имени хоста - и вуаля.
| |
|
2.54, Аноним (54), 18:46, 12/05/2025 [^] [^^] [^^^] [ответить]
| +1 +/– |
Набирать dbclient для ssh клиента... ШТА ?
Какой гений выбирал имя команды ?
Я если бы даже захотел - в жизнь бы не догадался.
| |
|
3.63, Аноним (44), 21:26, 12/05/2025 [^] [^^] [^^^] [ответить]
| +/– |
Вот! Ты меня понимаешь, вот и я как-то даже захотев не мог вспомнить как его зовут
| |
|
|
|