URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID3
Нить номер: 133381
[ Назад ]

Исходное сообщение
"Уязвимость BatBadBut, затрагивающая стандартные библиотеки различных языков программирования"

Отправлено opennews , 10-Апр-24 11:05 
Приложения, запускающие сценарии в формате bat и cmd на платформе Windows при помощи штатных функций запуска процессов, подвержены уязвимости, позволяющей добиться выполнения своего кода в случае передачи при запуске аргументов без отдельного экранирования спецсимволов. Уязвимость получила кодовое имя BatBadBut и проявляется в приложениях, использующих стандартные библиотеки таких языков, как Rust, PHP, Node.js, Python, Ruby, Go, Erlang и Haskell...

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


Содержание

Сообщения в этом обсуждении
"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Шарп , 10-Апр-24 11:05 
А ещё остались люди, кто серваки на винде держит?

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 11:12 
Это будет использоваться не на серваках, совсем не на серваках.
Вернее, подозреваю, давно используется не на серваках.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Анон666 , 10-Апр-24 11:12 
В mission critical сегменте куча винды.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 11:24 
Прям настолько жёстком?


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Минона , 10-Апр-24 22:59 
Не, жесткое это mission impossible.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 23:34 
> В mission critical сегменте куча винды.

Вот только на винде бы mission critical и делать, да...


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 23:42 
> В mission critical сегменте куча винды.

Пример Йорктауна так никого ничему и не научил...


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 18-Апр-24 07:11 
О чём речь?

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено randomize , 07-Июн-24 21:01 
https://www.wired.com/1998/07/sunk-by-windows-nt/
> The source of the problem on the Yorktown was that bad data was fed into an application running on one of the 16 computers on the LAN. The data contained a zero where it shouldn't have, and when the software attempted to divide by zero, a buffer overrun occurred -- crashing the entire network and causing the ship to lose control of its propulsion system.

Зачем проверять данные, лол.


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 11:53 
Apache c PHP 5 под 98 виндой гоняю на ретропк, наполняю базу данных через Web-морду. Одновремено захожу с IE5 и смартфона. Если система тянет, пусть живет. Уникод поддерживается, через JSON-файлы можно осуществлять экспорт на продакшен под Linux.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 19:42 
Еще осталось очень много людей, а среди них каких только нет, есть даже такие, кто серваки на винде держит.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 15-Апр-24 22:23 
Печально, когда и если ещё и батнички живы... Такая махровая халтура и так долго прожила.

Занятно. Но тоскливо.


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 11:13 
> Уязвимость BatBadBut, затрагивающая стандартные библиотеки различных языков программирования

Правильный заголовок будет "Уязвимость BatBadBut, затрагивающая стандартные библиотеки различных языков программирования в Windows"

Дело не в языках, а в супер надежной проприетарной системе (как нам завещал товарищ birdie)


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 12:00 
> Дело не в языках, а в супер надежной проприетарной системе (как нам
> завещал товарищ birdie)

Как хорошо что в линуксе нет башскиптов, которые могут и рут подарить, и обфуцировать код для бекдора и даже нафиг удалить все файлы юзеров!
Или есть?



"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Анании.orig , 10-Апр-24 14:15 
При чем тут скрипты вообще?
> в Windows при использовании API CreateProcess аргументы оформляются в виде одной строки

Зыж
Вот взял и раст скриптами обозвал
Да так любой экзешник можно заставить cmd.exe вызвать.


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 16:05 
И питонятины повсюду тоже нет.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено AKTEON , 10-Апр-24 20:48 
> линуксе нет башскиптов

В линуксе даже и  обход антивируса gmail из коробки стоит ,бггг


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 11-Апр-24 15:07 
> башскиптов, которые могут и рут подарить

После ввода пароля рута.

> удалить все файлы юзеров!

Только те, с правами которых запущен процесс. А ты хотел бы вводить пароль пользователя при создании/удалении/перемещении каждого файла? ACL и sudoers тебе в руки. Но зачем? Может, просто ставить программы пакетником и не запускать всякую дрянь с файлопомоек, как принято в Винде?


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 11:18 
>В Rust 1.77.2 в стандартную библиотеку добавлена дополнительная проверка, возвращающая ошибку при наличии в аргументе запускаемого сценария спецсимволов, которое невозможно гарантированно безопасно экранировать.

