
GeoServer & GeoTools SQL-инъекция (CVE-2023-25157 и CVE-2023-25158)
Этот репозиторий содержит подробное описание и шаги по воспроизведению уязвимостей SQL-инъекции, обнаруженных в платформе GeoServer и библиотеке GeoTools. Уязвимостям присвоены идентификаторы CVE-2023-25157 для GeoServer и CVE-2023-25158 для GeoTools.
GeoServer — это сервер с открытым исходным кодом, написанный на Java, который предоставляет возможность просматривать, редактировать и обмениваться геопространственными данными. Он спроектирован как гибкое и эффективное решение для распространения геопространственных данных из различных источников, таких как базы данных геоинформационных систем (ГИС), веб-данные и личные наборы данных.
GeoServer соответствует стандартам Open Geospatial Consortium (OGC) для обмена данными, включая Web Feature Service (WFS), Web Map Service (WMS) и Web Coverage Service (WCS). Такое соответствие стандартам означает, что данные GeoServer могут использоваться в самых разных приложениях — от специально разработанного ГИС-программного обеспечения до готовых решений.
GeoServer в основном построен на Spring Framework, однако также использует ряд других библиотек и фреймворков, включая:
GeoTools: Библиотека Java с открытым исходным кодом, предоставляющая инструменты для работы с геопространственными данными. GeoServer использует GeoTools для многих своих основных функций, таких как чтение, запись и преобразование данных.Рассматриваемые уязвимости глубоко встроены в выражения фильтров и функций, определённые стандартами Open Geospatial Consortium (OGC). Эти выражения составляют основу запросов и манипуляций с геопространственными данными, играя ключевую роль в функциональности таких систем, как GeoServer и GeoTools.
При эксплуатации этих уязвимостей могут возникать серьёзные нарушения безопасности. Основной проблемой является несанкционированное раскрытие информации, поскольку злоумышленники могут получить доступ к конфиденциальным данным, хранящимся в базе данных. Ещё одним возможным последствием является несанкционированная модификация данных: злоумышленники могут манипулировать данными в своих интересах. Кроме того, эти уязвимости могут способствовать нарушению работы сервиса: успешная эксплуатация может привести к его недоступности.
Ниже представлен углублённый анализ каждой выявленной уязвимости. Каждая уязвимость рассматривается подробно: обсуждаются её специфические характеристики, условия, приводящие к её проявлению, и потенциальные последствия эксплуатации. Вот подробный разбор уязвимостей, обнаруженных в GeoServer:
PropertyIsLike фильтр: эта уязвимость присутствует, когда фильтр PropertyIsLike используется с полем String в сочетании с любым хранилищем (Store) на основе реляционной базы данных, PostGIS DataStore с включёнными encode functions или любым image mosaic с индексом, хранящимся в реляционной базе данных.strEndsWith функция: эта уязвимость возникает, когда функция strEndsWith используется с PostGIS DataStore с включёнными encode functions.strStartsWith функция: эта уязвимость обнаруживается, когда функция strStartsWith используется с PostGIS DataStore с включёнными encode functions.FeatureId фильтр: эта уязвимость присутствует, когда фильтр FeatureId используется с любой таблицей базы данных, имеющей столбец первичного ключа типа String, и когда отключены prepared statements.jsonArrayContains функция: эта уязвимость обнаруживается, когда функция jsonArrayContains используется с полем String или JSON и с PostGIS или Oracle DataStore (только в GeoServer 2.22.0 и более поздних версиях).DWithin фильтр: эта уязвимость обнаруживается, когда фильтр DWithin используется с Oracle DataStore.А вот подробный разбор уязвимостей, обнаруженных в GeoTools:
PropertyIsLike фильтр:
strEndsWith функция:
strStartsWith функция:
FeatureId фильтр:
jsonArrayContains функция:
DWithin фильтр:
CVE-2023-25157 GeoServer SQL Injection.CVE-2023-25158 GeoTools SQL Injection.