Cyber Resilience

CVE-2026-31891

SQLi in Agentejo Cockpit ≤ 2.13.5

Published
18 March 2026
Modified
20 March 2026
Patch / advisory
CVSS Score v3.1 7.7
Click a component to see what it means
Raw vectorCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
EPSS Score 0.0040 33th percentile
Risk Priority 54 floored blend · peak EPSS

Summary

CVE-2026-31891 is a high-severity SQL Injection (CWE-89) vulnerability in Agentejo Cockpit. Its CVSS base score is 7.7 (High).

Operationally, exploitation aligns with the MITRE ATT&CK technique Exploit Public-Facing Application (T1190); ranked at the 33th percentile by exploit likelihood (below the median); it is not currently listed in the CISA KEV catalog.

The strongest mitigations our analysis identified map to SA-11 (Developer Testing and Evaluation) and SI-10 (Information Input Validation) — see the control section below for these in your framework.

Deeper analysis AI-assisted summary

Synthesised by an AI model from the NVD description and linked references — a reading aid, not an authoritative source.

CVE-2026-31891 is a SQL injection vulnerability (CWE-89) affecting Cockpit, a headless content management system, in versions 2.13.4 and earlier. The issue resides in the MongoLite Aggregation Optimizer, specifically within the `toJsonExtractRaw()` method in `lib/MongoLite/Aggregation/Optimizer.php`, where unsanitized field names in aggregation queries allow arbitrary SQL injection. Cockpit CMS instances with API access enabled are potentially vulnerable if the `/api/content/aggregate/{model}` endpoint is publicly accessible or reachable by untrusted users. The vulnerability carries a CVSS v3.1 base score of 7.7 (AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N).

Attackers possessing a valid read-only API key—the lowest privilege level—can exploit this vulnerability without requiring admin access. By crafting malicious aggregation queries with injected SQL via field names, they can bypass the `_state=1` filter that restricts access to published content, enabling retrieval of unpublished or restricted data from the underlying SQLite content database.

The vulnerability has been addressed in Cockpit version 2.13.5, which applies field-name sanitization—previously introduced in v2.13.3 for the `toJsonPath()` method—to the `toJsonExtractRaw()` function, thereby closing the injection vector. Official advisories and the release notes are available at the Cockpit GitHub repository's release page for v2.13.5 and the security advisory GHSA-7x5c-vfhj-9628.

OWASP Top 10 for Web (2025)

EU & UK References

Vulnerability Data

Cockpit is a headless content management system. Any Cockpit CMS instance running version 2.13.4 or earlier with API access enabled is potentially affected by a a SQL Injection vulnerability in the MongoLite Aggregation Optimizer. Any deployment where the `/api/content/aggregate/{model}` endpoint…

more

is publicly accessible or reachable by untrusted users may be vulnerable, and attackers in possession of a valid read-only API key (the lowest privilege level) can exploit this vulnerability — no admin access is required. An attacker can inject arbitrary SQL via unsanitized field names in aggregation queries, bypass the `_state=1` published-content filter to access unpublished or restricted content, and extract unauthorized data from the underlying SQLite content database. This vulnerability has been patched in version 2.13.5. The fix applies the same field-name sanitization introduced in v2.13.3 for `toJsonPath()` to the `toJsonExtractRaw()` method in `lib/MongoLite/Aggregation/Optimizer.php`, closing the injection vector in the Aggregation Optimizer.

CWE(s)

Related Threats

MITRE ATT&CK Enterprise Techniques

T1190 Exploit Public-Facing Application Initial Access
Adversaries may attempt to exploit a weakness in an Internet-facing host or system to initially access a network.
Derived from this CVE’s CWE(s) via the direct CWE→ATT&CK cross-walk.

CVEs Like This One

CVE-2020-35847Same product: Agentejo Cockpit
CVE-2020-35848Same product: Agentejo Cockpit
CVE-2020-35846Same product: Agentejo Cockpit
CVE-2023-26034Shared CWE-89
CVE-2023-46914Shared CWE-89
CVE-2023-44284Shared CWE-89
CVE-2023-48722Shared CWE-89
CVE-2024-4071Shared CWE-89
CVE-2023-49085Shared CWE-89
CVE-2024-25314Shared CWE-89

Affected Assets

agentejo
cockpit
≤ 2.13.5

Mitigating Controls

Control response

Prevent
Stop it (NIST 800-53)

Detect
Catch it (NIST detect / respond)

Harden
Shrink the surface (DISA STIG)

Validate
Prove the fix (OWASP ASVS)
  • V6.2.5

Mitigating Controls (NIST 800-53 r5) AI

Developer testing and evaluation can discover SQLi flaws before deployment but does not stop their introduction.

Input validation directly stops untrusted data from reaching SQL query construction without neutralization.

Secure engineering principles require parameterized queries and input sanitization that structurally eliminate SQLi.

System monitoring can identify attempted SQLi exploitation via anomalous queries after the weakness exists.

Mitigating Controls (NIST CSF 2.0) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→CSF cross-walk (authority under review) — links open the control.

PR.PS-06 mostly match
prevents

Secure SDLC practices directly target injection flaws during coding and review so largely prevent CWE-89 introduction, yet the single broad outcome leaves residual risk from incomplete neutralization techniques or missed edge cases.

PR.AT-02 partial match
prevents

Training raises developer awareness of SQLi risks and can reduce introduction likelihood (partial) but removes none of the actual coding flaw's risk by itself since technical neutralization is still required.

Mitigating Controls (ISO/IEC 27001:2022 Annex A) AI

Derived directly from the weakness types (CWEs) cited in the NVD entry via our AI-authored CWE→ISO cross-walk (authority under review) — links open the control.

finds

The same secure-coding and static-analysis activities surface missing neutralization of SQL metacharacters before the system is accepted.

prevents

Early warnings and shared best-practice information help organizations apply the latest remediation techniques against SQL-injection vulnerabilities.

prevents

Threat-intelligence feeds that surface new SQL-injection campaigns enable rapid updates to query-construction defenses and detection signatures before exploitation occurs.

prevents

Secure-coding rules and security testing phases mandate the use of parameterized queries or equivalent escaping, preventing the construction of dynamic SQL statements from untrusted input.

prevents

Language-specific secure coding rules, peer review and SAST together prevent the construction of SQL statements from untrusted data without proper parameterization or escaping.

References