Не понял, а что Rust ещё и в качестве интерпретатора используется?


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено ананим.orig , 10-Апр-24 16:13 
> в Windows при использовании API CreateProcess аргументы оформляются в виде одной строки

в Windows любой экзешник превращается в интерпретатор


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 11:28 
Что, Fabric уже посчитали одной большой уязвимостью?

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено bOOster , 10-Апр-24 11:42 
Мдее, Раст и иже с ними оказались дырявыми совсем не в том месте где ожидалось... Год назад говорил об этом. И количество этих дыр будут РАСТи..

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 11:43 
> Проекты Python, Ruby, Go, Erlang и Haskell пока ограничились внесением в документацию предупреждения о проявлении уязвимости при отсутствии должного экранирования спецсимволов.

Не, ну это не серьезно...
И вообще, какое отношение виндопроблемы имеют к этому сайту?

А уязвимость нужно переименовать в BatBadButt.


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 12:05 
> И вообще, какое отношение виндопроблемы имеют к этому сайту?

Rust, node.js,  Python, Ruby, Go, Erlang и Haskell уже перестали быть открытыми проектами?
Ах да, давайте тогда прекратим публиковать новости о ядре Linux, ведь оно запускается на оборудовании с проприетарными прошивками.


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 12:16 
> уже перестали быть открытыми проектами

Не перестали. И?

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

> тогда прекратим публиковать новости о ядре Linux, ведь оно запускается на оборудовании с проприетарными прошивками.

Не нужно пытаться натянуть сову на глобус.


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Анониссимус , 10-Апр-24 18:09 
Почему же не интересуют. После тонны линуксовых дыр очень приятно почитать, что вантузе всё ещё хуже.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 11-Апр-24 15:03 
> После тонны линуксовых дыр

Закрытых дыр.

> что вантузе всё ещё хуже

И останется во веки веков.


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 12-Апр-24 13:08 
Для опеннета эта новость скорее характерна.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 11:48 
Для хаскеля уже есть патч.

В списке еще забыли жабу. Они оригинально решили проблему
Java     Won’t fix

Appendix B: Status of the affected programming languages
flatt.tech/research/posts/batbadbut-you-cant-securely-execute-commands-on-windows/


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Массоны Рептилоиды , 10-Апр-24 12:30 
Проблемы индейцев шерива не волбуют

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 11:52 
Это же не баг, а фича.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 12:34 
>Приложения, запускающие сценарии в формате bat и cmd на платформе Windows при помощи штатных функций запуска процессов

Столько лет - и всё одно и то же: "я разраб, мне так удобно, программа поставляется AS IS, не нравится - не используй". Это не уязвимости, это всё by design. Даже упоминания не стоит.


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено n00by , 10-Апр-24 13:30 
> The application doesn’t specify the file extension of the command,
> or the file extension is .bat or .cmd

Что бы могло сработатать, надо запускать экзешник, указав его имя без расширения. Кто и зачем мог бы такое прописать в своём коде?


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 13:50 
>> The application doesn’t specify the file extension of the command,
>> or the file extension is .bat or .cmd
> Что бы могло сработатать, надо запускать экзешник, указав его имя без расширения.
> Кто и зачем мог бы такое прописать в своём коде?

С другой стороны никто ж не запрещает делать так
rm -rf /usr /lib/nvidia-current/xorg/xorg


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено балдымалдыбар , 10-Апр-24 17:40 
почему не
rm -rf /usr /lib / nvidia-current/xorg/xorg
?

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Зазнайка , 10-Апр-24 21:07 
Потому-что это мем про код из бамблби (насколько помню)

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено n00by , 10-Апр-24 19:23 
В Винде для запуска чего ни попадя есть ShellExecute.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Пряник , 10-Апр-24 13:49 
Уже 12 часов назад вроде пофиксили в Rust 1.77.2.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 14:55 
А сколько там еще уязвимостей и бэкдоров не пофикшено и тихо ждут своего времени?

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 15:55 
В windows? За десятилетия не разгрести, но ms-индусы не спешат, и потому приходится лепить велосипеды внутри стандартных либах ЯП.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 13:50 
Раст безопасный, говорили они
Раст не имеет уязвимостей, говорили они

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 15:56 
Так в Расте и нет, а вот в windows api "CreateProcess" есть.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено DiabloPC , 10-Апр-24 14:00 
В конце названия уязвимости еще одной буквы "t" не хватает

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 14:53 
>В Rust 1.77.2 в стандартную библиотеку добавлена дополнительная проверка, возвращающая ошибку при наличии в аргументе запускаемого сценария спецсимволов, которое невозможно гарантированно безопасно экранировать. Для разработчиков, самостоятельно реализующих логику экранирования предоставлен метод CommandExt::raw_arg, полностью отключающий экранирование на стороне библиотечных вызовов.

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


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 15:58 
Делаешь поехавшим безопасно - верещат про ограничения. Даёшь полный контроль - верещат, что не безопасно. Прямо агенты спецслужб, у которых отбирают сишку, в которой можно бекдоры внешне корректным кодом писать.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Tron is Whistling , 10-Апр-24 17:09 
Это две совершенно разных категории попрыгавших.
Причём вторая куда опаснее.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Зазнайка , 10-Апр-24 21:09 
Может и так, но слышно их одинаково громко

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 15:59 
> Вот такая она безопасность, в основном на словах.

