CVE-2026-55178 json
GeoLens: Cross-dataset authorization bypass discloses private dataset metadata, schema, sample values, table rows, and raster/vector tile data
published 2026-08-18 2 mo ago modified 2026-09-30 39 d ago also GHSA-p23g-mvhj-jh3j , PYSEC-2026-3662 , PYSEC-2026-3663 , EUVD-2026-78775
- cvss
- 7.5
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.6%
- EPSS 0.6% chance of exploitation in 30 days, percentile 51%
- public exploits
- 0
- none known
Summary
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.
Patch / fix
- npm @geolens/sdk 1.2.3
- pypi geolens-cli 1.2.3
- pypi geolens 1.2.3
- github.com/geolens-io/geolens@01bc87d commit
- github.com/geolens-io/geolens@07dfb1c commit
- github.com/geolens-io/geolens@2c031da commit
- github.com/geolens-io/geolens@31a103b commit
- github.com/geolens-io/geolens@407c068 commit
- github.com/geolens-io/geolens#234 pull request
- github.com/geolens-io/geolens#235 pull request
- github.com/geolens-io/geolens#236 pull request
- github.com/geolens-io/geolens#237 pull request
- github.com/geolens-io/geolens#238 pull request
CISA SSVC
- Exploitation
- none
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 52 d ago
Exploit prediction
0.65% chance of exploitation in the next 30 days, higher than 51% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
| GitHub | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
| OSV | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| npm | @geolens/sdk | <1.2.3 |
1.2.3 |
| pypi | geolens-cli | <1.2.3 |
1.2.3 |
| pypi | geolens | <1.2.3 |
1.2.3 |
Affected products
- geolens-io geolens
Classification
References
-
github.com
/geolens-io/geolens/pull/234
web
-
github.com
/geolens-io/geolens/pull/235
web
-
github.com
/geolens-io/geolens/pull/236
web
-
github.com
/geolens-io/geolens/pull/237
web
-
github.com
/geolens-io/geolens/pull/238
web
- github.com /geolens-io/geolens/commit/01bc87da03a5ecd0322c42388f4bfced7cb2ed06
- github.com /geolens-io/geolens/commit/07dfb1c63ecfc065c0c47b7718ec6ebe97798b1e
- github.com /geolens-io/geolens/commit/2c031da8e753639ff0e36d47ca05bbb96fbe4a9e
- github.com /geolens-io/geolens/commit/31a103b96b9fd6ad90308b3e27a581852c4a69bd
- github.com /geolens-io/geolens/commit/407c068836058fdeca6bb477d39f841316b326a5
-
github.com
/geolens-io/geolens/security/advisories/GHSA-p23g-mvhj-jh3j
web
- github.com /geolens-io/geolens/releases/tag/v1.2.3
-
github.com
/geolens-io/geolens
package
-
pypi.org
/project/geolens-cli
package
-
github.com
/advisories/GHSA-p23g-mvhj-jh3j
advisory
-
nvd.nist.gov
/vuln/detail/CVE-2026-55178
advisory
-
pypi.org
/project/geolens
package
Sources
- CVE List CVE-2026-55178
- GitHub Advisory GHSA-p23g-mvhj-jh3j
- NVD CVE-2026-55178
- OSV PYSEC-2026-3663
- OSV PYSEC-2026-3662
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.