GHSA-7pvg-2h32-c6jc
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege read user
-
DeliverySend GET with crafted orderBy/order parameter
-
ExploitBypass regex validation on ORDER BY
-
ExecutionTrigger time-based blind SQL injection
-
ImpactExfiltrate database records via inferred delays
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Parameterized queries, prepared statements
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Persistence The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated account with read access to centers or to the specific targeted datatable (the description states 'any authenticated user with read access'), so this is not anonymous/pre-auth exploitation. The exact affected endpoints are GET /api/v1/centers and the datatable read endpoints GET /api/v1/datatables/{datatable}/{apptableId} and GET /api/v1/datatables/{datatable}/{apptableId}/{datatableId}. The trigger is a caller-supplied orderBy, sortOrder, or order query parameter crafted to evade the existing regex-based validation; the vulnerable versions are Apache Fineract up to and including 1.15.0. The limiting factors are the authentication/read-authorization requirement and the blind (time-based) nature of the injection, which slows bulk extraction; upgrading to 1.16.1 removes the flaw. |
| Impact | This is a genuine prioritization candidate but not a drop-everything emergency, and the signals are internally consistent rather than conflicting. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N) describes a network-reachable, low-complexity flaw requiring only low privileges - matching the description, which states that any authenticated user with read access to centers or to the targeted datatable can exploit it. The vuln.today decision label is 'this_week' (not act_now/emergency), which aligns with the remaining signals: EPSS is low at 0.28% (20th percentile), there is no CISA KEV listing, and no public exploit code was supplied - only the upstream fix PRs. So the high CVSS (8.8) reflects real severity for an authenticated SQL injection, but the real-world urgency is tempered by the authentication precondition, low exploitation probability, and absence of confirmed active exploitation. The one point worth flagging for analysts: the published CVSS claims full C:H/I:H/A:H, yet the described mechanism is time-based blind SQL injection in an ORDER BY clause, which typically enables data disclosure far more readily than data modification or destruction - treat the integrity/availability impact as less certain than the confidentiality impact. |
| Exploit ScenarioDerived | An authenticated low-privilege user with read access to centers or a datatable sends a GET request to GET /api/v1/centers or GET /api/v1/datatables/{datatable}/{apptableId} with a crafted orderBy/sortOrder/order parameter that evades the regex validation and is concatenated directly into the SQL ORDER BY clause. Using time-based blind techniques (conditional delays), the attacker infers database contents character-by-character to exfiltrate sensitive financial records. No public exploit code was provided, though the fix PRs confirm the vulnerable code path. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Nov 02, 2026
Time-based blind SQL injection in Apache Fineract through 1.15.0 lets an authenticated user who already holds read access to centers or to a specific datatable inject arbitrary SQL through the orderBy, sortOrder and order query parameters of the center read endpoint (GET /api/v1/centers) and the datatable read endpoints (GET /api/v1/datatables/{datatable}/{apptableId} and /api/v1/datatables/{datatable}/{apptableId}/{datatableId}). The bug is CWE-89: caller-supplied ordering values are concatenated straight into the SQL ORDER BY clause and the pre-existing regex validation (ColumnValidator) can be bypassed; the project's own fix replaces that regex with an allowlist check against the datatable's real column headers. Exploitation is not anonymous - it requires a valid account with the relevant read permission - and because the injection is blind and time-based, bulk data extraction is slow; EPSS is 0.28% (20th percentile), there is no CISA KEV listing and no public exploit code identified at time of analysis, and Apache recommends upgrading to 1.16.1.
Earlier versions of this analysis (1)
SQL injection in Apache Fineract 1.15.0 and earlier lets an authenticated user with read access to centers or to a targeted datatable inject arbitrary SQL through the orderBy, sortOrder and order parameters of the Center read endpoint (GET /api/v1/centers) and the datatable entry read endpoints (GET /api/v1/datatables/{datatable}/{apptableId} and .../{datatableId}). The caller-supplied ordering values are concatenated directly into the SQL ORDER BY clause and the existing regex-based validation can be bypassed, giving time-based blind injection where data is inferred from response timing rather than returned in the response. The assessed vector is CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N (high confidentiality impact only), so credentials plus the relevant read permission are mandatory and no anonymous path is described. No KEV entry, EPSS score or verified working exploit code was present in the available data, and the vuln.today decision label is 'awaiting_data'; version 1.16.1 fixes the issue.
RemediationAI
Upgrade Apache Fineract to 1.16.1, which is the version the vendor names as fixing the issue; the code changes are visible in pull requests https://github.com/apache/fineract/pull/6230 (allowlist-based ORDER BY validation in DatatableUtil, replacing ColumnValidator on this path) and https://github.com/apache/fineract/pull/6277, and the announcement is at https://lists.apache.org/thread/c4q539mkm5blnp5vdb72tzq6r9qg7bdh with the advisory at https://seclists.org/oss-sec/2026/q4/441. Upgrading is the only complete fix described by the vendor, since the flaw is in the shipped SQL construction and no configuration switch is documented as disabling the affected ordering parameters. Because the vulnerability is only reachable by an authenticated user who holds read access to centers or to the targeted datatable, reducing the population of accounts granted those read permissions and reviewing who currently holds them limits exposure until the upgrade is applied, at the cost of narrowing legitimate reporting workflows for those users; this is a scoping measure, not a substitute for the patch. Detection of prior abuse is also difficult given the time-based blind technique, so review API access logs for unusual orderBy, sortOrder or order parameter values on the center and datatable read endpoints around the time of upgrade.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Apache Fineract is an open-source core banking platform built on Java/Spring, and the vulnerable code sits in the dataqueries service layer (DatatableUtil in fineract-provider). Datatable reads are assembled as native SQL strings, and the ordering fragment previously went through ColumnValidator, a regex-based SQL-injection filter, before being appended as " order by " + order. Regex blocklists of this kind are structural weak points: they must anticipate every syntactic form the underlying database accepts, and any gap becomes an injection primitive. Here the bypass permits time-based blind SQL injection, meaning the attacker infers data by observing query latency rather than by seeing returned rows, which is slow but reliable and leaves little in the application response. The upstream fix (PR 6230, with follow-on PR 6277) removes ColumnValidator from this path and introduces validateAndBuildOrderClause, which parses a single column name (optionally double-quoted for Postgres/ANSI or backtick-quoted for MySQL/MariaDB, honoring doubled-quote escapes), checks it against the actual ResultsetColumnHeaderData column names of the target datatable, permits only ASC or DESC as a direction token, and then re-escapes the identifier through sqlGenerator.escape before concatenation - an allowlist rather than a blocklist, and dialect-aware. The CPE cpe:2.3:a:apache:fineract:*:*:*:*:*:*:*:* covers all released versions, with EUVD recording the affected range as Apache Fineract 0 through 1.15.0.
Know when Fineract gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Authenticated read user (PR:L) exploits network endpoint with low complexity; blind SQLi yields full data read (C:H), while ORDER BY context limits writes/outage to L.
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
2Description PRE-NVD
Executive ViewAI
A high-severity SQL injection vulnerability in Apache Fineract, an open-source banking platform, could allow authenticated users with limited read permissions to extract sensitive data from the underlying database. This affects the confidentiality of financial and customer information and may undermine trust in the platform's security controls.
No vendor-released patch identified at time of analysis. Interim mitigations include restricting access to vulnerable endpoints, enforcing least privilege, and deploying WAF rules to detect and block SQL injection attempts.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
SQL injection exploits the way applications construct database queries by mixing user input directly into SQL statements.
Related Vulnerabilities in Apache Fineract SQL Injection Flaws
View all 2Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in Apache Fineract.8.
Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') vulnerability in Apache Fineract.8.
In Apache Fineract versions 1.0.0, 0.6.0-incubating, 0.5.0-incubating, 0.4.0-incubating, Using a single quotation escape
SQL Injection vulnerability in various API endpoints - offices, dashboards, etc. Rated critical severity (CVSS 9.4), thi
Exposure of insufficiently protected credentials in Apache Fineract through 1.11.0 allows unauthenticated remote attacke
SQL injection in Apache Fineract's Report Execution API (the runreports endpoint) in all versions up to and including 1.
In Apache Fineract 0.4.0-incubating, 0.5.0-incubating, and 0.6.0-incubating, an authenticated user with client/loan/cent
Improper Privilege Management vulnerability in Apache Fineract.8.5. Rated high severity (CVSS 8.8), this vulnerability i
Apache Fineract allowed an authenticated user to perform remote code execution due to a path traversal vulnerability in
In Apache Fineract versions 1.0.0, 0.6.0-incubating, 0.5.0-incubating, 0.4.0-incubating, the system exposes different RE
Weak password requirements in Apache Fineract through 1.10.1 allow attackers to more easily compromise user accounts via
EUVD-2026-113749
NVD
CVE.org
EPSS
Exploit-DB