Уязвимости в web-интерфейсе сетевых устройств Juniper, поставляемых с JunOS

В web-интерфейсе J-Web, который используется в сетевых устройствах компании Juniper, оснащённых операционной системой JunOS, выявлено несколько уязвимостей, наиболее опасная из которых (CVE-2022-22241) позволяет удалённо без прохождения аутентификации выполнить свой код в системе через отправку специально оформленного HTTP-запроса. Пользователям оборудования Juniper рекомендовано установить обновление прошивки, а если это невозможно, проследить, чтобы доступ к web-интерфейсу был заблокирован из внешних сетей и ограничен только заслуживающими доверия хостами.

Суть уязвимости в том, что передаваемый пользователем файловый путь обрабатываются в скрипте /jsdm/ajax/logging_browse.php без фильтрации префикса с типом контента на стадии до проверки аутентификации. Атакующий может передать под видом изображения вредоносный phar-файл и добиться выполнения размещённого phar-архиве PHP-кода, воспользовавшись методом атаки “Phar deserialization” (например, указав в запросе “filepath=phar:/путь/pharfile.jpg”).

Проблема в том, что при проверке загруженного файла при помощи PHP-функции is_dir(), эта функция автоматически выполняет десериализацию метаданных из архива Phar (PHP Archive) при обработке путей, начинающихся с “phar://”. Аналогичный эффект наблюдается при обработке переданных пользователем файловых путей в функциях file_get_contents(), fopen(), file(), file_exists(), md5_file(), filemtime() и filesize().

Атака усложняется тем, что помимо инициирования выполнения phar-архива, злоумышленник должен найти способ его загрузки на устройство (через обращение к /jsdm/ajax/logging_browse.php можно лишь указать путь для выполнения уже существующего файла). Из возможных сценариев попадания файлов на устройство упомянуты загрузка phar-файла под видом картинки через сервис передачи изображений и подстановка файла в кэш web-контента.

Другие уязвимости:

  • CVE-2022-22242 – подстановка неотфильтрованных внешних параметров в вывод скрипта error.php, позволяющая добиться межсайтовый скриптинга и выполнить в браузере пользователя произвольный JavaScript-код при переходе по ссылке (например, “https://JUNOS_IP/error.php?SERVER_NAME=”. Уязвимость может использоваться для перехвата параметров сеанса администратора, если атакующим удастся добиться открытия администратором специально оформленной ссылки.
  • CVE-2022-22243, СVE-2022-22244 – подстановка выражений XPATH через скрипты jsdm/ajax/wizards/setup/setup.php и /modules/monitor/interfaces/interface.php, позволяет непривилегированному аутентифицированному пользователю манипулировать сеансами администратора.
  • CVE-2022-22245 – отсутствие должной чистки последовательности “..” в путях, обрабатываемых в скрипте Upload.php, позволяет аутентифицированному пользователю загрузить свой PHP-файл в каталог, допускающий выполнение PHP-скриптов (например, передав путь “fileName=……..wwwdirnewshell.php”).
  • CVE-2022-22246 – возможность выполнения произвольного локального PHP-файла через манипуляции аутентифицированным пользователем со скриптом jrest.php, в котором внешние параметры используются для формирования имени файла, загружаемого функцией “require_once()” (например, “/jrest.php?payload=alol/lol/any……..anyfile”)

Release. Ссылка here.