У microsoft в windows? Не наговаривайте - birdie нам вещал, что там нет бекдоров! Это не уязвимость, а фича. Да еще за ваши деньги.


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Xasd7 , 10-Апр-24 16:52 
вот прикол!

то есть на венде Ядро передаёт СТРОКУ в процесс а не СПИСОК_аргументов...

и при этом -- каждая программа эту страку как хочет так и разбивает?!?! по своим правилам?!

ВОТ СМЕХУТО!! АХАХАХА!! ща умру!

то есть простая операция "убери первый аргумент и то что останется передай в другой следущий процесс" -- становится НЕ РЕАЛИЗУЕМОЙ по факту ВООБЩЕ! потому что возникает вопрос -- "погоди! а по каким правилам следущий процесс будет разбивать строку? по тем же самым что и мы сами тут у себя разбили?!"

я просто валяюсь! это сделало мой день!! :-D :-D :-D


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено n00by , 10-Апр-24 19:33 
Ядро там не передаёт в процесс строку. Процесс создаётся из пространства пользователя. Ядро лишь создаёт объекты ядра (секция, основной поток).

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 11-Апр-24 14:59 
А запуск процесса от основного потока и создание дополнительных потоков выполняется системными вызовами?

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено n00by , 12-Апр-24 12:17 
Процесс никуда не запускается - в Виндос это всего лишь изолированное от остальных адресное пространство, плюс вспомогательные структуры данных. Ядро отображает в то АП образ "экзешника", а всякие аргументы командной строки заполняет поток, вызвавший CreateProcess(). Основной поток нового процесса создаётся (если утрировать) через CreateRemoteThread(). Дополнительный поток процесса создаёт основной поток, естественно, системными вызовами.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 10-Апр-24 17:04 
Зачем чинить уязвимости проявляющиеся только на венде? Да ещё если это уязвимости самой венды.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Вы забыли заполнить поле Name , 10-Апр-24 19:27 
Чтобы было безопасно! Сейчас в моде безопасные языки, которое позволяют безопасно работать с памятью и не только. Все должно быть безопасно по умолчанию. Пользователь должен ощущать себя в безопасности. Надеюсь мой комментарий достаточно безопасно объясняет необходимость безопасности в современном небезопасном мире. Если нет, то прошу в безопасной манере описать проблему безопасности, чтобы я мог безопасно вам ответить.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено DiabloPC , 10-Апр-24 20:23 
Два чая этому господину! (Не сильно горячих, чтобы безопасно. И наливать в безопасную небьющуюсь кружку неразливайку)

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Bottle , 13-Авг-24 21:39 
И подавать механическим контроллером на Ос реального времени, написанной на Ada Spark.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено 1 , 10-Апр-24 17:07 
> При запуске bat- и cmd-сценариев на платформе Windows функция CreateProcess() неявно привлекает исполняемый файл cmd.exe, даже если приложение не указывает его при вызове.

В чём проблема-то ? Всё описано в мануале. Сколько раз при вызове system в *NIX это проходили ? Никто это уязвимостью не называл.

