Skip to content

Prevent SQL Injection in AdminAbstractController - #7

Open
pixeebot-analysis-service[bot] wants to merge 1 commit into
develop-7.0.xfrom
pixeebot/8266d662-6ee1-4054-85b8-42b2d6ae6a1d
Open

pixeebot-analysis-service[bot] wants to merge 1 commit into
develop-7.0.xfrom
pixeebot/8266d662-6ee1-4054-85b8-42b2d6ae6a1d

Conversation

@pixeebot-analysis-service

Copy link
Copy Markdown

Pixee Scan: 6bcf5ede-043b-4d69-b13d-2d9bafab1c12

Confidence: HIGH

Fix confidence is a rating derived from an internal benchmark and includes High, Medium, and Low confidence fixes. It comprises three weighted scores reflecting the safety, effectiveness and cleanliness of Pixee's code changes within a fix. View Details in Pixee.


Remediation

This change fixes finding 320caa37-ccf5-4d5d-84c6-985c98827a4e.

Details

Prevent SQL Injection in AdminAbstractController

Summary

Validated admin sort-property handling in AdminAbstractController to keep untrusted identifiers out of query construction.

Vulnerability Description

SQL Injection occurs when an application builds a database or Java Persistence query with attacker-controlled input. If user-supplied data reaches query text without strict validation or parameterization, an attacker can change the query structure instead of just its values. That can expose sensitive records, bypass authorization checks, or modify and delete data.

Changes Made

AdminAbstractController.java previously copied request-provided sort property names directly into FilterAndSortCriteria, which allowed untrusted identifier data to flow into later query building. Because those sort fields are used to construct ORDER BY clauses, the pattern was dangerous even though the values themselves were not being parameterized. The fix introduced a validation check for each sort property before it is used. Invalid values now trigger an IllegalArgumentException, and the controller only continues with validated property names when it populates or updates the criteria map. This keeps the query-building path constrained to safe sort identifiers at the admin controller boundary.

Guidance Adherence

Source: Pixee Knowledge Base

Applied the following guidance from the remediation instructions:

  • Replace the raw SQL query with a parameterized query / update the call site to pass parameters: not done. The diff only adds isValidSortProperty(...) validation in AdminAbstractController.getCriteria(...) and does not modify any SQL/JPA query construction, prepared statement, or query call site as required by the guidance.
  • Prepared statements for values only, not identifiers: the diff does use an allowlist regex (^[a-zA-Z0-9_]+(?:\\.[a-zA-Z0-9_]+)*$) for sortProperty, which matches the guidance’s validation approach for dynamic identifiers. However, the vulnerable flow provided is not a raw SQL identifier-construction issue; it is a data flow into FilterAndSortCriteria/query-building infrastructure, and the fix does not demonstrate the required parameterized-query remediation at the actual sink.
  • Do not move the query; update the variable/call site: no query variable or call site was changed in the diff, so the requested two-hunk remediation pattern was not satisfied.

Because the patch adds input validation in controller sorting logic but does not address the actual SQL injection remediation pattern described in the guidance, I am rejecting it as not aligned with the expected fix.

@clevernyyyy

Copy link
Copy Markdown

Logo
Checkmarx One – Scan Summary & Detailsba9997be-62b2-463b-be03-e095bafc89e5


New Issues (27)

Critical: 5 · High: 7 · Medium: 14 · Low: 1

Checkmarx found the following issues in this Pull Request

