LINUX.ORG.RU
ФорумTalks

curl уязвим, но я вам не скажу, какие версии

 


0

4

Разраб (?) curl оповестил о том, что в curl найдена серьёзная уязвимость, жутчайшая за много лет. Мейнтейнеры дистрибутивов оповещены, детали 11 октября.

https://github.com/curl/curl/discussions/12026

I cannot disclose any information about which version range that is affected, as that would help identify the problem (area) with a very high accuracy so I cannot do that ahead of time. The "last several years" of versions is as specific as I can get.

We have notified the distros mailing list allowing the member distributions to prepare patches. (No one else gets details about these problems before October 11 without a support contract and a good reason.)

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

★★★★★

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

Не пострадает. У сишки только такая репутация и есть.

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

Очень много чего пострадает. И поделом.

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

Ты попробуй это упертым сишникам объяснить. Будет же стандартная мантра про то, что все вокруг πдорасы и не умеют в Божественную Сишечку

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

А какие ваши доказательства, что данная уязвимость вообще от ЯП зависит? Может быть, там, грубо говоря, на ноль делят…

seiken ★★★★★
() автор топика

Мейнтейнеры дистрибутивов оповещены, детали 11 октября.

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

Какое же убогое зрелище эта ваша сисюрити.

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

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

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

Конечно не умеют. Это очень острый инструмент. Не умеешь не берись. Если надо, обмажся статическими анализаторами вместе с MISRA и живи спокойно.

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

telnet. И да, еще нужно научиться писать с клавиатуры запросы и читать ответы в формате SSL, но это так, мелочи

r0ck3r ★★★★★
()

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

Только wget, только хардкор!

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

Во-первых, наверно не только http, а ещё и https иногда. Во-вторых, зависит от языка и платформы. В-третьих, для этого точно не нужен комбайн, который умеет ВСЕ протоколы.

Из того, что я делал:

1) для шелла: wget/fetch

2) всякое на пхп: file_get_contents() для простого (оно не поддерживает POST и не возвращает заголовки ответа), fsockopen() или stream_socket_client() для сложного (полный контроль)

3) на си под unix, http: если не нужен https то socket(), bind(), connect(), шлём запрос send() и читаем ответ recv()

4) на си под unix, https: вместо сокетных операций openssl-обёртка (я её засунул в отдельный процесс т.к. openssl дырявое, и наружу она видна как всё тот же сокет)

5) на си под оффтопик, https: include <winhttp.h>

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

MISRA

https://en.wikipedia.org/wiki/MISRA_C#Categorization

Avoiding using functions and constructs that are prone to failure, for example, malloc may fail

Ну-ну. За пределами эмбедеда это мало применимо. Где увидеть сишную реализацию, например, списков, не использующую malloc() или realloc()? Вот, авторам sway понадобились списки. И результат realloc() никто не проверяет. Тупо присваивают этот результат указателю на уже используемую память в куче. Это, скорее всего, не уязвимость, но sway тупо упадет с сегфолтом, если realloc() вернет NULL. А пользователь долго будет ковыряться в попытках понять, почему у него внезапно рухнул оконный менеджер

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

Наверняка пользовался косвенно, используя софт, слинкованный с libcurl.

А сам curl удобен чтобы делать запросы и получать ответы в CLI. Я часто юзаю (больше в скриптах), но могу представить, что он не каждому нужен.

Наверняка уязвимость задевает не только утилиту, но и либу, и вот это самое неприятное в данной новости.

CrX ★★★★★
()
Ответ на: комментарий от firkax
  1. для шелла: wget/fetch

curl поддерживает гораздо больше фич, методов аутентификации, компрессию. Curl - стандарт же факто, а wget удобен просто для скачивания файлов.

  1. на си под unix, http: если не нужен https то socket(), bind(), connect(), шлём запрос send() и читаем ответ recv()

Ну т.е. переизобретаешь колесо, ну ОК.

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

Ну т.е. переизобретаешь колесо

Это не всегда плохо, особенно если в приоритете минимализм и контроль над кодом.

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

Avoiding using functions and constructs that are prone to failure, for example, malloc may fail

Ух ты, а я тоже malloc стараюсь избегать. Ну то есть - не фанатично его истребляю в ущерб функционалу, но если можно без него - делаю без него.

Где увидеть сишную реализацию, например, списков

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

но sway тупо упадет с сегфолтом

