Apache Pinot before 1.6.0 can read unauthorized tables (CVE-2026-73322)
With broker access control on, lookup() can name a dimension table that the FROM-clause check never authorizes.
Incorrect authorization in Apache Pinot single-stage lookup()
When broker access control is on, Apache Pinot’s single-stage query engine checks authorization only for the table in the query’s FROM clause. The lookup() transform names its dimension table in a string argument, so that table is never checked. An authenticated user allowed to query at least one table can read columns and arbitrary rows (by primary key) from any dimension table in the cluster, and per-principal row filters on that table are not applied. The multi-stage engine is not affected. Pinot through 1.5.1 is affected.
What to do: Upgrade Apache Pinot to 1.6.0, which fixes authorization of dimension tables used by lookup().
| Product | Affected | Fixed in |
|---|---|---|
| Apache Pinot | through 1.5.1 | 1.6.0 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Incorrect Authorization vulnerability in the single-stage query engine of Apache Pinot. When broker access control is enabled, the single-stage query engine authorizes only the table named in the query's FROM clause. The lookup() transform function identifies its dimension table with a string literal argument rather than through the FROM clause, so that table was never included in the authorization check. An authenticated user who is authorized for at least one table can therefore read columns from any dimension table in the cluster, including tables they have no access to, and can retrieve arbitrary rows of it by supplying primary key values directly. Per-principal row-level security filters configured on the dimension table are likewise not applied. The multi-stage query engine is not affected. This issue affects Apache Pinot: through 1.5.1 Users are recommended to upgrade to version 1.6.0, which fixes this issue.
With broker access control on, lookup() can name a dimension table that the FROM-clause check never authorizes.
Today 625 readers · 755 views · 574 reads · all time 158K views