{"id":"CVE-2026-73322","kind":"vulnerability","aliases":["CVE-2026-73322"],"related":[],"title":"Apache Pinot: lookup() reads dimension tables without broker authorization checks","description":"Incorrect Authorization vulnerability in the single-stage query engine of Apache Pinot.\n\nWhen 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.\n\nThe multi-stage query engine is not affected.\n\nThis issue affects Apache Pinot: through 1.5.1\n\nUsers are recommended to upgrade to version 1.6.0, which fixes this issue.","summary":"In Apache Pinot's single-stage query engine, the lookup() function reads a dimension table named in a string literal, and the broker's access check never covers that table. An authenticated user with access to any one table can read columns and arbitrary rows from any dimension table, bypassing row-level security filters.","severity":"high","cvss":null,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["apache-pinot","data-platform","package","self-hosted"],"not_affected_if":["access-control-disabled","multi-stage-engine-only","version-1.6.0-or-later"],"how_to_check":"- Check the Apache Pinot version in use; affected versions are through `1.5.1`.\n- Confirm whether broker access control is enabled in the cluster configuration.\n- Check whether queries use the lookup() function on dimension tables.","fix":"- Upgrade Apache Pinot to `1.6.0`.","status":"open","published_at":"2026-10-30T19:19:10+00:00","first_seen_at":"2026-10-30T19:25:30+00:00","triaged_at":"2026-10-30T19:27:50+00:00","updated_at":"2026-10-30T19:27:50+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-30T19:27:50Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Apache Pinot to `1.6.0`.","reach":"network","title":"Apache Pinot: lookup() reads dimension tables without broker authorization checks","impact":"medium","summary":"In Apache Pinot's single-stage query engine, the lookup() function reads a dimension table named in a string literal, and the broker's access check never covers that table. An authenticated user with access to any one table can read columns and arbitrary rows from any dimension table, bypassing row-level security filters.","audience":"businesses","category":"package","nicknames":[],"who_cares":["apache-pinot","self-hosted","data-platform"],"confidence":0.8,"fix_status":"available","needs_auth":"yes","worst_case":"Authenticated users read any dimension table's rows and columns.","analyst_note":"","how_to_check":"- Check the Apache Pinot version in use; affected versions are through `1.5.1`.\n- Confirm whether broker access control is enabled in the cluster configuration.\n- Check whether queries use the lookup() function on dimension tables.","plain_action":"","needs_analyst":false,"not_affected_if":["multi-stage-engine-only","access-control-disabled","version-1.6.0-or-later"],"who_is_affected":"Clusters running Apache Pinot through 1.5.1 with broker access control enabled and dimension tables holding restricted data. The multi-stage query engine is not affected, so deployments using only that engine can skip it. Anyone running a Pinot version above 1.5.1 is not affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000708,"input_tokens":4289,"output_tokens":559,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-73322':13A,16A '1.5.1':222C '1.6.0':230C 'access':52B,62B,98C,175C 'affect':215C,218C 'apach':1A,18B,28B,94C,219C 'apache-pinot':17B 'appli':206C 'arbitrari':71B,180C 'argument':131C 'authent':59B,149C 'author':9A,84C,108C,146C,153C 'broker':8A,50B,97C 'bypass':77B 'check':10A,53B,147C 'claus':118C,137C 'cluster':169C 'column':69B,162C 'configur':198C 'control':99C 'cover':55B 'cve':11A,14A 'data':21B 'data-platform':20B 'dimens':5A,41B,75B,125C,165C,201C 'direct':189C 'enabl':101C 'engin':35B,92C,107C,212C 'filter':82B,197C 'fix':232C 'function':38B,122C 'host':26B 'identifi':123C 'includ':143C,170C 'incorrect':83C 'issu':217C,234C 'key':187C 'least':156C 'level':80B,195C 'likewis':204C 'liter':47B,130C 'lookup':3A,37B,120C 'multi':209C 'multi-stag':208C 'name':43B,112C 'never':54B,142C 'one':65B,157C 'packag':23B 'per':191C 'per-princip':190C 'pinot':2A,19B,29B,95C,220C 'platform':22B 'primari':186C 'princip':192C 'queri':34B,91C,106C,115C,211C 'rather':132C 'read':4A,39B,68B,161C 'recommend':225C 'retriev':179C 'row':72B,79B,181C,194C 'row-level':78B,193C 'secur':81B,196C 'self':25B 'self-host':24B 'singl':32B,89C,104C 'single-stag':31B,88C,103C 'stage':33B,90C,105C,210C 'string':46B,129C 'suppli':185C 'tabl':6A,42B,57B,66B,76B,111C,126C,140C,158C,166C,171C,202C 'therefor':160C 'transform':121C 'upgrad':227C 'user':60B,150C,223C 'valu':188C 'version':229C 'vulner':85C 'without':7A","nicknames":[],"mitigations":[],"who_affected":"Clusters running Apache Pinot through 1.5.1 with broker access control enabled and dimension tables holding restricted data. The multi-stage query engine is not affected, so deployments using only that engine can skip it. Anyone running a Pinot version above 1.5.1 is not affected.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"first_public_at":"2026-10-30T19:19:10+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-73322","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-73322","severity":null,"published_at":"2026-10-30T19:19:10+00:00","modified_at":"2026-10-30T19:23:54+00:00","first_seen_at":"2026-10-30T19:25:30+00:00","fetched_at":"2026-10-30T19:25:30+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}