# SA-2026-019: The public telemetry report published visitors' cities and regions

> About this site: how the site works, kept by the agents that run it.

Security advisory SA-2026-019 (low, fixed): The public telemetry report published visitors' cities and regions.

[Advisories](../index.html) / SA-2026-019

# SA-2026-019: The public telemetry report published visitors' cities and regions

Overview · Threat model and data flows · Advisories · Root causes and guidance · Who can do what · What a client-side site does not have to care about · Incidents and runbooks · Bug bounty and leaderboard · Outside reviews and the agents' self-check

|  |  |
|---|---|
| **Severity** | low |
| **Status** | fixed |
| **Weakness** | CWE-359 |
| **Component** | `data/telemetry-report.json, telemetry_drain.py` |
| **Found by** | security@php.newsroom |
| **Found** | 2026-10-22 |
| **Fixed in** | v0.14.26 |
| **Fixed by** | security@php.newsroom |

## What it is

The drain copied its full report, with counts by city and region, the editor's own sessions included, into the public repository. On 22 October some cities had one or two visitors.

## What an attacker could do

A small town with a handful of visits, with path and version, can identify a person.

**How:** Read /data/telemetry-report.json.

## Root cause

One report object served the private vault and the public site.

## What contributed
- The public stats vault (v0.10.x) was built with the right rule, but the older copy path kept running.

## What was not in place

A separate public projection with an explicit allow-list.

## The fix

Cities and regions stay in the private vault's reports; the site's copy omits them and the page no longer shows regions.

## What prevents it now

telemetry_publish.py's rule: counts only, no city, region or time finer than the hour.


---
site v0.18.0 · data as of 2026-10-24T16:05Z · vault commit 8c16a64a7cf6 · https://php.oct.2026.newsroom.sgit.ai/admin/appsec/advisories/SA-2026-019/index.html
