Обнаружена неприятная ошибка в широко используемой утилите Linux curl, и патчи уже выпущены

Обнаружена неприятная ошибка в широко используемой утилите Linux curl, и уже выпущены исправления

abstract security hole

В большинстве случаев обычные пользователи Linux не знают, что такое curl. Однако программисты и системные администраторы хорошо знакомы с этой утилитой.

Эта команда оболочки и связанная с ней библиотека libcurl используются для передачи данных по всем сетевым протоколам, о которых вы когда-либо слышали. Они используются в компьютерах, серверах, облачных решениях, автомобилях, телевизорах, маршрутизаторах и практически в каждом устройстве интернета вещей (IoT). Разработчики estimiруют, что curl используется в более чем двадцати миллиардах случаев. А теперь в нем обнаружена потенциально неприятная уязвимость, CVE-2023-38545.

Также: Google Cloud, AWS и Cloudflare сообщают о самых больших DDoS-атаках

Как плохо? В блоге ведущего разработчика Curl, Даниэля Стенберга, написано, что это “самая серьезная проблема безопасности, найденная в curl за долгое время.” Он должен знать.

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

Как предупредил менеджер продукта отдела исследования угроз Qualys Saeed Abbasi:

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

Конкретно, уязвимость может быть эксплуатирована при использовании протокола прокси SOCKS5. Этот довольно простой протокол устанавливает сетевое взаимодействие через выделенного “посредника”. Протокол используется при связи через Tor, программного обеспечения с открытым исходным кодом, используемого для обеспечения анонимного взаимодействия и доступа к интернету из организаций и компаний. Некоторые VPN (виртуальные частные сети), такие как NordVPN, Private Internet Access и Hide.Me, также используют его, чтобы обеспечить пользователям доступ к интернет-ресурсам, обойти блокировку контента и сохранить их анонимность.

В беседе в Mastodon Стейнберг сказал: “Скорее всего, самому уязвимому станет пользователь Tor (который обычно использует SOCKS5), переходящий на взломанный или подобный HTTPS-сайт”.

Также: 7 вещей, которые даже новые пользователи Linux могут сделать, чтобы обеспечить безопасность ОС

CVE-2023-38545 представляет собой уязвимость переполнения кучи памяти. Возможно, она может быть использована для удаленного выполнения кода. Уже существуют доказательства концепции, демонстрирующие, как можно провести атаку с использованием уязвимости в curl.

Уязвимость была введена в феврале 2020 года и затрагивает версии libcurl от 7.69.0 до 8.3.0, включительно.  

Штайнберг стыдится своей ошибкой: 

Читая код, невозможно не видеть ошибку. Да, по-настоящему больно признавать факт, что я сделал эту ошибку, не заметив ее, и что уязвимость оставалась недостаточно известной в коде в течение 1315 дней. Я приношу извинения. Я только человек… Вспоминая прошлое, поставить кучу переполнения в коде, установленном в более чем двадцати миллиардах экземпляров — не опыт, который я рекомендую.

Не все считают это такой большой проблемой. Билл Демиркапи, член команды отдела по реагированию на уязвимости и контрмерам безопасности Microsoft, написал в Твиттере, также известном как Х, что «’наихудшая проблема безопасности, найденная в curl за долгое время’, доступна только в случае, если жертва использует прокси SOCKS5 и подключается к поддельному серверу или подвергается атаке MitM [Man in the Middle]? Я вернусь спать».

Более серьезно, компания-поставщик программного обеспечения JFrog заметила:

Можно с уверенностью полагать, что эта уязвимость будет использоваться в дикой природе для удаленного выполнения кода, и будут разрабатываться более сложные эксплойты. Однако – набор необходимых предусловий, чтобы машина оказалась уязвимой (см. предыдущий раздел), ограниченнее, чем изначально предполагалось. Поэтому мы считаем, что подавляющее большинство пользователей curl не пострадает от этой уязвимости.

Для точности, предусловия, необходимые для возникновения проблемы в curl, следующие:

  1. Запрос curl выполняется через socks5h.

  2. Буфер для согласования состояния машины curl меньше ~65k.

  3. Ответ поздоровался SOCKS-сервера задерживается.

  4. Злоумышленник устанавливает окончательное имя хоста, превышающее размер буфера согласования.

Это много предусловий. 

Тем не менее, учитывая широкое использование Curl в различных операционных системах, приложениях и устройствах IoT, раннее объявление Штайнберга о проблеме было мудрым стратегическим ходом. Оно дало организациям достаточно времени для аудита их систем, обнаружения всех случаев использования curl и libcurl и разработки всестороннего плана для патчей во всей организации.

Также: Новейший обнаруженный вредоносный код для Android заражает тысячи устройств

Проект curl не ограничился этим; информация о проблемах была одновременно предоставлена разработчикам различных дистрибутивов Linux, Unix и Unix-подобных. Такой совместный подход позволил готовить патчи и обновленные пакеты до официального выпуска curl v8.4.0.

Поэтому я и проект curl настоятельно рекомендуем пользователям обновить curl/libcurl до версии 8.4.0 или применить патчи к более старым версиям для устранения рисков, связанных с этими уязвимостями. 

Поскольку libcurl/curl является компонентом по умолчанию во многих дистрибутивах Linux и встроен во множество контейнерных образов, пользователи Linux должны быть бдительны и следить за обновлениями от этих поставщиков. Большинство ведущих дистрибьюторов Linux уже выпустили патчи.