Обнаруженные уязвимости в сетевых библиотеках Rust и Go препятствуют проверке IP

Недавно обнародована информация об уязвимостях которые были найдены в стандартных библиотеках языков Ржавчина и вперед, которые связанные с неправильным обращением с IP-адресами с восьмеричными цифрами в функциях анализа адресов.

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

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

Например, чтобы понять, как IP-адреса интерпретируются в этих ошибках, восьмеричное число 0177 равно 127 в десятичном, с помощью которого злоумышленник может запросить ресурс, указав значение «0177.0.0.1», которое, поскольку оно не используется как восьмеричный, десятичный формат для него - «127.0.0.1».

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

На стороне Rust, проблема оказалась в стандартной библиотеке "std :: net" и который уже внесен в каталог под "CVE-2021-29922". Он описывает, что парсер IP-адресов этой библиотеки отбрасывает ноль перед значениями адреса, но только если было указано не более трех цифр, например, «0177.0.0.1» будет интерпретировано как недопустимое значение, и в ответ будет возвращен неправильный результат.

Неправильная проверка ввода восьмеричной строки в стандартной сетевой библиотеке rust-lang позволяет удаленным злоумышленникам, не прошедшим проверку подлинности, выполнять неопределенные атаки SSRF, RFI и LFI на многие программы, которые зависят от rust-lang std :: net. Октеты IP-адреса удаляются, а не оцениваются как действительные IP-адреса.

Также упоминается, что приложения, использующие библиотеку std :: net :: IpAddr при разборе указанных адресов пользователем потенциально подвержены атакам SSRF (подмена запросов на стороне сервера), RFI (включение удаленного файла) и BIA (включение локальных файлов). Точно так же злоумышленник может ввести 127.0.026.1, что на самом деле 127.0.22

Например, злоумышленник, который отправляет IP-адрес веб-приложению, основанному на std :: net :: IpAddr, может вызвать SSRF, введя восьмеричные входные данные; Злоумышленник может отправить уязвимые IP-адреса, если октет состоит из 3 цифр, с минимальным используемым октетом 08, который приводит к отказу в обслуживании, и максимальным используемым октетом 099, что также приводит к отказу в обслуживании. 

Если вы хотите узнать больше об этой уязвимости в Rust вы можете проверить детали По следующей ссылке. Также упоминается, что уязвимость была исправлена ​​в ветке Rust 1.53.0.

Как только к проблеме, которая затрагивает to Go упоминается, что это подчиняется стандартной библиотеке «net» и он уже указан в CVE-2021-29923. В описании упоминается, что позволяет удаленным злоумышленникам, не прошедшим аутентификацию, выполнять атаки SSRF, RFI и LFI неопределенный во многих программах, которые зависят от встроенной функции golang net.ParseCIDR. Отдельные октеты IP CIDR удаляются вместо того, чтобы оценивать их как действительные октеты IP.

Например, злоумышленник может передать значение 00000177.0.0.1, которое при проверке в функции net.ParseCIDR будет проанализировано как 177.0.0.1/24, а не 127.0.0.1/24. Проблема проявляется и на платформе Kubernetes. Уязвимость исправлена ​​в Go версии 1.16.3 и бета-версии 1.17.

Вы можете узнать об этом больше об этой уязвимости По следующей ссылке.


Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.