# Severity Issue Source File / Package Checkmarx Insight
1 CRITICAL CVE-2026-47884 Maven-org.springframework:spring-webmvc-6.2.17
detailsRecommended version: 7.0.9
Description: Use of XsltView in a Spring MVC application can result in SSRF and RCE attack if the application has an mapping that results in view rendering, and...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: CXEJwjxX8kCV6%2BzPSps1rgLlHuwR7VuPOx1k3dBhiio%3D
Vulnerable Package
2 CRITICAL CVE-2026-47890 Maven-org.springframework:spring-webmvc-6.2.17
detailsRecommended version: 7.0.9
Description: Spring MVC and WebFlux applications are vulnerable to stream corruption when using Server-Sent Events (SSE) with view fragments. Spring Framework 7...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: cDcnpPzCGSVzpla7dGxTd4Usa1w5jT3Y6Ro7EZJyfx8%3D
Vulnerable Package
3 CRITICAL CVE-2026-59270 Maven-org.springframework.security:spring-security-ldap-6.5.9
detailsRecommended version: 7.0.7
Description: Spring Security's embedded UnboundID LDAP server (UnboundIdContainer) unconditionally registers an administrative credential and binds its listener...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: T5sU8GTLZZFzwar%2FdHTvPXYK8MXKPwiHrtQ0P3zAzYE%3D
Vulnerable Package
4 CRITICAL CVE-2026-59283 Maven-org.springframework:spring-expression-6.2.17
detailsRecommended version: 7.0.9
Description: Applications that evaluate Spring Expression Language (SpEL) expressions using "SimpleEvaluationContext" may be vulnerable to a safety guard bypass...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: YZN9aFw4txSUXA24rqGFBpFJ9PbMz2MWbxDxLQHQ6VQ%3D
Vulnerable Package
5 CRITICAL CVE-2026-59313 Maven-org.springframework:spring-webmvc-6.2.17
detailsRecommended version: 7.0.9
Description: Spring MVC applications using the functional web framework are vulnerable to stream corruption when using Server-Sent Events (SSE). This issue affe...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: Rbz7YWgsHyf3u0hijBflBKhJHgSFAgGhi%2FxaexGBmS8%3D
Vulnerable Package
6 HIGH CVE-2026-47886 Maven-org.springframework:spring-expression-6.2.17
detailsRecommended version: 7.0.9
Description: Applications that evaluate user-supplied Spring Expression Language (SpEL) expressions may be vulnerable to a Denial-of-Service (DoS) attack when t...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: EvnbHZt%2FlyOuQrJxn8N0gPkeyvuCDn74G%2F1eZMX3zz0%3D
Vulnerable Package
7 HIGH CVE-2026-47888 Maven-org.springframework:spring-messaging-6.2.17
detailsRecommended version: 7.0.9
Description: A Spring RSocket application is exposed to a memory leak via a malformed SETUP frame. This issue affects Spring Framework versions from 5.2.0.RELEA...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: v%2F9qWbkcV82Di0omRzZaT%2FOL0agR92eigL7gEnoambk%3D
Vulnerable Package
8 HIGH CVE-2026-47889 Maven-org.springframework:spring-web-6.2.17
detailsRecommended version: 7.0.9
Description: A WebFlux application running on the Jetty 12 Core reactive adapter serializes response cookies without the "sameSite" attribute. This issue affect...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: HW9iymWEFvpjZzB0eDs9Z5iTtkiElCJ%2BdyNTJqJrzcE%3D
Vulnerable Package
9 HIGH CVE-2026-59282 Maven-org.springframework:spring-beans-6.2.17
detailsRecommended version: 7.0.9
Description: Spring Framework applications that use Spring's data binding infrastructure to apply user-supplied property paths onto a target object may be vulne...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: cgZlXGfKnjOF3b60weBnHPCylNkplzDq%2B7WtehHgwxI%3D
Vulnerable Package
10 HIGH CVE-2026-78254 Maven-org.apache.ant:ant-1.10.14
detailsRecommended version: 1.10.18
Description: The ftp and scp tasks of Apache Ant can download files from a remote server. A malicious server can provide relative paths that allow it to write o...
Attack Vector: NETWORK
Attack Complexity: HIGH

ID: BPQ%2FLR90y%2BzGRcaO%2BUulM4G4djbEEAqba2r2pHahe30%3D
Vulnerable Package
11 HIGH CVE-2026-78254 Maven-org.apache.ant:ant-1.10.11
detailsRecommended version: 1.10.18
Description: The ftp and scp tasks of Apache Ant can download files from a remote server. A malicious server can provide relative paths that allow it to write o...
Attack Vector: NETWORK
Attack Complexity: HIGH

