GeoNetwork CVE-2026-46487
HIGHSeverity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
Unauthenticated network request to the search API (AV:N/AC:L/PR:N/UI:N) discloses full restricted records (C:H) with no write or availability effect (I:N/A:N).
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
2DescriptionGitHub Advisory
Summary
GeoNetwork's Elasticsearch-backed search API is responsible for injecting access-control and visibility filters into every request before it reaches the underlying Elasticsearch index. Under certain request conditions, that filtering step does not run, allowing an unauthenticated user to retrieve indexed metadata records that should be restricted, including records limited to specific groups.
Details
The search proxy layer forwards client-supplied search requests to Elasticsearch after adding GeoNetwork's own access-control and filter clauses. A flaw in how that filter-injection step is triggered means it can be skipped under certain conditions, so the affected request reaches Elasticsearch without the intended access restrictions applied.
Impact
This is an authorization bypass leading to information disclosure (CWE-862: Missing Authorization). The skipped filter step is responsible for enforcing several layers of access control at once: group-based record visibility, draft record exclusion, record ownership checks, and portal-specific filtering.
Any public-facing GeoNetwork 4.x instance (4.0.0-alpha.1 through 4.4.10) is affected. An unauthenticated attacker can retrieve the full contents of metadata records that should not be publicly visible.
AnalysisAI
Authorization bypass and information disclosure in GeoNetwork 4.x (4.0.0-alpha.1 through 4.4.10) lets an unauthenticated remote user retrieve restricted metadata records through the Elasticsearch-backed search API. Under certain request conditions the proxy layer skips the step that injects GeoNetwork's access-control filters, so requests reach the index without group-visibility, ownership, draft-exclusion, or portal filtering applied. There is no public exploit identified at time of analysis, but the flaw is unauthenticated and network-reachable on any public-facing instance, making disclosure of non-public catalog records trivial once the triggering condition is known.
Technical ContextAI
GeoNetwork is an open-source catalog application for geospatial metadata (Spatial Data Infrastructures), packaged as the Maven artifact org.geonetwork-opensource:geonetwork. Its 4.x line replaced the legacy Lucene index with Elasticsearch, and a search-proxy layer sits between clients and the Elasticsearch index: it is supposed to append GeoNetwork's own access-control and filter clauses to every client-supplied query before forwarding it. The root cause is CWE-862 (Missing Authorization): the filter-injection is conditionally triggered, and a logic flaw allows that trigger to be bypassed so the query reaches Elasticsearch unfiltered. Because that single step enforces multiple controls at once (group-based visibility, draft exclusion, ownership checks, portal scoping), skipping it collapses several access layers simultaneously.
RemediationAI
Upgrade to a fixed GeoNetwork release above 4.4.10 as published in advisory GHSA-582q-v28r-7cxr (https://github.com/geonetwork/core-geonetwork/security/advisories/GHSA-582q-v28r-7cxr); the advisory data does not include an explicit fix version string in this input, so confirm the exact patched build directly from that advisory before deploying. As compensating controls until patched, restrict network exposure of the search API by placing the instance behind authentication or a reverse-proxy/WAF that limits access to the Elasticsearch search endpoint to trusted networks - the trade-off is loss of intended public catalog browsing for anonymous users. Where the catalog must remain public, minimize exposure by ensuring genuinely sensitive metadata is not indexed on the internet-facing node and by monitoring search-proxy access logs for anomalous or high-volume queries. Avoid exposing the raw Elasticsearch port directly. Generic defense-in-depth is insufficient here because the bypass occurs inside the application logic, so upgrading is the only complete fix.
The Groovy scripting engine in Elasticsearch before 1.3.8 and 1.4.x before 1.4.3 allows remote attackers to bypass the s
The default configuration in Elasticsearch before 1.2 enables dynamic scripting, which allows remote attackers to execut
Remote code execution occurs in Apache Solr before 7.1 with Apache Lucene before 7.1 by exploiting XXE in conjunction wi
Directory traversal vulnerability in Elasticsearch before 1.6.1 allows remote attackers to read arbitrary files via unsp
Directory traversal vulnerability in Elasticsearch before 1.4.5 and 1.5.x before 1.5.2, when a site plugin is enabled, a
A flaw was discovered in Elasticsearch, affecting the _search API that allowed a specially crafted query string to cause
Kibana versions before 5.6.15 and 6.6.1 contain an arbitrary code execution flaw in the Timelion visualizer. Rated criti
Kibana versions 6.7.0 to 6.8.8 and 7.0.0 to 7.6.2 contain a prototype pollution flaw in the Upgrade Assistant. Rated hig
Kibana versions before 6.4.3 and 5.6.13 contain an arbitrary file inclusion flaw in the Console plugin. Rated critical s
opensearch-ruby is a community-driven, open source fork of elasticsearch-ruby. Rated high severity (CVSS 8.8), this vuln
Icinga is a monitoring system which checks the availability of network resources, notifies users of outages, and generat
Log injection in @logtape/syslog allows network-accessible attackers to forge arbitrary syslog records in downstream col
Same weakness CWE-862 – Missing Authorization
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
GHSA-582q-v28r-7cxr