[ 
https://issues.apache.org/jira/browse/FINERACT-2662?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Adam Monsen updated FINERACT-2662:
----------------------------------
    Labels: security sql  (was: )

> Office search API: sanitise orderBy parameter
> ---------------------------------------------
>
>                 Key: FINERACT-2662
>                 URL: https://issues.apache.org/jira/browse/FINERACT-2662
>             Project: Apache Fineract
>          Issue Type: Bug
>          Components: Organization
>            Reporter: Terence Monteiro
>            Priority: Critical
>              Labels: security, sql
>
> h2. Summary
> The {{orderBy}} query parameter on {{GET /api/v1/offices}} is not adequately
> validated, allowing malformed input to reach SQL execution. The 
> ColumnValidator
> introduced as the CVE-2024-32838 fix does not cover all injection patterns
> applicable to ORDER BY clauses.
> h2. Root Cause
> In {{OfficeReadPlatformServiceImpl.java}} (lines 162–163), {{orderBy}} input 
> is
> concatenated into the SQL string before {{ColumnValidator}} runs. The 
> validator
> was designed for WHERE-clause injection patterns; for ORDER BY input it 
> extracts
> no operands and passes silently. Certain ORDER BY payloads carrying no 
> semicolons,
> no AND/OR prefixes, and no comparison operators match none of the defined 
> regex
> patterns.
> h2. Affected Files
>  * {{fineract-provider/.../office/service/OfficeReadPlatformServiceImpl.java}}
>  * {{fineract-core/.../api/paging/PaginationParameters.java}}
>  * {{fineract-core/.../security/utils/ColumnValidator.java}}
> h2. Proposed Fix
> Replace blacklist-based validation with a strict column-name allowlist using 
> the
> InputValidator framework already in place for the client search endpoint. 
> Allowed
> values correspond to the fields present in the {{GET /api/v1/offices}} 
> response
> payload; anything outside this set is rejected with HTTP 403 before reaching
> {{{}OfficeReadPlatformServiceImpl{}}}.
> h2. Cross-Endpoint Note
> Validation coverage for {{orderBy}} is inconsistent across endpoints that use
> {{{}PaginationParameters.orderBySql(){}}}. A follow-up audit of remaining 
> callers
> is recommended under a separate ticket.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to