Опубликованы корректирующие выпуски пакета Samba 4.23.2, 4.22.5 и 4.21.9 с устранением уязвимости (CVE-2025-10230) в реализации сервера разрешения имён WINS, позволяющей добиться удалённого выполнения своего кода на сервере без прохождения аутентификации. Проблеме присвоен наивысший уровень опасности - 10 из 10...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=64062
Не стоит ставить 10/10 уязвимостям, которые у нас васянов по дефолту отключены.
Я бы сказал что это вообще не уязвимость а служебная функция. Васян зачем-то удумавший запускать какие-то баш-скрипты из WINS (ШТОА?!) еще и до авторизации - недоволен что скрипты, ну надо же - запускаются.Причем на какой-такой случай ядерной войны придумана эта ненужная ненужна - наверное уже даже сами авторы самбы не вспомнят.
Ну, я лет эээ... 15? назад через этот (Вроде бы этот, но зуб не дам) механизм отдавал пользаку ближайший к нему включенный (!) сетевой принтер. Не то, чтобы без этого нельзя было бы обойтись, это хорошо работало и сильно упрощало процесс печати - но я был моложе и глупее...
> не очищались от спецсимволов, что позволяло
> добиться выполнения произвольных shell-командДидовые башпортянки наносят ответный удар. Опять!
Олично спроектированная система))
надо было на безопасном языке писать
*переписывать
А что, чекер боровов уже и передаваемые аргументы от спецсимволов чистит?
> А что, чекер боровов уже и передаваемые аргументы от спецсимволов чистит?Но ведь он ничего не говорил про Раст. Как же смешны местные воины против ветряных мельниц...
Но ведь ты же говорил про альтернативы портянкам. Как же они называются?
> Но ведь ты же говорил про альтернативы портянкам.Нет, не говорил. Где ты это увидел?
Сами приписывают другим утверждения про Раст и прочий бред - и сами выводят их на чистую воду. Господи, ну и цирк. Что с вами не так?
да и вообще, башпортянки принято менять на системд, а не вот это вот всё
>> А что, чекер боровов уже и передаваемые аргументы от спецсимволов чистит?
> Но ведь он ничего не говорил про Раст.Говорил он про Раст или нет - это не имеет никакого значения. Видал, сколько плюсиков поставили? Все, дружок: бравые воины нанесли очередной сокрушительный удар по Расту! 😂
> Дидовые башпортянки наносят ответный удар. Опять!Деды считали, что привилигированные процессы не должны получать данные и команды от пользовательских. Это святое правило деды строго чтили соблюдали. Например init не принимал команды от пользователей.
И все с безопасностью было хорошо, но тут пришел вредитель потеринг, которого заслали для порчи системы. Он не разобрался как пользователь может дать команду дедовскому init для выключения компьютера. И решил что пользователь может передавать команды привелигорованным процессам через фильтры на JS и polkitd.
> Олично спроектированная система))
Поблагодари вредителя потеринга.
>> имена NetBIOS... не очищались от спецсимволов, что позволяло добиться выполнения произвольных shell-команд
> Дидовые башпортянкиУязвимость в дырявой самбе, а виноваты башпортянки
> а виноваты башпортянкиБашпортянки defective by design c их необходимостью экранировать все и вся.
С другой стороны, что еще ожидать от такой древности.
На что ты заменишь на пхп или джаваскрипт?
Э, ты буквально передаёшь сурсы в интерпретатор. Покажи-ка мне хоть один ЯП, который устойчив перед такими приколами. Си? Раст? Питон? JS? Да даже луа со своими '[aboba[ a = 69 ]aboba]' и XML с CDATA не гарантируют вам того, что модифицируя сурсы структура не поменяется. Правильное решение - это не принимать код от неавторизованного клиента вообще, только данные, и с чтением данных у баша всё в порядке.
Шёл 2025 год, а сишники за более чем пятьдесят лет так и не научились программировать.
>Э, ты буквально передаёшь сурсы в интерпретатор.В 2025 году работать с сырыми строками должно быть стыдно.
>Покажи-ка мне хоть один ЯП, который устойчив перед такими приколами.Любой, как только вы научитесь пользоваться построителем запросов. На строготипизированном типобезопасном языке это будет проще сделать. Слово типобезопасный - термин.
>Правильное решение - это не принимать код от неавторизованного клиента вообщеА как вы собрались проверять, где данные, а где код? Правильное решение - наконец-то перестать работать с сырыми строками, так как компилятор их вообще никак на корректность не проверяет.
В примере выше команда является деревом, что хорошо видно, если записать её в виде s-выражения
(/bin/sh sh -c (%s %s %s %02x %ld))
Как следствие, нам нужен рекурсивный тип данных, как минимум такой(на самом деле, он будет сложнее, так как есть и перенаправление вывода, и конвеер и куча всего остального)Вот псевдокод на Ocaml
type cmd =
| Value of string
| Command of cmd listТогда простейший вариант
echo "hello world"
будет выглядеть так
Command [Value "echo"; Value "hello World"]
Допустим, мы его хотим вложить в sh -c как в коде с уязвимостью. Не вопрос
Command [Value "sh"; Value "-c"; Command [Value "echo"; Value "hello World"]]
А теперь вложим ещё раз
Command [Value "sh"; Value "-c"; Command [Value "sh"; Value "-c"; Command [Value "echo"; Value "hello World"]]]
Ну а дальше, при вычислении этого выражения автоматически будут экранированны нужные значения.И соответственно строка для запуска программы должна иметь что-то вроде
val exec_safe : string -> string -> cmd list -> 'a
И итоговый вариант что-то вроде
exec_safe "/bin/sh" "sh" [Value "-c"; Command [Value wins_hook_script; (*тут оставшаяся часть команды *)]]
А теперь просто представьте, как закипят мозги сишника, когда для вызова простейшей программы ему нужно без автоматического управления памятью построить дерево.
Справедливости ради, в башпортянках точно таких же уязвимостей с полным отсутствием экранирования тоже хватает.
Мы подаем необработанный пользовательский ввод в командную строку, что может пойти не так?
В общем форменный xkcd/327.
Ну смотри, вот создатели, хотя скорее опакечиватели, томкета не такие. Они сломали работу на 80 порту и работу от рута, сломали максимальное количество файлов которое может открыть сервис и сказали - теперь оно безопасно, т.к. не юзабильно.Хочешь пользовать - откати наши "защиты" вот тут, тут и тут, вектор атаки будет такой-то, но теперь это твоя ответственность, пользователь.
Так что всегда есть альтернатива.
Это как-то отменяет тот факт, что на сервере буквально торчит вариация 'curl | bash'?
Ну прекрасно.Вместо того, чтобы написать (или взять готовый) билдер строки для exec с экранированием каждого аргумента (да, script придется сначала распарсить на токены - ну и?), имеем вот такое:
/*
+ * Test that the WINS server does not call 'wins hook' when the name
+ * contains dodgy characters.
+ */
+static bool nbt_test_wins_bad_names(struct torture_context *tctx)А потом будут удивляться, когда кто-то найдет не предусмотренный в этих bad names вариант.
Но имя комитерп конечно же нам не сообщишь. Это же не Jia Tan, это другое.
да я не знаю, я патч скачал и посомтрел
> Вместо того, чтобы написатьРуки отрубать сразу за наличие RCE.
Разрешённые символы: SPC, a-z, A-Z, 0-9. Если вы боитесь писать такой парсер (с учётом того, что вся нужная память уже выделена и размеры полей известны), то вам нужно прекратить программировать прямо сейчас.
>Разрешённые символы: SPC, a-z, A-Z, 0-9.Мы в каком году - 1965 или 2025? Я уже молчу про юникод, здесь даже банально аски нет.
>с учётом того, что вся нужная память уже выделена и размеры полей известныТолько вот это должен проверять компилятор, а не погромист под честное слово.
>Вместо того, чтобы написать (или взять готовый) билдер строки для exec с экранированием каждого аргументаЭто сишники, они никогда не берут чужие библиоеки. Вместо этого они всегда пишут свои дырявые велосипеды.
> никогда не берут чужие библиоеки
> всегда пишут свои дырявые велосипедыРано или поздно кто-нибудь да напишет собственный "дырявый велосипед"...
А что вообще самба, на сколько реально на этом вашем линуксе заменить домен контроллер?
Реально на 100%
Есть реальный примеры, когда мигрировали с виндового домена без потери функциональности?
Конечно нет. В самбе нет такого гуя как в виндовс сервере. А это весьма существенная функциональность. Говорят что можно типа rsat прикрутить к самбе, типа будет похоже.
> Конечно нет. В самбе нет такого гуя как в виндовс сервере. А
> это весьма существенная функциональность. Говорят что можно типа rsat прикрутить к
> самбе, типа будет похоже.А можете нубу объяснить, зачем вообще дырявая и всю дорогу проблемная и неродная самба на линуксах, когда есть православный nfs?
Это что, такая спецолимпиада такая, прикручивать йаца ужа к ежу и ожидать что всё будет норм?
разграничение прав на уровне пользователя, аутентификация, шифрование траффика
и готова спецолимпиада на тему нфс
И какую задачу ты не смог решить на линуксе?
Не смог ответить на бонусный вопрос - зачем вся эта мутотень шашечками нфс, когда можно спокойно ездить на самбе/ссхфс.
Судя по распространенности нфс с самбой, вопрос оказался риторическим.
> без потери функциональности?Функциональности бэкдоров?
Какая "неожиданная" "случайность"
Исправили они это путём прогона name через isalnum.Но вот в bash переменные предлагается заключать в кавычки и любой символ не запрещается в значении. И bash выполнит exec без shell injection. Почему нельзя также?
Другой вопрос, а что вообще предполагалось передавать в поле winws hook в самом протоколе SMB. В винде никакого баша, когда это придумывали, не было. И учитывая отсутствие пробелов в примере, кажется там должно быть как раз слово, попадающее под [-_a-zA-Z0-9].
>Уязвимость в Samba, позволяющая удалённо выполнить код на сервереШо, опять?!
>>Клиент без аутентификации _МОЖЕТ_ отправить... любое имя NetBIOSА разве не очевидно, что раз отправить могут что угодно, то это забота сервера проверять, всё что ему отправили.
Классика - "Что может пойти не так" :)
А багу то почти 20 лет...https://gitlab.com/samba-team/samba/-/commit/93409faddf610e7...
Странно... Почему-то программисты на расте не могут исправить эту сишную дырень...