ID: Xq6Xcx0dGOlvUZh9ir4ti%2B%2BX52sOEzzCFWAoQtIGZQA%3D
Vulnerable Package
12 HIGH Improper_Restriction_of_Stored_XXE_Ref core/broadleaf-framework/src/main/java/org/broadleafcommerce/core/search/service/solr/FileSystemSolrIndexStatusProviderImpl.java: 430
detailsThe loads and parses XML using transform, at line 146 of /core/broadleaf-framework/src/main/java/org/broadleafcommerce/core/search/service/solr/F...
ID: tQbby4ocqcXMfUVLB6Mr5PdNh%2Bo%3D
Attack Vector
13 MEDIUM CVE-2026-19032 Maven-com.fasterxml.jackson.core:jackson-databind-2.21.2
detailsRecommended version: 2.21.3.redhat-00001
Description: jackson-databind's deserializer for `java.nio.file.Path` resolves an attacker-supplied URI without restricting the URI scheme. In `JDKFromStringDes...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: e5pgypf5D30pQatL%2Forbx5j2Mf6jGPZg5VBpMaEOjhw%3D
Vulnerable Package
14 MEDIUM CVE-2026-19880 Maven-ch.qos.logback:logback-classic-1.5.32
detailsRecommended version: 1.6.3
Description: Path-traversal vulnerability in QOS.CH Sarl Logback-classic on Java (logback-classic module) allows path-traversal vulnerability. More specifically...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: QdpJIyokZD8gNjO8efBSvZK2dcbpHtnrluSW1K%2FbiIs%3D
Vulnerable Package
15 MEDIUM CVE-2026-47842 Maven-org.springframework.security:spring-security-crypto-6.5.9
detailsRecommended version: 7.0.7
Description: Applications using AesBytesEncryptor with the two-argument constructor or when passing a null IV generator and CBC as the encryption mode encrypt d...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: FpKk7OPk9XZ1RpNkGYJqUzYWH0IrcgMM%2BHZYAQJiS1o%3D
Vulnerable Package
16 MEDIUM CVE-2026-47883 Maven-org.springframework:spring-webmvc-6.2.17
detailsRecommended version: 7.0.9
Description: UrlHandlerFilter can be vulnerable to an Open Redirect when configured with very broadly matching patterns. The issue applies to the filter variant...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: dw5i0tX1Fh7CRITsFt4Ov8ahfLXnwDKcSECmo%2Bg2Igw%3D
Vulnerable Package
17 MEDIUM CVE-2026-47887 Maven-org.springframework:spring-webmvc-6.2.17
detailsRecommended version: 7.0.9
Description: A Spring MVC application that uses "UrlFileNameViewController" that is mapped with an end-of-path, and does not have a configured prefix is vulnera...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: W9bYbr7t3QnDzzhp5t80nSAmcnjOnXXP6hIJqsclbng%3D
Vulnerable Package
18 MEDIUM CVE-2026-59276 Maven-org.springframework.security:spring-security-core-6.5.9
detailsRecommended version: 7.0.7
Description: Several components in Spring Security compare security-sensitive values using standard string equality "String.equals()" rather than a constant-tim...
Attack Vector: NETWORK
Attack Complexity: HIGH

ID: 520yeIbocSEfkU08Py3LSQG%2BgrTqZopYP8uvucMWy28%3D
Vulnerable Package
19 MEDIUM CVE-2026-59280 Maven-org.springframework:spring-context-support-6.2.17
detailsRecommended version: 7.0.9
Description: Applications using Spring Framework's FreeMarker integration may be vulnerable to a Path Traversal attack when a controller returns a view name der...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: DWKZguU8sFGLWR%2FcrjIq94ISNCUfKmiedXeL5O8r0Hg%3D
Vulnerable Package
20 MEDIUM CVE-2026-59281 Maven-org.springframework:spring-web-6.2.17
detailsRecommended version: 7.0.9
Description: Spring MVC and WebFlux applications that obtain a data-binding Errors instance with HTML escaping enabled and then render field errors using the no...
Attack Vector: NETWORK
Attack Complexity: LOW

