В широко используемой Linux-утилите Curl обнаружена неприятная ошибка, и уже выпущены исправления
Curl встроен и незаметно используется во многих дистрибутивах Linux. В нем была обнаружена и исправлена неприятная дыра в безопасности.
По большей части обычные пользователи Linux не знают, что такое Curl. Однако программисты и системные администраторы хорошо знают эту утилиту.
Эта команда оболочки и связанная с ней библиотека libcurl используются для передачи данных по каждому сетевому протоколу, о котором вы когда-либо слышали, и используются в настольных компьютерах, серверах, облаках, автомобилях, телевизорах, маршрутизаторах и практически во всех Интернетах вещей. (IoT) устройство. По оценкам разработчиков Curl, он используется более чем в двадцати миллиардах случаев. И теперь в нем есть потенциально опасная ошибка безопасности, CVE-2023-38545.
Насколько противно? Ведущий разработчик Curl Дэниел Стенберг написал в своем блоге, что это «самая серьезная проблема безопасности, обнаруженная в Curl за долгое время». Он должен знать.
Эксперты по безопасности согласны. Одним словом это плохо.
Как предупредил Саид Аббаси, менеджер по продукту отдела исследования угроз Qualys:
Организации должны действовать быстро, выполняя инвентаризацию, сканирование и обновление всех систем, использующих Curl и libcurl. В частности, серьезность уязвимости высокой степени серьезности требует немедленного и осторожного внимания к защите взаимосвязанных и веб-приложений, гарантируя, что богатые функциональные возможности передачи данных, предоставляемые Curl и libcurl, остаются неизменными и безопасными.
В частности, дыра в безопасности может возникнуть, когда кто-то использует прокси-протокол SOCKS5. Этот довольно простой протокол устанавливает сетевое соединение через выделенного «посредника». Протокол используется при общении через Tor, интернет-программное обеспечение с открытым исходным кодом, используемое для обеспечения анонимного общения и частного доступа к Интернету изнутри организаций и компаний. Некоторые виртуальные частные сети, такие как NordVPN, Частный доступ в Интернет и Hide.Me предлагают его, чтобы позволить своим пользователям обходить блокировки интернет-контента и обеспечивать свою анонимность.
В разговоре с Mastodon Стейнберг сказал: «Возможно, наиболее реалистично то, что пользователь Tor (который обычно использует SOCKS5), заходящий на сайт HTTPS, который был взломан или аналогичный», с наибольшей вероятностью попадет в эту дыру в безопасности.
CVE-2023-38545 — это дыра, связанная с переполнением кучи памяти. Возможно, его можно использовать для удаленного выполнения кода. Уже есть доказательства концепции, показывающие, как можно провести атаку с использованием завиткового отверстия.
Дыра в безопасности была обнаружена в феврале 2020 года и затрагивает версии libcurl от 7.69.0 до 8.3.0 включительно.
Штейнберг смущен своей ошибкой:
Читая код сейчас, невозможно не увидеть ошибку. Да, мне действительно больно признавать тот факт, что я совершил эту ошибку, не заметив этого, и что ошибка оставалась необнаруженной в коде в течение 1315 дней. Я прошу прощения. Я всего лишь человек. … Оглядываясь назад, я бы не советовал использовать переполнение кучи в коде, установленном более чем в двадцати миллиардах экземпляров.
Не все думают, что это так уж важно. Билл Демиркапи, член группы по устранению уязвимостей и смягчению последствий Центра реагирования безопасности Microsoft, написал в Твиттере, также известном как X, что «наихудшая проблема безопасности, обнаруженная в Curl за долгое время», доступна только в том случае, если жертва использует прокси-сервер SOCKS5. & подключается к мошенническому серверу или подвергается атаке MitM [Человек посередине]? Я снова иду спать».
Менее язвительно заметила компания JFrog, занимающаяся поставками программного обеспечения:
Можно с уверенностью предположить, что эта уязвимость будет широко использоваться для удаленного выполнения кода, при этом будут разрабатываться более сложные эксплойты. Однако набор предварительных условий, необходимых для того, чтобы машина стала уязвимой (см. предыдущий раздел), является более ограничительным, чем первоначально предполагалось. Поэтому мы считаем, что подавляющее большинство пользователей Curl не затронет эта уязвимость.
Если быть точным, предварительными условиями, необходимыми для того, чтобы проблема превратилась в пожар безопасности, являются:
Запрос на завивку выполняется через socks5h.
Буфер переговоров конечного автомата Curl меньше ~65 КБ.
Ответ «привет» сервера SOCKS задерживается.
Злоумышленник устанавливает имя хоста конечного пункта назначения, превышающее размер буфера переговоров.
Это очень много предпосылок.
Тем не менее, учитывая широкое использование Curl в различных операционных системах, приложениях и устройствах Интернета вещей, раннее объявление Стейнбергом проблемы было разумным стратегическим шагом. Это дало организациям достаточно времени для аудита своих систем, выявления всех используемых экземпляров Curl и libcurl и разработки комплексного плана внесения исправлений в масштабах всего предприятия.
Проект Curl на этом не остановился; информация об ошибках одновременно передавалась разработчикам различных Linux, Unix и Unix-подобных дистрибутивов. Такой совместный подход гарантировал, что исправления и обновленные пакеты будут готовы до официального выпуска Curl v8.4.0.
Поэтому и я, и проект Curl настоятельно рекомендуем пользователям обновить Curl/libcurl до версии 8.4.0 или применить исправления к более старым версиям, чтобы снизить риски, связанные с этими уязвимостями.
Поскольку libcurl/curl является компонентом по умолчанию во многих дистрибутивах Linux и встроен в многочисленные образы контейнеров, пользователям Linux следует проявлять бдительность и следить за выпусками этих поставщиков. Большинство крупных дистрибьюторов Linux уже выпустили эти исправления.