/

CVE-2026-114664

Severity:

HIGH RISK

(7.1)

Blind SQL Injection (CWE-89) in Frappe Framework get_events

CVE-2026-114664

Deferred

Vulnerability type

Category:

SQL Injection

CWE:

CWE-89

Impact:

Sensitive Data Disclosure

Severity:

HIGH RISK

(7.1)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Frappe Framework contains a blind SQL injection vulnerability in the

frappe.desk.doctype.event.event.get_events method, where user-controlled

input is included in SQL queries without adequate neutralization. An

authenticated attacker may infer database query results from application

behavior and potentially extract sensitive information.

Frappe Framework contains a blind SQL injection vulnerability in the

frappe.desk.doctype.event.event.get_events method, where user-controlled

input is included in SQL queries without adequate neutralization. An

authenticated attacker may infer database query results from application

behavior and potentially extract sensitive information.

Affected context

The vulnerability occurs in Frappe Framework deployments where authenticated

users can reach the Event doctype's get_events method and provide values

that influence database queries. It becomes risky when those values are

incorporated into SQL statements without parameterization or equivalent

query-safety controls, allowing differences in application responses or

behavior to reveal database information.

The vulnerability occurs in Frappe Framework deployments where authenticated

users can reach the Event doctype's get_events method and provide values

that influence database queries. It becomes risky when those values are

incorporated into SQL statements without parameterization or equivalent

query-safety controls, allowing differences in application responses or

behavior to reveal database information.

Exploit preconditions

  • Attack surface: The Frappe Event API or method exposing get_events
  • Required access: Valid authenticated application access with permission

to invoke the affected functionality

  • Trigger point: Processing attacker-influenced input during event

retrieval

  • Why exploitation is possible: User-supplied values are incorporated

into SQL queries without sufficient neutralization, enabling inference from

query results or observable application behavior

  • Attack surface: The Frappe Event API or method exposing get_events
  • Required access: Valid authenticated application access with permission

to invoke the affected functionality

  • Trigger point: Processing attacker-influenced input during event

retrieval

  • Why exploitation is possible: User-supplied values are incorporated

into SQL queries without sufficient neutralization, enabling inference from

query results or observable application behavior

Why this happens

The underlying bug is an injection flaw caused by constructing or extending

SQL statements with insufficiently trusted input. When application data is

treated as part of query syntax rather than strictly as parameter values,

an attacker may influence database operations and infer information through

response differences. This behavior maps to CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection').

The underlying bug is an injection flaw caused by constructing or extending

SQL statements with insufficiently trusted input. When application data is

treated as part of query syntax rather than strictly as parameter values,

an attacker may influence database operations and infer information through

response differences. This behavior maps to CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection').

Potential impact

  • An attacker may infer the presence or absence of database records.
  • Sensitive database values could be disclosed over repeated requests.
  • Confidential application, user, or business data could be exposed.
  • Database availability or integrity could be affected if broader query

influence is possible.

  • An attacker may infer the presence or absence of database records.
  • Sensitive database values could be disclosed over repeated requests.
  • Confidential application, user, or business data could be exposed.
  • Database availability or integrity could be affected if broader query

influence is possible.

General mitigation guidance

Mitigation generally focuses on ensuring that user-controlled values never

become SQL syntax. Common defensive patterns include:

  • Use parameterized queries, prepared statements, or a well-maintained query

builder for database access.

  • Apply allowlisted validation for filters, sort fields, and other structured

query inputs.

  • Keep database accounts restricted to the minimum operations required by the

application.

  • Avoid relying on escaping alone as the primary SQL injection defense.
  • Enforce authorization independently from query construction and limit

exposure of sensitive records.

  • Centralize database access controls so unsafe query patterns are less likely

to be introduced in individual handlers.

Mitigation generally focuses on ensuring that user-controlled values never

become SQL syntax. Common defensive patterns include:

  • Use parameterized queries, prepared statements, or a well-maintained query

builder for database access.

  • Apply allowlisted validation for filters, sort fields, and other structured

query inputs.

  • Keep database accounts restricted to the minimum operations required by the

application.

  • Avoid relying on escaping alone as the primary SQL injection defense.
  • Enforce authorization independently from query construction and limit

exposure of sensitive records.

  • Centralize database access controls so unsafe query patterns are less likely

to be introduced in individual handlers.

How teams detect issues like this

Detection can combine static analysis, review, and runtime controls:

  • Search for string concatenation, interpolation, or formatting used to build

SQL statements from request parameters.

  • Review API handlers and data-access methods for missing query parameters,

weak filter validation, and dynamic identifiers.

  • Use application security testing to compare responses for controlled,

non-destructive input variations and identify unexpected query behavior.

  • Monitor database and application logs for anomalous query errors, repeated

conditional requests, or unusual access to sensitive fields.

  • Enforce secure query-construction policies through CI checks and automated

code-review tools.

Detection can combine static analysis, review, and runtime controls:

  • Search for string concatenation, interpolation, or formatting used to build

SQL statements from request parameters.

  • Review API handlers and data-access methods for missing query parameters,

weak filter validation, and dynamic identifiers.

  • Use application security testing to compare responses for controlled,

non-destructive input variations and identify unexpected query behavior.

  • Monitor database and application logs for anomalous query errors, repeated

conditional requests, or unusual access to sensitive fields.

  • Enforce secure query-construction policies through CI checks and automated

code-review tools.

Sources

SourceLink
github.comgithub.com/frappe/frappe/security/advisories/GHSA-p4w2-9mr5-6prj
vulncheck.comvulncheck.com/advisories/frappe-before-16.33.0-blind-sql-injection-via-get-events

Frequently asked

questions

It can be exploitable through the application's network-accessible API when an

attacker can authenticate and invoke the affected event-retrieval method.

The described issue requires authenticated access. The exact scope depends on

the permissions and endpoints exposed by the deployment.

Use parameterized database queries or a trusted query builder, validate

structured inputs with allowlists, and avoid constructing SQL from raw request

values.

Combine secure data-access abstractions with code review, static analysis,

authorization checks, least-privilege database accounts, and testing for

injection behavior throughout the development lifecycle.

It can be exploitable through the application's network-accessible API when an

attacker can authenticate and invoke the affected event-retrieval method.

The described issue requires authenticated access. The exact scope depends on

the permissions and endpoints exposed by the deployment.

Use parameterized database queries or a trusted query builder, validate

structured inputs with allowlists, and avoid constructing SQL from raw request

values.

Combine secure data-access abstractions with code review, static analysis,

authorization checks, least-privilege database accounts, and testing for

injection behavior throughout the development lifecycle.

Find out what's already
exploitable in your codebase.