Если он упадёт с понятной ошибкой «out of memory» - будет не сильно лучше. Хотя конечно лучше. Но тут речь, думаю, про другое: он вообще падать не должен. Во-первых, если закончилась память, надо отказать в добавлении элемента в список, но продолжать работать с остальных аспектах. Во-вторых, нужно гарантировать что в список влезет хотя бы 100 (или другое количество) элементов, не зависящих даже теоретически от внутренних особенностей реализации аллокатора. Либо ещё на старте программы выдать «ваша система не подходит».

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

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

Блаблабла. Покажи мне списки без malloc()/realloc(), а блаблабла мне неинтересно

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

У тебя годный подход, но он идёт вразрез с современной экономической парадигмой, которая заключается в генерации говнища как можно быстрее

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

Ясен-красен лучше раскрыть не вместе с патчами и пакетами, а за неделю до них. --sarcasm

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

Наверняка пользовался косвенно, используя софт, слинкованный с libcurl.

Может быть, мимоходом. Основные потребители http - браузер и apt, они курл точно не используют. Ну и выше указанные способы обратиться к сайтам, которые я сам использую. Раньше использовал transmission (тут писали что он зависит), но он глючный и я перестал. Потом использовал qbittorrent вместо него, у него в ldd курла не вижу. Кто ещё может лезть на сайты (видимо тайком) - не знаю, но если выявлю такие проги (не важно, курлом или как, важно что тайком) то приму меры чтоб они это не делали.

А да забыл, yt-dlp - не знаю чем он качает, может там есть.

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

Если он упадёт с понятной ошибкой «out of memory» - будет не сильно лучше

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

И да, ты уже продемонстрировал типичное поведение сишкофанатиков: тебе насрать на граничные случаи, на неопределенное поведение и уязвимости; любой потенциальный источник проблем в коде ты готов оправдать в духе «Ну это фигня! Зато я настоящий хацкер, а не обезьяна с растом!!!»

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

curl поддерживает гораздо больше фич, методов аутентификации, компрессию.

Дело как раз в том, что все эти «методы аутентификации» и прочие комбайнофичи обычно не нужны. И незачем их тянуть. Только лишняя поверхность атаки.

Ну т.е. переизобретаешь колесо, ну ОК.

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

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

но он идёт вразрез с современной экономической парадигмой

Он идет в разрез с нормальным программированием и написанием качественного кода, а не с экономической парадигмой.

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

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

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

По старинке, телнетом или s_client и ручками, ручками, всё как диды завещали :)

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

Лучше осиль мой комментарий. Сегфолт при невозможности выделить дополнительную память – это признак говнокода. Мне насрать, что в конкретном примере со свайкой это может не иметь серьезных последствий.

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

то результаты не оч похожи на качественный код

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

По-твоему, подход @firkax позволит генерировать качественный код? copypaste-driven development и отрицание модульного программирования и переиспользования кода – это теперь best practices? Ну ок.

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

Ты всё-таки не осилил его прочитать. Если бы осилил, то увидел бы, что я полностью согласен, что лучше результат проверять и выдать осмысленное «out of memory» вместо сегфолта (на всякий случай: там дальше ещё есть текст, лучше всё-таки дочитай). Но ты прочёл одну фразу и начал фанатично спорить со своеё её интерпретацией, забыв про всё остальное.

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

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

Ааааааа, ору ) Т.е. malloc избегаешь и делаешь свою реализацию malloc? Типикал сишник с переизобретением криво-косо слепленных велосипедов для каждого проекта.

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

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

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

Вот тебе пример: .h .c.

Ещё раз уточню: это не «реализация списков просто так», это именно реализация конкретного списка (точнее, списка+хеш-таблицы) для конкретной задачи, без лишних абстракций.

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

Мдя. Вы там все аутисты чтоле?

Никто не спорит с тем что Си очень опасен. Очень опасен. Но это не значит, что им нельзя пользоваться. Пользуйся, просто будь щепитилен.

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

Опять необоснованно завышенные ожидания от реальности?

Все остальное, это следствие завышенных ожиданий.

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

Если для тебя это очевидно, это замечательно.

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

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

Очередной гвоздь в крышку гроба репутации сишки

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

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

Это я не буквально имело в виду, а смысл такой, что не все уязвимости сводятся к некорректной работе с памятью. Есть куча других вещей, уязвимости в протоколах, ошибки в реализации криптографии, всевозможные injections. И эту кучу вещей можно творить хоть на С, хоть на расте, они не зависят от особенностей конкретного ЯП.

seiken ★★★★★
() автор топика
Закрыто добавление комментариев для недавно зарегистрированных пользователей (со score < 50)