Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Requires an authenticated account with SQL View access (PR:L) reachable over the network at low complexity; description shows data disclosure beyond scope (C:H), with limited integrity and no clear availability impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
3DescriptionCVE.org
DHIS2 is a flexible information system for data capture, management, validation, analytics and visualization. DHIS2 SQL View data endpoints allowed authenticated users with SQL View access to provide crafted filter values that were interpolated into generated SQL. An authenticated user with access to SQL View execution could manipulate SQL generated for SQL View filters and potentially access data outside the intended SQL View result set.
This is distinct from CVE-2026-55084, which tracks the related SQL View filter column-name injection.
Known affected release lines for this advisory: DHIS2 2.37, 2.38, and 2.39 before the 2026-06-09 EOS security updates. Patched by the 2026-06-09 EOS security updates for 2.37, 2.38, and 2.39. The same value-slot hardening was already present on later supported branches through DHIS2-20174 / PR #22253.
AnalysisAI
SQL injection in DHIS2 SQL View data endpoints lets an authenticated user with SQL View execution access supply crafted filter values that are interpolated directly into the generated SQL, allowing them to read data outside the intended SQL View result set. It affects release lines 2.37, 2.38 and 2.39 prior to the 2026-06-09 End-of-Support security updates and carries a vendor CVSS 4.0 score of 8.7 (High). There is no public exploit identified at time of analysis and it is not listed in CISA KEV; the fix reworks filter handling to use parameterized placeholders instead of string interpolation.
Technical ContextAI
DHIS2 is a widely used open-source health information platform for data capture, validation, analytics and visualization. The SQL View feature lets privileged users define and run stored SQL queries; the affected code path (DefaultSqlViewService.parseFilters / getFilterQuery / getSqlForView in dhis-service-administration) built the WHERE clause by concatenating user-supplied filter values into the SQL string. This is a classic CWE-89 SQL Injection root cause: untrusted input crossing into a SQL statement without parameterization. The remediation (PR #22253, DHIS2-20174) refactors the value slots to return a PlaceholderQueryWithArgs structure, passing bound arguments (Object[] args) through populateSqlViewGrid so filter values are supplied as JDBC bind parameters rather than interpolated text.
RemediationAI
Apply the 2026-06-09 EOS security updates for the 2.37, 2.38 or 2.39 line as applicable, or upgrade to a later supported DHIS2 branch that already includes the value-slot parameterization from DHIS2-20174 / PR #22253; consult GHSA-3288-cm98-664f (https://github.com/dhis2/dhis2-core/security/advisories/GHSA-3288-cm98-664f) and the referenced pull requests (22253, 24172, 24173, 24174) for exact backport commits. Where patching must be deferred, restrict SQL View execution authority by revoking the SQL View execution/read authorities from non-administrative users so only fully trusted operators can run views (trade-off: reporting users relying on SQL Views lose that capability), and audit existing SQL Views and access logs for anomalous filter parameters indicating exfiltration attempts. Running the application database account with least privilege (read-only, scoped to required schemas) limits blast radius but may break legitimate write-oriented views.
Same weakness CWE-89 – SQL Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-46351