/

CVE-2026-63165

Severity:

HIGH RISK

(8.1)

SQL Injection (CWE-89) in Omnispace Agora Calendar Function

CVE-2026-63165

Deferred

Vulnerability type

Category:

SQL Injection

CWE:

CWE-89

Impact:

Database Information Disclosure

Severity:

HIGH RISK

(8.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

Omnispace Agora Project contains a SQL injection vulnerability in its calendar functionality because the sortEvents parameter is incorporated into an ORDER BY clause without adequate sanitization. An attacker who can reach the affected calendar functionality may manipulate this parameter to cause database errors and potentially extract information from the underlying database.

Omnispace Agora Project contains a SQL injection vulnerability in its calendar functionality because the sortEvents parameter is incorporated into an ORDER BY clause without adequate sanitization. An attacker who can reach the affected calendar functionality may manipulate this parameter to cause database errors and potentially extract information from the underlying database.

Affected context

The vulnerability occurs in the calendar functionality of Omnispace Agora Project before version 26.10.0, specifically in app/ModCalendar/CtrlCalendar.php. It becomes risky when externally influenced sortEvents input reaches SQL query construction without parameter-aware handling or strict allowlisting of permitted sort values.

The vulnerability occurs in the calendar functionality of Omnispace Agora Project before version 26.10.0, specifically in app/ModCalendar/CtrlCalendar.php. It becomes risky when externally influenced sortEvents input reaches SQL query construction without parameter-aware handling or strict allowlisting of permitted sort values.

Exploit preconditions

  • Attack surface: Calendar functionality that accepts the sortEvents parameter
  • Required access: Access sufficient to submit requests to the affected calendar endpoint; authentication requirements depend on deployment configuration
  • Trigger point: Processing the parameter while constructing the SQL ORDER BY clause
  • Why exploitation is possible: User-controlled input is concatenated into a SQL statement without sufficient validation or constrained query construction
  • Attack surface: Calendar functionality that accepts the sortEvents parameter
  • Required access: Access sufficient to submit requests to the affected calendar endpoint; authentication requirements depend on deployment configuration
  • Trigger point: Processing the parameter while constructing the SQL ORDER BY clause
  • Why exploitation is possible: User-controlled input is concatenated into a SQL statement without sufficient validation or constrained query construction

Why this happens

The underlying bug is improper neutralization of externally controlled input used in a SQL statement, which maps to CWE-89: Improper Neutralization of Special Elements used in an SQL Command (SQL Injection). The application treats a sorting value as trusted SQL syntax and concatenates it into an ORDER BY clause instead of restricting it to known-safe columns and directions. Because sorting identifiers generally cannot be safely handled with ordinary value placeholders, they require explicit allowlisting and separate query construction logic.

The underlying bug is improper neutralization of externally controlled input used in a SQL statement, which maps to CWE-89: Improper Neutralization of Special Elements used in an SQL Command (SQL Injection). The application treats a sorting value as trusted SQL syntax and concatenates it into an ORDER BY clause instead of restricting it to known-safe columns and directions. Because sorting identifiers generally cannot be safely handled with ordinary value placeholders, they require explicit allowlisting and separate query construction logic.

Potential impact

  • Database metadata or other accessible information may be disclosed
  • Database version details could be extracted through error-based behavior
  • Query errors may expose implementation or schema information
  • Application data could potentially be modified or deleted if the database account permits it
  • The application or connected services could be affected through database compromise
  • Database metadata or other accessible information may be disclosed
  • Database version details could be extracted through error-based behavior
  • Query errors may expose implementation or schema information
  • Application data could potentially be modified or deleted if the database account permits it
  • The application or connected services could be affected through database compromise

General mitigation guidance

Mitigation typically focuses on preventing user-controlled values from becoming SQL syntax.

Common defensive patterns include:

  • Map client-facing sort options to a fixed allowlist of known database columns
  • Accept only explicitly supported sort directions and reject unexpected values
  • Keep sorting identifiers separate from ordinary query values and construct them through trusted mappings
  • Apply least-privilege permissions to the application database account
  • Avoid returning detailed database errors to clients
  • Centralize query-building controls and reduce trust in request parameters through schema validation
  • Use secure-by-default query helpers and review dynamically assembled SQL paths

Mitigation typically focuses on preventing user-controlled values from becoming SQL syntax.

Common defensive patterns include:

  • Map client-facing sort options to a fixed allowlist of known database columns
  • Accept only explicitly supported sort directions and reject unexpected values
  • Keep sorting identifiers separate from ordinary query values and construct them through trusted mappings
  • Apply least-privilege permissions to the application database account
  • Avoid returning detailed database errors to clients
  • Centralize query-building controls and reduce trust in request parameters through schema validation
  • Use secure-by-default query helpers and review dynamically assembled SQL paths

How teams detect issues like this

Organizations commonly detect SQL injection risks through:

  • Static analysis rules for string concatenation or interpolation in SQL construction
  • Code review checks for request parameters used in ORDER BY, GROUP BY, filtering, or projection clauses
  • Dynamic testing that supplies unexpected sort names, directions, and malformed values to observable query paths
  • Database and application logging policies that identify repeated query errors or unusual metadata access
  • Policy enforcement requiring allowlisted query fragments and least-privilege database accounts

Automated security review tools may help identify unsafe query construction, but findings should be validated against the actual data-access layer.

Organizations commonly detect SQL injection risks through:

  • Static analysis rules for string concatenation or interpolation in SQL construction
  • Code review checks for request parameters used in ORDER BY, GROUP BY, filtering, or projection clauses
  • Dynamic testing that supplies unexpected sort names, directions, and malformed values to observable query paths
  • Database and application logging policies that identify repeated query errors or unusual metadata access
  • Policy enforcement requiring allowlisted query fragments and least-privilege database accounts

Automated security review tools may help identify unsafe query construction, but findings should be validated against the actual data-access layer.

Sources

SourceLink
github.comgithub.com/xech/agora-project/releases/tag/26.10
agora-project.netagora-project.net/
vulncheck.comvulncheck.com/advisories/omnispace-agora-project-sql-injection-via-sortevents-parameter

Frequently asked

questions

It may be exploitable through a network-accessible calendar endpoint when an attacker can submit or influence the sortEvents parameter. Actual scope depends on endpoint exposure and application access controls.

Not necessarily. The required access depends on whether the affected calendar functionality is public, authenticated, or restricted by other deployment controls.

Treat sorting input as an identifier rather than a free-form SQL fragment. Map accepted client values to a fixed allowlist of trusted columns and directions, then use least-privilege database credentials.

Combine parameter-aware data-access patterns with strict allowlisting for query identifiers, focused code review of dynamic SQL, safe error handling, automated testing, and database privilege restrictions.

It may be exploitable through a network-accessible calendar endpoint when an attacker can submit or influence the sortEvents parameter. Actual scope depends on endpoint exposure and application access controls.

Not necessarily. The required access depends on whether the affected calendar functionality is public, authenticated, or restricted by other deployment controls.

Treat sorting input as an identifier rather than a free-form SQL fragment. Map accepted client values to a fixed allowlist of trusted columns and directions, then use least-privilege database credentials.

Combine parameter-aware data-access patterns with strict allowlisting for query identifiers, focused code review of dynamic SQL, safe error handling, automated testing, and database privilege restrictions.

Find out what's already
exploitable in your codebase.