В Java и Python обнаружены дыры в безопасности, которые позволяют злоумышленникам обходить файрвол

В Java и Python были найдены одинаковые уязвимости, которые позволяют злоумышленникам встраивать зловредные команды внутрь FTP-ссылок.

Корень проблемы заключается в способе, которым Python и Java обращаются с FTP-ссылками (библиотека urllib2 в Python 2 и urllib в Python 3). Такой метод взаимодействия со ссылками позволяет атакующим вставить новую строку после CRLF-символов внутрь ссылки, что заставляет Python и Java воспринимать ее в качестве новой команды. Это приводит к уязвимости под названием «Protocol Injection».

Уязвимость известна еще с 2014 года

Проблема впервые была замечена российской лабораторией безопасности ONsec в 2014, но не была удостоена должного внимания.

Исследователь безопасности Александр Клинк в своем блоге рассказал, каким образом инъекция в протоколе FTP может быть использована для отправки Email-сообщений при помощи Java.

Двумя днями позднее Тимоти Морган (Timothy Morgan) из Blindspot Security рассказал о более безрадостном сценарии, в котором уязвимость может быть использована для обхода файрволов.

Уязвимости до сих пор не исправлены

Команда Python была проинформирована о наличие уязвимости в январе 2016, а Oracle, создатели Java, — в ноябре. Однако никаких способов решения проблемы представлено не было.

В основе уязвимости лежит более старая уязвимость самого FTP — активный режим FTP.

Активный режим FTP — механизм, управляющий взаимодействием между FTP-клиентом и сервером. Механизм был признан небезопасным журналом Phrack и позднее изучен Флориэном Веймером (Florian Weimer).

Активный режим был заменен более безопасным пассивным режимом, но, тем не менее, большинство файрволов до сих пор поддерживают активный режим.

Уязвимость может быть использована для доступа к активному режиму FTP, который в свою очередь может быть использован для самых разных целей.

Провести атаку не составит труда

По словам Моргана, суть атаки заключается в том, чтобы убедить пользователя воспользоваться зараженным Java или Python-приложением на сервере.

Для проведения атаки Java должен быть установлен на машине пользователя, но атаку все равно удастся провести, даже если Java в браузере будет отключен. Это происходит из-за того, что Java-клиент сначала читает файлы JNLP (Java Network Launch Protocol), а потом делает все остальное.

«Java парсит JNLP-фалы перед тем, как пользователь получит хоть какое-то предупреждение об опасности — объяснил Морган, — атака пройдет успешно, а пользователь этого даже не заметит».

Злоумышленнику всего лишь нужно вставить вредоносные FTP-ссылки внутрь JNLP-файла.

Способ атаки был протестирован на Cisco и Palo Alto

Моргану удалось удачно атаковать файрволы, установленные на Linux, в их число также вошли продукты, продаваемые Cisco и Palo Alto Networks.

Исследователь выпустил несколько рекомендаций, которые помогут справляться с уязвимостью, пока Oracle и команда Python не устранят проблему:

  • Удалите Java со своих настольных устройств. Если это невозможно, отключите Java-плагин во всех своих браузерах и уберите расширение .jnlp из Java Web Start.
  • Убедитесь, что вы своевременно получаете обновления от Oracle и Python Software Foundation.
  • Отключите активный метод FTP во всех файрволах, оставьте только пассивный.
  • Производители файрволов должны отключать активный режим FTP по умолчанию.

Источник: BleepingComputer