
GeoServer & GeoTools Injeção de SQL (CVE-2023-25157 & CVE-2023-25158)
Este repositório contém uma descrição detalhada e as etapas de replicação das vulnerabilidades de injeção SQL encontradas na plataforma GeoServer e na biblioteca GeoTools. A vulnerabilidade foi identificada como CVE-2023-25157 para o GeoServer e CVE-2023-25158 para o GeoTools.
GeoServer é um servidor de software de código aberto escrito em Java que permite visualizar, editar e compartilhar dados geoespaciais. Ele foi projetado para ser uma solução flexível e eficiente para distribuir dados geoespaciais de diversas fontes, como bancos de dados de Sistemas de Informação Geográfica (GIS), dados baseados na web e conjuntos de dados pessoais.
O GeoServer adere aos padrões do Open Geospatial Consortium (OGC) para compartilhamento de dados, incluindo o Web Feature Service (WFS), Web Map Service (WMS) e o Web Coverage Service (WCS). Essa adesão aos padrões significa que os dados do GeoServer podem ser usados em uma ampla variedade de aplicações, desde software GIS desenvolvido sob medida até soluções prontas para uso.
O GeoServer é construído principalmente sobre o Spring Framework, mas também usa várias outras bibliotecas e frameworks, incluindo:
GeoTools: Uma biblioteca Java de código aberto que fornece ferramentas para dados geoespaciais. O GeoServer usa o GeoTools em muitas de suas funcionalidades principais, como leitura, escrita e transformação de dados.As vulnerabilidades em questão estão profundamente incorporadas às expressões de filtro e função definidas pelos padrões do Open Geospatial Consortium (OGC). Essas expressões formam a espinha dorsal da consulta e manipulação de dados geoespaciais, desempenhando um papel fundamental na funcionalidade de sistemas como GeoServer e GeoTools.
Quando essas vulnerabilidades são exploradas, podem levar a graves violações de segurança. A divulgação não autorizada de informações é uma preocupação principal, pois os atacantes podem acessar dados confidenciais armazenados no banco de dados. A modificação não autorizada é outro resultado potencial, com os atacantes podendo manipular os dados em seu benefício. Além disso, essas vulnerabilidades também podem facilitar a interrupção do serviço, com uma exploração bem-sucedida podendo levar à indisponibilidade do serviço.
A seguir, uma análise aprofundada de cada vulnerabilidade identificada. Cada vulnerabilidade é explorada em detalhes, discutindo suas características específicas, as condições que levam à sua manifestação e os possíveis efeitos de sua exploração. Aqui está um detalhamento das vulnerabilidades encontradas para o GeoServer:
PropertyIsLike filter: esta vulnerabilidade está presente quando o filtro PropertyIsLike é usado com um campo String em conjunto com qualquer Store baseada em banco de dados relacional, um PostGIS DataStore com funções de codificação habilitadas, ou qualquer mosaico de imagem com um índice armazenado em um banco de dados relacional.strEndsWith function: esta vulnerabilidade surge quando a função strEndsWith é usada com um PostGIS DataStore com funções de codificação habilitadas.strStartsWith function: esta vulnerabilidade é encontrada quando a função strStartsWith é usada com um PostGIS DataStore com funções de codificação habilitadas.FeatureId filter: esta vulnerabilidade está presente quando o filtro FeatureId é usado com qualquer tabela de banco de dados que tenha uma coluna de chave primária String e quando as prepared statements estão desabilitadas.jsonArrayContains function: esta vulnerabilidade é encontrada quando a função jsonArrayContains é usada com um campo String ou JSON e com um PostGIS ou Oracle DataStore (somente no GeoServer 2.22.0 e versões posteriores).DWithin filter: esta vulnerabilidade é descoberta quando o filtro DWithin é usado com um Oracle DataStore.E aqui está um detalhamento das vulnerabilidades encontradas para o GeoTools:
PropertyIsLike filter:
strEndsWith function:
strStartsWith function:
FeatureId filter:
jsonArrayContains function:
DWithin filter:
CVE-2023-25157 GeoServer SQL Injection.CVE-2023-25158 GeoTools SQL Injection.