Уязвимость GeoServer CVE-2024-36401: как адаптировать публичный PoC для масштабного обнаружения

information security

Специалисты компании Bitsight разработали метод обнаружения уязвимости CVE-2024-36401 в геопространственном сервисе GeoServer, который позволяет безопасно идентифицировать подверженные атакам системы в масштабах всего интернета. Уязвимость, представляющая собой возможность удаленного выполнения кода (Remote Code Execution, RCE), продолжает активно эксплуатироваться злоумышленниками спустя год после публикации, несмотря на наличие исправлений.

Описание

GeoServer - это открытое программное обеспечение для совместного использования и обработки геопространственных данных, которое находит применение в государственном секторе, транспортной отрасли и промышленности. Хотя может показаться, что это узкоспециализированный сервис, его распространенность делает обнаружение данной уязвимости особенно важным для обеспечения безопасности.

Первоначально специалисты Bitsight добавили обнаружение этой уязвимости в свой каталог обнаружения уязвимостей в сентябре 2024 года, после того как она была включена в список известных эксплуатируемых уязвимостей (Known Exploited Vulnerabilities, KEV) Агентства кибербезопасности и инфраструктурной безопасности США (CISA). Однако недавно появились сообщения о новых случаях эксплуатации, включая компрометацию федерального агентства гражданской исполнительной власти с последующей установкой вредоносного программного обеспечения.

Основная сложность при создании системы обнаружения заключалась в невозможности прямого использования публичных доказательств концепции (Proof-of-Concept, PoC). Эксплуатация уязвимости зависит от предварительных условий, которые настраиваются администратором приложения во время установки и обычного использования. В частности, для успешной атаки требуется наличие определенного параметра typeName в конфигурации.

Уязвимость возникает из-за способа обработки GeoServer пользовательского ввода через XPath - язык запросов к XML-документам. Программное обеспечение использует библиотеку commons-jxpath для обработки этих выражений. В уязвимых версиях GeoServer динамическая оценка выражений XPath, которая должна быть строго ограничена сложными типами объектов, также выполняется для простых типов объектов, которые могут предоставляться пользователем. Это создает значительный риск безопасности, поскольку открывает возможность выполнения произвольного кода при обработке специально созданного ввода.

Исследователи Bitsight столкнулись с двумя основными проблемами при адаптации существующих PoC для масштабного обнаружения. Во-первых, используемые полезные нагрузки пытались достичь удаленного выполнения кода и подтвердить наличие уязвимости, используя этот код выполнения для обратного вызова на сервер злоумышленника или создания файла на сервере. Такие действия недопустимы при интернет-масштабном сканировании, поскольку могут вызывать изменяющие состояние операции на целевой системе. Во-вторых, используемые полезные нагрузки требовали параметр featureType, который зависит от начальной конфигурации каждой из целевых систем.

Для решения первой проблемы исследователи обнаружили, что могут отказаться от директивы exec() Java и использовать только java.lang.Runtime.getRuntime(). Уязвимые версии программного обеспечения GeoServer отвечают кодом состояния HTTP 400 вместе с сообщением об ошибке, содержащим ClassCastException, в то время как исправленные версии приложения не пытаются динамически интерпретировать недопустимое выражение XPath и вместо этого отвечают кодом состояния HTTP 500 с сообщением "No such attribute: java.lang.Runtime.getRuntime()".

Для решения второй проблемы потребовалось найти неаутентифицированный способ получения допустимого featureType из каждого из экземпляров перед активацией безвредной полезной нагрузки. Исследователи обнаружили конечную точку /geoserver/workspacename/ows?service=WFS&request=DescribeFeatureType, которая возвращает список типов объектов для данного экземпляра GeoServer.

