{"api_version":"1","generated_at":"2026-08-04T20:52:40+00:00","cve":"CVE-2026-70370","urls":{"html":"https://cve.report/CVE-2026-70370","api":"https://cve.report/api/cve/CVE-2026-70370.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-70370","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-70370"},"summary":{"title":"Koha: SQL Injection in reports/catalogue_stats.pl","description":"Koha's reports/catalogue_stats.pl builds dynamic SQL in sub calculate by interpolating the user-controlled Line and Column request parameters directly into identifier positions of the query (SELECT DISTINCTROW, GROUP BY, ORDER BY) with no whitelist validation. When Line contains itemcallnumber and the cotedigits parameter is truthy, cotedigits is additionally concatenated raw as the numeric argument of a LEFT() call. An authenticated staff user holding the reports module permission can inject arbitrary SQL and read any table reachable by the Koha database user, including borrowers (password hashes, two-factor secrets, personal data), api_keys, and sessions.","state":"PUBLISHED","assigner":"TuranSec","published_at":"2026-08-04 13:18:57","updated_at":"2026-08-04 18:16:57"},"problem_types":["CWE-89","CWE-89 CWE-89 SQL Injection"],"metrics":[{"version":"3.1","source":"ADP","type":"DECLARED","score":"6.5","severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","data":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":6.5,"baseSeverity":"MEDIUM","confidentialityImpact":"HIGH","integrityImpact":"NONE","privilegesRequired":"LOW","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","version":"3.1"}},{"version":"3.1","source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","type":"Secondary","score":"6.5","severity":"MEDIUM","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","data":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","baseScore":6.5,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"NONE","availabilityImpact":"NONE"}}],"references":[{"url":"https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42363","name":"https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42363","refsource":"309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://koha-community.org/koha-25-05-12-released/","name":"https://koha-community.org/koha-25-05-12-released/","refsource":"309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://download.koha-community.org/koha-25.05.12.tar.gz","name":"https://download.koha-community.org/koha-25.05.12.tar.gz","refsource":"309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-70370","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-70370","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Koha Community","product":"Koha","version":"affected 24.11.17 semver","platforms":[]},{"source":"CNA","vendor":"Koha Community","product":"Koha","version":"affected 25.05.00 25.05.12 semver","platforms":[]},{"source":"CNA","vendor":"Koha Community","product":"Koha","version":"affected 25.11.00 25.11.06 semver","platforms":[]},{"source":"CNA","vendor":"Koha Community","product":"Koha","version":"affected 26.05.00 26.05.01 semver","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":6.5,"baseSeverity":"MEDIUM","confidentialityImpact":"HIGH","integrityImpact":"NONE","privilegesRequired":"LOW","scope":"UNCHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","version":"3.1"}},{"other":{"content":{"id":"CVE-2026-70370","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","timestamp":"2026-08-04T17:20:50.487239Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-08-04T17:21:08.809Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"collectionURL":"https://koha-community.org/","defaultStatus":"unaffected","product":"Koha","programFiles":["reports/catalogue_stats.pl"],"repo":"https://gitlab.com/koha-community/Koha","vendor":"Koha Community","versions":[{"lessThan":"24.11.17","status":"affected","version":"0","versionType":"semver"},{"lessThan":"25.05.12","status":"affected","version":"25.05.00","versionType":"semver"},{"lessThan":"25.11.06","status":"affected","version":"25.11.00","versionType":"semver"},{"lessThan":"26.05.01","status":"affected","version":"26.05.00","versionType":"semver"}]}],"descriptions":[{"lang":"en","value":"Koha's reports/catalogue_stats.pl builds dynamic SQL in sub calculate by interpolating the user-controlled Line and Column request parameters directly into identifier positions of the query (SELECT DISTINCTROW, GROUP BY, ORDER BY) with no whitelist validation. When Line contains itemcallnumber and the cotedigits parameter is truthy, cotedigits is additionally concatenated raw as the numeric argument of a LEFT() call. An authenticated staff user holding the reports module permission can inject arbitrary SQL and read any table reachable by the Koha database user, including borrowers (password hashes, two-factor secrets, personal data), api_keys, and sessions."}],"problemTypes":[{"descriptions":[{"cweId":"CWE-89","description":"CWE-89 SQL Injection","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-08-04T13:00:07.967Z","orgId":"309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c","shortName":"TuranSec"},"references":[{"url":"https://bugs.koha-community.org/bugzilla3/show_bug.cgi?id=42363"},{"url":"https://koha-community.org/koha-25-05-12-released/"},{"url":"https://download.koha-community.org/koha-25.05.12.tar.gz"}],"title":"Koha: SQL Injection in reports/catalogue_stats.pl"}},"cveMetadata":{"assignerOrgId":"309f9ea4-e3e9-4c6c-b79d-e8eb01244f2c","assignerShortName":"TuranSec","cveId":"CVE-2026-70370","datePublished":"2026-08-04T13:00:07.967Z","dateReserved":"2026-08-04T07:13:07.992Z","dateUpdated":"2026-08-04T17:21:08.809Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-08-04 13:18:57","lastModifiedDate":"2026-08-04 18:16:57","problem_types":["CWE-89","CWE-89 CWE-89 SQL Injection"],"metrics":{"cvssMetricV31":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","type":"Secondary","cvssData":{"version":"3.1","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N","baseScore":6.5,"baseSeverity":"MEDIUM","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"LOW","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"NONE","availabilityImpact":"NONE"},"exploitabilityScore":2.8,"impactScore":3.6}],"ssvcV203":[{"source":"134c704f-9b21-4f2e-91b3-4a467353bcc0","ssvcData":{"timestamp":"2026-08-04T17:20:50.487239Z","id":"CVE-2026-70370","options":[{"exploitation":"none"},{"automatable":"no"},{"technicalImpact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}]},"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"70370","Ordinal":"1","Title":"Koha: SQL Injection in reports/catalogue_stats.pl","CVE":"CVE-2026-70370","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"70370","Ordinal":"1","NoteData":"Koha's reports/catalogue_stats.pl builds dynamic SQL in sub calculate by interpolating the user-controlled Line and Column request parameters directly into identifier positions of the query (SELECT DISTINCTROW, GROUP BY, ORDER BY) with no whitelist validation. When Line contains itemcallnumber and the cotedigits parameter is truthy, cotedigits is additionally concatenated raw as the numeric argument of a LEFT() call. An authenticated staff user holding the reports module permission can inject arbitrary SQL and read any table reachable by the Koha database user, including borrowers (password hashes, two-factor secrets, personal data), api_keys, and sessions.","Type":"Description","Title":"Koha: SQL Injection in reports/catalogue_stats.pl"}]}}}