ID: z5eQd59eL60uA7OMt%2BNaOfYELKgsrFVp%2BkLug0NDptA%3D
Vulnerable Package
21 MEDIUM CVE-2026-77310 Maven-com.fasterxml.jackson.core:jackson-databind-2.21.2
detailsRecommended version: 2.21.5
Description: jackson-databind contains the general-purpose data-binding functionality and tree-model for Jackson Data Processor. From 2.0.x prior to versions 2....
Attack Vector: NETWORK
Attack Complexity: LOW

ID: pKaRV0RY5svrifMQG7Ps8zzTh%2BCb9cMpfXdJZAMsvig%3D
Vulnerable Package
22 MEDIUM CVE-2026-83557 Maven-com.fasterxml.jackson.core:jackson-databind-2.21.2
detailsRecommended version: 2.21.3.redhat-00001
Description: DefaultBaseTypeLimitingValidator is the PolymorphicTypeValidator applied automatically whenever @JsonTypeInfo is used without an explicitly configu...
Attack Vector: NETWORK
Attack Complexity: HIGH

ID: kWKtA7CF%2BckXqXJ7bcmSnKxTgwncKlDc0XIl65onUsU%3D
Vulnerable Package
23 MEDIUM Insufficiently_Protected_Credentials admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/server/security/dao/AdminUserDaoImpl.java: 64
detailsThe password 64 did not used a secure scheme to store the password - this may allow attackers to retrieve it, and use it to access authenticated r...
ID: BXNSI5qdnc%2FhwrBgX4PB8%2FE8IjE%3D
Attack Vector
24 MEDIUM Insufficiently_Protected_Credentials admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/server/dao/DynamicEntityDaoImpl.java: 201
detailsThe password 201 did not used a secure scheme to store the password - this may allow attackers to retrieve it, and use it to access authenticated ...
ID: g%2BHofNvGE5ARrQp2silViAmOF8c%3D
Attack Vector
25 MEDIUM Insufficiently_Protected_Credentials admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/server/security/dao/AdminUserDaoImpl.java: 64
detailsThe password 64 did not used a secure scheme to store the password - this may allow attackers to retrieve it, and use it to access authenticated r...
ID: zy8RH7zuU9wQ%2BYq8a1Xz5UFMkb4%3D
Attack Vector
26 MEDIUM Privacy_Violation admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/server/security/domain/AdminUserImpl.java: 212
detailsMethod at line 212 of /admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/server/security/domain/AdminUserImpl....
ID: ZDAJj6eOQPxRUizBe3Ftf%2BT4xMI%3D
Attack Vector
27 LOW CVE-2026-59314 Maven-org.springframework:spring-web-6.2.17
detailsRecommended version: 7.0.9
Description: Applications that build a Content-Disposition header value from untrusted input may be vulnerable to HTTP response splitting when the input is a ma...
Attack Vector: NETWORK
Attack Complexity: HIGH

ID: jjwzrFc84QPMPe8vZGNL4AwEQio4PlTejD0Rvxr3a8k%3D
Vulnerable Package

Fixed Issues (38)

Medium: 5 · Low: 33

Great job! The following issues were fixed in this Pull Request

