---
id: "CVE-2026-129166"
page: "https://infrastack.ai/live/CVE-2026-129166"
kind: "vulnerability"
aliases: ["CVE-2026-129166"]
title: "Keep: blind SQL injection via CEL filters leaks alerts and password hashes"
severity: "high"
cvss: 7.1
epss: null
exploited: false
status: "open"
category: "other"
products: [{"name": "keep", "fixed": [], "affected": ">= 0.34.10, <= 0.55.0", "ecosystem": "pip"}]
ecosystems: []
tags: ["cel", "keep", "multi-tenant", "other", "self-hosted", "sql-injection"]
not_affected_if: ["no-read-alert-users", "no-untrusted-read-alert-users", "version-outside-range"]
published_at: "2026-11-13T18:17:41+00:00"
first_seen_at: "2026-11-13T18:49:31+00:00"
updated_at: "2026-11-13T18:53:47+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-129166", "first_seen_at": "2026-11-13T18:49:31+00:00"}, {"source": "analyst", "url": "https://github.com/keephq/keep/issues/6902", "first_seen_at": "2026-11-13T18:53:47+00:00", "cites": ["https://github.com/keephq/keep/issues/6902", "https://vul.yulun.ac.cn/20261030/keephq_keep/", "https://github.com/keephq/keep/pull/6924"]}]
exploit_sources: []
---

# Keep: blind SQL injection via CEL filters leaks alerts and password hashes

Link for people: https://infrastack.ai/live/CVE-2026-129166 (this .md is for agents)

Keep 0.34.10 through 0.55.0 (reporter says 0.54.3) builds SQL from bracket-indexed JSON keys in CEL filters without escaping them. An authenticated user with read:alert permission can extract other tenants' alerts and password hashes one boolean answer at a time. No released fix yet; a community PR (#6924) is open and not merged.

_Summary, check and fix written by a model from the sources; labelled as such._

## Affected

- pip:keep affected >= 0.34.10, <= 0.55.0 fixed no fixed version listed

## How to check

- Check your Keep version: 0.34.10 through 0.55.0 is affected per VulnCheck (the reporter lists up to 0.54.3).
- Who has read:alert? Any such account can reach /alerts/query and /incidents?cel=. Review those accounts, and your reverse proxy logs for CEL expressions with a quote (') inside square-bracket keys.
- Applies on SQLite, PostgreSQL and MySQL backends.

## Fix

No released fix as of 2026-11-13. Upstream PR keephq/keep#6924 is open and unmerged; watch it and the Keep releases page and upgrade to the first release that includes it. Until then, limit read:alert to trusted users.

## Timeline

- 2026-11-13T18:49:31+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-129166
- 2026-11-13T18:53:47+00:00 analyst https://github.com/keephq/keep/issues/6902 — No released fix found: upstream issue keephq/keep#6902 is open, community PR #6924 (escapes JSON path keys) is open and unmerged as of 2026-11-13; releases page shows nothing newer. Reporter says affected 0.34.10-0.54.3, VulnCheck says through 0.55.0. No PoC link beyond reporter's report; not exploited. Nothing verified: no maintainer statement.

## Documents

- [advisory] Third-party advisory: www.vulncheck.com https://www.vulncheck.com/advisories/keep-0.34.10-through-0.55.0-blind-sql-injection-via-cel-bracket-indexed-json-keys
- [advisory] keephq/keep #6902 Boolean-Based Blind SQL Injection in CEL Queries https://github.com/keephq/keep/issues/6902
- [describes] Keep Vulnerability Report (Wu Yulun) https://vul.yulun.ac.cn/20261030/keephq_keep/
- [fix] keephq/keep PR #6924 fix(cel): escape JSON path keys (open, unmerged) https://github.com/keephq/keep/pull/6924

## From the sources

Keep 0.34.10 through 0.55.0 contains a blind SQL injection vulnerability in its CEL-to-SQL converter, which inserts bracket-indexed JSON keys from CEL filters unescaped into JSON path expressions for SQLite, PostgreSQL, and MySQL. Authenticated users with read:alert permission can submit crafted CEL expressions to /alerts/query or the cel parameter of /incidents, using result counts as a boolean oracle to extract other tenants' alerts and password hashes.

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
