Vulnerability · Published Sep 15, 2026 · Assigned by GitHub_M
CVE-2026-55178GeoLens: Cross-dataset authorization bypass discloses private dataset metadata, schema, sample values, table rows, and raster/vector tile data
High 7.5
In plain English
A high-severity information exposure in geolens from geolens-io. There are no confirmed reports of exploitation so far. The chance it is exploited in the next 30 days is estimated at 0.6% (higher than 51% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.
Official description
GeoLens is a self-hosted geospatial data catalog with semantic search, OGC and STAC APIs, and a map builder. Prior to 1.2.3, multiple read and link endpoints authorize only the resource named in the request URL and fail to re-authorize a second caller-influenced dataset reached through a relationship, map layer, VRT source, externalId lookup, or request body. When a public map references a private dataset, anonymous callers can use GET /maps/{id} and GET /maps/{id}/style.json to obtain the private layer's metadata, sampled values, or vector tiles. The style response can expose a replayable HMAC tile URL that is bound to neither a user nor a map. When a public source dataset has a relationship to a private target dataset, anonymous callers can use the dataset relationship APIs to enumerate the relationship and read rows from the private target's backing table. Anonymous callers can also use GET /collections/datasets/items with an externalId dataset UUID to obtain metadata for any private, restricted, or unpublished dataset because that lookup performs no visibility check. Authenticated users with the default editor role can mosaic another user's private raster into an owned VRT and read its pixels, and POST /ai/metadata/{summary,keywords,lineage,quality-statement} accepts a body-controlled dataset_id without a visibility check and returns private metadata and sample values. Pre-existing vrt_source_links also expose unauthorized member metadata and health unless each member is filtered at read time. These paths can disclose vector geometries and attributes, raster pixels, table rows, table names, column schemas, feature counts, extents, source URLs and filenames, contacts, and sampled row values. This issue is fixed in version 1.2.3.
Affected packages & fixed versions
| Ecosystem | Package | Fixed in | Advisory |
|---|---|---|---|
| PyPI | geolens | 1.2.3 | GHSA-p23g-mvhj-jh3j |
| PyPI | geolens | 1.2.3 | PYSEC-2026-3662 |
| PyPI | geolens-cli | 1.2.3 | GHSA-p23g-mvhj-jh3j |
| PyPI | geolens-cli | 1.2.3 | PYSEC-2026-3663 |
| npm | @geolens/sdk | 1.2.3 | GHSA-p23g-mvhj-jh3j |
Affected products (as reported)
| Vendor | Product | Versions |
|---|---|---|
| geolens-io | geolens | < 1.2.3 |
Weakness: CWE-200, CWE-639, CWE-862 · Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
References
- https://github.com/geolens-io/geolens/security/advisories/GHSA-p23g-mvhj-jh3j x_refsource_CONFIRM
- https://github.com/geolens-io/geolens/pull/234 x_refsource_MISC
- https://github.com/geolens-io/geolens/pull/235 x_refsource_MISC
- https://github.com/geolens-io/geolens/pull/236 x_refsource_MISC
- https://github.com/geolens-io/geolens/pull/237 x_refsource_MISC
- https://github.com/geolens-io/geolens/pull/238 x_refsource_MISC
- https://github.com/geolens-io/geolens/commit/01bc87da03a5ecd0322c42388f4bfced7cb2ed06 x_refsource_MISC
- https://github.com/geolens-io/geolens/commit/07dfb1c63ecfc065c0c47b7718ec6ebe97798b1e x_refsource_MISC
- https://github.com/geolens-io/geolens/commit/2c031da8e753639ff0e36d47ca05bbb96fbe4a9e x_refsource_MISC
- https://github.com/geolens-io/geolens/commit/31a103b96b9fd6ad90308b3e27a581852c4a69bd x_refsource_MISC
- https://github.com/geolens-io/geolens/commit/407c068836058fdeca6bb477d39f841316b326a5 x_refsource_MISC
- https://github.com/geolens-io/geolens/releases/tag/v1.2.3 x_refsource_MISC