Severity Issue Source File / Package
MEDIUM Open_Redirect admin/broadleaf-contentmanagement-module/src/main/java/org/broadleafcommerce/cms/admin/web/controller/AdminAssetUploadController.java: 108
MEDIUM Privacy_Violation admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/server/security/handler/AdminUserCustomPersistenceHandler.java: 163
MEDIUM Privacy_Violation admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/server/security/domain/AdminUserImpl.java: 247
MEDIUM Use_Of_Hardcoded_Password core/broadleaf-framework-web/src/main/java/org/broadleafcommerce/core/web/controller/account/BroadleafLoginController.java: 54
MEDIUM Use_Of_Hardcoded_Password core/broadleaf-framework-web/src/main/java/org/broadleafcommerce/core/web/controller/account/BroadleafLoginController.java: 47
LOW Heap_Inspection core/broadleaf-framework-web/src/main/java/org/broadleafcommerce/core/web/controller/account/BroadleafLoginController.java: 124
LOW Log_Forging admin/broadleaf-admin-module/src/main/java/org/broadleafcommerce/admin/web/controller/entity/AdminOfferController.java: 120
LOW Log_Forging admin/broadleaf-admin-module/src/main/java/org/broadleafcommerce/admin/web/controller/entity/AdminProductController.java: 403
LOW Log_Forging admin/broadleaf-contentmanagement-module/src/main/java/org/broadleafcommerce/cms/admin/web/controller/AdminAssetController.java: 133
LOW Log_Forging admin/broadleaf-admin-module/src/main/java/org/broadleafcommerce/admin/web/controller/entity/AdminOfferController.java: 91
LOW Log_Forging admin/broadleaf-contentmanagement-module/src/main/java/org/broadleafcommerce/cms/admin/web/controller/AdminPageController.java: 114
LOW Log_Forging admin/broadleaf-contentmanagement-module/src/main/java/org/broadleafcommerce/cms/admin/web/controller/AdminPageController.java: 83
LOW Log_Forging admin/broadleaf-contentmanagement-module/src/main/java/org/broadleafcommerce/cms/admin/web/controller/AdminAssetController.java: 118
LOW Log_Forging admin/broadleaf-admin-module/src/main/java/org/broadleafcommerce/admin/web/controller/entity/AdminOfferController.java: 106
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/controller/AdminUserManagementController.java: 79
LOW Log_Forging admin/broadleaf-contentmanagement-module/src/main/java/org/broadleafcommerce/cms/admin/web/controller/AdminAssetController.java: 87
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/controller/AdminTranslationController.java: 337
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/controller/entity/AdminBasicEntityController.java: 881
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/controller/AdminTranslationController.java: 244
LOW Log_Forging admin/broadleaf-admin-module/src/main/java/org/broadleafcommerce/admin/web/controller/entity/AdminOfferController.java: 77
LOW Log_Forging admin/broadleaf-admin-module/src/main/java/org/broadleafcommerce/admin/web/controller/entity/AdminProductController.java: 287
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/controller/entity/AdminBasicEntityController.java: 245
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/controller/entity/AdminBasicEntityController.java: 454
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/controller/AdminUserManagementController.java: 61
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/filter/BroadleafAdminRequestFilter.java: 133
LOW Log_Forging admin/broadleaf-admin-module/src/main/java/org/broadleafcommerce/admin/web/controller/entity/AdminFieldController.java: 64
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/filter/BroadleafAdminRequestFilter.java: 136
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/filter/BroadleafAdminRequestFilter.java: 135
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/controller/AdminTranslationController.java: 138
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/filter/BroadleafAdminRequestFilter.java: 134
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/filter/BroadleafAdminRequestFilter.java: 137
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/filter/BroadleafAdminRequestFilter.java: 134
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/controller/entity/AdminBasicOperationsController.java: 94
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/filter/BroadleafAdminRequestFilter.java: 137
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/filter/BroadleafAdminRequestFilter.java: 136
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/filter/BroadleafAdminRequestFilter.java: 133
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/filter/BroadleafAdminRequestFilter.java: 135
LOW Log_Forging admin/broadleaf-open-admin-platform/src/main/java/org/broadleafcommerce/openadmin/web/controller/entity/AdminBasicOperationsController.java: 182

Communicate with Checkmarx by submitting a PR comment with @Checkmarx followed by one of the supported commands. Learn about the supported commands here.

@drdavella

Copy link
Copy Markdown

@pixeebot testing SCM PR feedback capture end-to-end. This looks like a good fix!

@drdavella

Copy link
Copy Markdown

@pixeebot second attempt testing SCM PR feedback capture end-to-end. This looks like a good fix!

@drdavella

Copy link
Copy Markdown

@pixeebot third attempt testing SCM PR feedback capture end-to-end. This looks like a good fix!

@drdavella

Copy link
Copy Markdown

@pixeebot fourth attempt testing SCM PR feedback capture end-to-end. This looks like a good fix!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants