Vulnerability Description
Koha's guided report builder (reports/guided_reports.pl) reads the `order_by` CGI parameter and, for each value, a dynamically-named `{order}_ovalue` parameter, and concatenates both directly into an SQL ORDER BY clause with no allowlist or validation: `my @order_by = $input->multi_param('order_by'); foreach my $order (@order_by) { my $value = $input->param($order . "_ovalue"); $query_orderby = " ORDER BY $order $value"; }`. The resulting string is appended verbatim to the final query in C4::Reports::Guided (`$query .= $orderby;`) with no escaping. Since ORDER BY columns cannot be bound via prepared-statement placeholders, this requires an explicit allowlist, which does not exist. Any staff account with the low-privilege create_reports or execute_reports permission (commonly granted to non-admin library staff) can perform time-based blind SQL injection against the Koha database, which stores patron PII and staff/LDAP credentials.
CVSS Score
HIGH
Related Weaknesses (CWE)
References
- https://github.com/Koha-Community/Koha
- https://github.com/Koha-Community/Koha/blob/master/reports/guided_reports.pl
FAQ
What is CVE-2026-71288?
CVE-2026-71288 is a vulnerability with a CVSS score of 8.8 (HIGH). Koha's guided report builder (reports/guided_reports.pl) reads the `order_by` CGI parameter and, for each value, a dynamically-named `{order}_ovalue` parameter, and concatenates both directly into an ...
How severe is CVE-2026-71288?
CVE-2026-71288 has been rated HIGH with a CVSS base score of 8.8/10. Review the CVSS metrics above for detailed severity breakdown.
Is there a patch for CVE-2026-71288?
Check the references section above for vendor advisories and patch information. Review vendor security bulletins for remediation guidance.