Окончательная логика обнаружения включает отправку запроса к конечной точке DescribeFeatureType, анализ ответа и получение допустимого значения featureType, после чего отправляется запрос с безвредной полезной нагрузкой и анализируется ответ. Если ответ представляет собой код состояния HTTP 400, содержащий сообщение об ошибке, которое включает сообщение ClassCastException, то система уязвима для CVE-2024-36401.

После добавления CVE-2024-36401 в список KEV CISA исследователи внедрили эту возможность обнаружения в свой продукт в сентябре 2024 года. В то время они обнаружили 4606 экземпляров GeoServer, из которых 1071 были уязвимы для этой уязвимости. Спустя примерно 10 месяцев это число сократилось до примерно 2074 экземпляров GeoServer, из которых 385 все еще уязвимы для этого CVE.

В период с июня по август исследователи наблюдали попытки эксплуатации этой уязвимости, которые были направлены на "вербовку" уязвимых серверов в ботнеты. Одна из эксплойтов, названная Vtubers на основе имени сбрасываемого скрипта, пыталась запустить curl для сброса и выполнения скрипта с именем vtubers.sh. На основе сигнатур, предоставленных VirusTotal, этот ботнет оказался вариантом Mirai, который обладает возможностями самораспространения и DDoS-атак.

Другой эксплойт, названный test на основе имени полезной нагрузки, вел себя идентично предыдущему ботнету, используя curl и wget для получения одного двоичного файла, который работает для архитектуры эксплуатируемой службы. Этот второй ботнет идентичен предыдущему с точки зрения поведения, но исходит от другого субъекта угроз.

CVE-2024-36401 подчеркивает важность того, чтобы не принимать публично доступные PoC за чистую монету, поскольку некоторые из них могут быть протестированы только в собственных средах исследователей. Даже когда PoC для определенной уязвимости уже являются общедоступными, важно убедиться, что они не только безопасны в использовании, но и точны при загрузке в сценарий обнаружения в масштабе. Даже though уязвимость не является новой, злоумышленники активно ее эксплуатируют, что подтверждает, почему предприятия должны контролировать свою экспозицию с помощью услуг управления безопасностью и непрерывного мониторинга.

Индикаторы компрометации

IPv4

  • 15.204.119.129
  • 172.233.82.130
  • 185.194.177.60
  • 217.113.49.161
  • 65.21.56.214
  • 87.121.84.60

Domains

  • holohouse.uwunekochan.com
  • hololive.mozicloud.org
  • jmanga.co
  • okayuthefoodiecat.mozicloud.org
  • vtubers.uwunekochan.com
  • zrysdxnzmo.antiwifi.cc

SHA256

  • 1cbdc275caff194fc4eded354e7604d3b189a9ee5d5532370cb1db3676158704
  • 3b4b682c2acb9ca965bb602ff42581c41cfbfb08d195bfed65410294f608bfad
  • 56a9e38649a022dd11c43974aa709860f585b9655e85fe2901b3201d03165762
  • 611737dd350548f3dd1ed7b3e657d4fbcea68c3c04aee8b4a372c647f3db7853
  • 74ec1545696cfcf4fe57fe27da1218e82c4da87ca6eb34db98068f1dc769d275
  • 962949acaad7d8d626893abfb746db37a1bbf680ec0ce4d9d993deb82539f627
  • ada7225e886f9c2c8e88f94d5c04a8bf564f3cebd989342eb183e5c628a072da
  • caf58369b34126be4f46efed96ecab81b2c4f16feced00b34ea0423abd743c29
  • d2ba3ef8af026fd0d2d33248c42236bec5b944b668f5ebc7cdba2b04cc4b9fd4
  • da0d7ca9995e5a056755058fbb3b37e301d854808f580edcad5898541285e7d1
  • dafb6cfaab8ef0c98d9c3bb38d837a12a1b3a29f77dc7c0eb71d6cca81b89264
  • f2013cb532946fda1dfc42cde8e8a36aa61be1f4a177e7aef633a8c7918871f3

Комментарии: 0