А писать
CreateProcess( NULL,"test", ...
вместо
CreateProcess( NULL,"/my/path/test.exe", ...
такое себе ...


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено n00by , 10-Апр-24 19:50 
> В чём проблема-то ? Всё описано в мануале.

Они уже сделали такое открытие.

In fact CreateProcess actively documents against using it this way:

    To run a batch file, you must start the command interpreter; set lpApplicationName to cmd.exe and set lpCommandLine to the following arguments: /c plus the name of the batch file.

https://github.com/rust-lang/rust/issues/123728


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 11-Апр-24 17:11 
Господа, приведите пожалуйста пример как на С правильно обрабатывать аргументы командной строки. Как дорвусь до компьютера напишу как это делаю я — сможете раскритиковать, но напишите как правильно это делать пожалуйста.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 11-Апр-24 17:17 
> Господа, приведите пожалуйста пример как на С правильно обрабатывать аргументы командной
> строки. Как дорвусь до компьютера напишу как это делаю я —
> сможете раскритиковать, но напишите как правильно это делать пожалуйста.

man 3 getopt


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 11-Апр-24 22:18 
А чем getopt безопаснее? Тем более что у него только определённое применение. Разве возможно с помощью getopt обработать данные с одинаковыми названиями? Ну или если вдруг последовательность имеет значение. Более того, обрабатывает ли он в целом аргументы на такие проблемы как специальные символы?
Насколько я вижу исходный код - вроде не похоже.
https://codebrowser.dev/glibc/glibc/posix/getopt.c.html

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 11-Апр-24 22:34 
> А чем getopt безопаснее?

Поищи CVE в getopt, если тебе нужен ответ. Помню пару лет назад было что-то подобное.

> Тем более что у него только определённое применение.

типичное.

> Разве возможно с помощью getopt обработать данные с одинаковыми названиями?

колхоз. отрефакторь интерфейс, используй getsubopt(3).

> Ну или если вдруг последовательность имеет значение.

см. предыдущий ответ.

> Более того, обрабатывает ли он в целом аргументы на такие проблемы как специальные символы?

чойта у тя мисформулировано. "обрабатывает ... аргументы на ... проблемы"?
Там char*, обрабатывай чем хочешь. Вдруг тебе нужно спецсимвол передать, типа $'\n', или обработать  аргумент на соответстие шаблону, getopt(3) и ко это не волнует, он делает для чего предназначен.

> Насколько я вижу исходный код - вроде не похоже.

не вы%бивайся.


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 11-Апр-24 23:19 
Ну вот так: echo hello & \e\c\h\o wo\rld \n
я получу что-то такое:
[2] 15915
world n
[1]   Done                    echo hello
hello
А вот так: echo hello \& \e\c\h\o wo\rld \n
получается такое:
hello & echo world n
[2]+  Done                    echo hello
То есть в консоле символ & почему-то не экранируется а \ экранируется как \\, но самим echo не выводится. Я в целом не С программист, но иногда использую дома и не понимаю почему символ & не экранируется? В целом в Linux та же может быть проблема при вызове system. И вот getopt мне кажется в этой проблеме никак не поможет.

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 11-Апр-24 23:46 
> Я в целом не С программист

тебе надо не С, а какой-нибудь учебник по юникс-лайк системам для чайников для начала. Шеллы там, пайпы, {fore,back}ground процессы, и т.д. И потом уже С.


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Аноним , 11-Апр-24 22:08 
Как-то так:
int main(int количествоАргументов, char *аргументы[])
{
    if (аргументы != NULL)
    {
        for (int и=1; и < количествоАргументов; и++)
        {
            if (аргументы[и] != NULL)
            {
                const char * аргумент = аргументы[и];
...
В итоге получается warning: unsafe buffer access [-Wunsafe-buffer-usage]|

"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено n00by , 12-Апр-24 12:32 
> Как-то так:
> int main(int количествоАргументов, char *аргументы[])
> {
>     if (аргументы != NULL)
>     {
>         for (int и=1; и
> < количествоАргументов; и++)
>         {

А где "аргументы" могут быть NULL? Вот требование стандарта:

If the value of argc is greater than zero, the array members argv[0] through argv[argc-1]
inclusive shall contain pointers to strings, which are given implementation-defined values
by the host environment prior to program startup.


"Уязвимость BatBadBut, затрагивающая стандартные библиотеки р..."
Отправлено Bottle , 13-Авг-24 21:40 
Очередная победа сишников и плюсовиков над растаманами!
Ничего даже делать не пришлось.