CVE-2026-6428
Official description Straight from the sourceThe vendor's or NVD's own wording, published unedited. Authoritative, but often terse — it says what broke, rarely what to do.
NVD · uneditedSQL Injection in reports/catalogue_out.pl in Koha Community Koha through 22.11.37, 23.x, 24.x before 24.11.16, 25.05.x before 25.05.11, 25.11.x before 25.11.05, 26.05.x before 26.05.01, and 26.11.x before 26.11.00 allows an authenticated staff user with the Reports module flag to read arbitrary data from the Koha application database via the Filter URL parameter when the Criteria parameter matches /branchcode/.
Technical summary Written by usOur analysis, written from the advisory, the CVSS vector and the affected-version data. It adds context the advisory leaves out, and never invents facts that are not in the source.
dbcve analysis · high confidenceSQL Injection in Koha's reports/catalogue_out.pl allows authenticated staff users with Reports module privileges to inject unsanitized input via the Filter parameter into a LIKE clause. The calculate subroutine concatenates the Filter value directly into SQL without parameterization, enabling error-based injection (EXTRACTVALUE) to exfiltrate sensitive data from tables including borrowers (password hashes, 2FA secrets, PII), api_keys, and sessions.
Verify against the referenced sources before acting — the references below are authoritative for this CVE, this summary is not.
CVSS breakdown How the score is builtThe industry scoring standard. It rates how the flaw is reached, what it takes to exploit, and what an attacker gains — the score is derived from those, not the other way round.
From the vector- Attack vector
- Network
- Complexity
- Low
- Privileges
- Low
- User interaction
- None
- Scope
- Unchanged
- Confidentiality
- High
- Integrity
- Low
- Availability
- Low
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:L
Am I affected? How to checkSteps we derive from the advisory and the affected-version data, so you can decide whether this CVE reaches your setup. They are a guide, not a scan — your own configuration is the authority.
dbcve checksWork through these to decide whether this CVE applies to you.
-
Identify Koha installation and versionLocate the Koha installation directory and check the version file (typically koha-conf.xml or a VERSION file in the root directory). Run: grep -i version /path/to/koha/lib/Koha.pm 2>/dev/null || cat /usr/share/koha/lib/Koha/Version.pm 2>/dev/null | grep -i versionAffected if The installed version is below 22.11.38, 24.11.16, 25.05.11, 25.11.05, 26.05.01, or 26.11.00 (older vulnerable versions)
-
Locate the vulnerable scriptFind the catalogue_out.pl file in the reports directory. Common paths include: /usr/share/koha/lib/C4/Reports/catalogue_out.pl or /var/lib/koha/library/koha/lib/C4/Reports/catalogue_out.plAffected if The file exists in the installation and originates from an unpatched version
-
Inspect the Filter parameter handling in the codeOpen the catalogue_out.pl file and search for string concatenation involving 'Filter' and LIKE clauses. Look for patterns like: $dbh->prepare("SELECT ... LIKE '%" . $filter . "%'") or similar direct concatenation without parameter bindingAffected if Code shows direct string concatenation of the Filter parameter into SQL (e.g., ... LIKE '%" . $filter . "%') instead of parameterized placeholders like ? or :filter
-
Verify Reports module is enabled and accessibleCheck the system preferences or permission tables for the Reports module. In the Koha admin interface, navigate to: More > Administration > Global system preferences > Administration > and confirm reports is not disabled, or query the user_permissions table for reports-related privilegesAffected if The Reports module is enabled and staff users have access to it via the permissions system
The environment is affected if running a Koha version below the patched releases AND the vulnerable catalogue_out.pl script contains unsanitized Filter parameter concatenation accessible to authenticated staff with Reports permissions.
Generated from the published advisory. Verify against your own configuration.
Remediation Closing itWhat it takes to close this. Where a vendor fix exists we point at it; where none exists we say so plainly, and can build one. Effort estimates are scoped from the advisory, not from your codebase.
dbcve · scopedUpgrade to fixed Koha versions (22.11.38, 24.11.16, 25.05.11, 25.11.05, 26.05.01, 26.11.00 or later) which replace raw string concatenation with parameterized placeholders. Alternatively, implement input validation and DBI bind parameters as an interim control.
Upgrade to the latest patch release for your branch: 22.11.38, 24.11.16, 25.05.11, 25.11.05, 26.05.01, or 26.11.00 (or later)
- Identify the current Koha version by checking the about page or koha-conf.xml
- Determine which release branch (22.x, 24.x, 25.05.x, 25.11.x, 26.05.x, or 26.11.x) the installation is running
- If on 22.x branch, upgrade to 22.11.38 or later
- If on 24.x branch, upgrade to 24.11.16 or later
- If on 25.05.x branch, upgrade to 25.05.11 or later
- If on 25.11.x branch, upgrade to 25.11.05 or later
- If on 26.05.x branch, upgrade to 26.05.01 or later
- If on 26.11.x branch, upgrade to 26.11.00 or later
Generated from the published advisory — verify against the referenced sources before acting.
- Consultation4.0 h
- Implementation6.0 h
- Testing8.0 h
- Review / QA4.0 h
An estimate, not a bill — we confirm scope with you before any work starts. Need it this week? Rush from $6,080.
Scan for this in your stack
Free · runs locallyCheck whether your project pulls in CVE-2026-6428 — or any other known-vulnerable package — straight from your lock files. Free and open source; it runs locally and uploads nothing.
References Go to the primary sourcePrimary sources — vendor advisories, patches and trackers. Where our summary and a reference disagree, the reference wins.
Primary sourcesPractitioner notes
ContributedPeer-ranked notes from engineers who’ve handled CVE-2026-6428 in production — separate from our analysis above.
The advisory tells you what broke. It rarely tells you what actually worked. If you’ve dealt with this one, that detail is what the next engineer is searching for.
- The version that genuinely resolved it — not the one the vendor claimed
- A config change or rule that shut the vector down
- A gotcha in the upgrade path that cost you an afternoon
No notes yet
Be the first to add a field note for this CVE — a mitigation you’ve verified, a version caveat, or a link to a working fix. Sign in above to contribute.
A place for practitioners to share what actually worked: a mitigation you’ve tested, a configuration change, a version- or environment-specific caveat, or a link to a verified patch. The most useful notes rise to the top as peers upvote them, so the signal stays high.
- Verified mitigations, workarounds, and config changes
- Version or environment caveats, and links to real fixes
- No weaponised exploit code, or anything meant to cause harm
- No spam, self-promotion, credentials, or personal data