{"id":"CVE-2026-101110","aliases":["EUVD-2026-88436","GHSA-hv58-qqxr-w5r2"],"status":"published","title":"Joomla Extension - ordasoft.com - Unauthenticated SQL Injection in Book Library (Free) \u003c 6.4.6","description":"Joomla Extension - ordasoft.com - Unauthenticated SQL Injection in Book Library (Free) \u003c 6.4.6 - site/booklibrary.php’s books() function reads the field and direction request parameters and passes each through a function called protectInjectionWithoutQuote(), whose only real protection is a keyword blacklist that, on detecting the literal substring select, wraps the value in $db-\u003equote() instead of rejecting it. The value is then concatenated directly into an unquoted ORDER BY clause, a position where quoting provides no protection at all. Reaching the vulnerable code path requires two conditions: a first request to prime session-stored sort defaults, and a trailing decoy comment (-- xselect) that satisfies the blacklist’s substring check without altering the payload’s effect.","severity":{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-08","score":0.00319,"percentile":0.25,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":true,"fix_available":false},"cwes":["CWE-89"],"published":"2026-09-28T18:42:33Z","modified":"2026-10-07T21:34:23Z","exploits":[{"source":"pocgithub","id":"murrez/CVE-2026-101110","title":"murrez/CVE-2026-101110","date":"2026-09-29","url":"https://github.com/murrez/CVE-2026-101110"}],"products":[{"vendor":"ordasoft","product":"book_library"},{"vendor":"ordasoft.com","product":"book library (free) extension for joomla"}],"references":[{"url":"https://www.ordasoft.com/","tags":["product","Product"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-101110"},{"url":"https://www.ordasoft.com"},{"url":"https://github.com/advisories/GHSA-hv58-qqxr-w5r2"}],"sources":{"cve":[{"id":"CVE-2026-101110","title":"Joomla Extension - ordasoft.com - Unauthenticated SQL Injection in Book Library (Free) \u003c 6.4.6","description":"Joomla Extension - ordasoft.com - Unauthenticated SQL Injection in Book Library (Free) \u003c 6.4.6 - site/booklibrary.php’s books() function reads the field and direction request parameters and passes each through a function called protectInjectionWithoutQuote(), whose only real protection is a keyword blacklist that, on detecting the literal substring select, wraps the value in $db-\u003equote() instead of rejecting it. The value is then concatenated directly into an unquoted ORDER BY clause, a position where quoting provides no protection at all. Reaching the vulnerable code path requires two conditions: a first request to prime session-stored sort defaults, and a trailing decoy comment (-- xselect) that satisfies the blacklist’s substring check without altering the payload’s effect.","status":"published","published":"2026-09-28T18:42:33.091Z","modified":"2026-09-30T15:09:30.441Z","cvss":[{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical","assessor":"cna"}],"cwes":["CWE-89"],"updated_at":"2026-11-02T14:20:09.808851Z"}],"euvd":[{"id":"EUVD-2026-88436","description":"Joomla Extension - ordasoft.com - Unauthenticated SQL Injection in Book Library (Free) \u003c 6.4.6 - site/booklibrary.php’s books() function reads the field and direction request parameters and passes each through a function called protectInjectionWithoutQuote(), whose only real protection is a keyword blacklist that, on detecting the literal substring select, wraps the value in $db-\u003equote() instead of rejecting it. The value is then concatenated directly into an unquoted ORDER BY clause, a position where quoting provides no protection at all. Reaching the vulnerable code path requires two conditions: a first request to prime session-stored sort defaults, and a trailing decoy comment (-- xselect) that satisfies the blacklist’s substring check without altering the payload’s effect.","status":"published","published":"2026-09-28T18:42:33Z","modified":"2026-09-30T15:09:30Z","cvss":[{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N","level":"critical"}],"updated_at":"2026-11-02T17:27:49.499669Z"}],"ghsa":[{"id":"GHSA-hv58-qqxr-w5r2","title":"Joomla Extension - ordasoft.com - Unauthenticated SQL Injection in Book Library (Free) \u003c 6.4.6 -...","description":"Joomla Extension - ordasoft.com - Unauthenticated SQL Injection in Book Library (Free) \u003c 6.4.6 - site/booklibrary.php’s books() function reads the field and direction request parameters and passes each through a function called protectInjectionWithoutQuote(), whose only real protection is a keyword blacklist that, on detecting the literal substring select, wraps the value in $db-\u003equote() instead of rejecting it. The value is then concatenated directly into an unquoted ORDER BY clause, a position where quoting provides no protection at all. Reaching the vulnerable code path requires two conditions: a first request to prime session-stored sort defaults, and a trailing decoy comment (-- xselect) that satisfies the blacklist’s substring check without altering the payload’s effect.","status":"published","published":"2026-09-28T21:31:16Z","modified":"2026-10-07T21:34:23Z","cvss":[{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical"},{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/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","level":"critical"}],"cwes":["CWE-89"],"updated_at":"2026-11-02T15:12:55.932488Z"}],"nvd":[{"id":"CVE-2026-101110","description":"Joomla Extension - ordasoft.com - Unauthenticated SQL Injection in Book Library (Free) \u003c 6.4.6 - site/booklibrary.php’s books() function reads the field and direction request parameters and passes each through a function called protectInjectionWithoutQuote(), whose only real protection is a keyword blacklist that, on detecting the literal substring select, wraps the value in $db-\u003equote() instead of rejecting it. The value is then concatenated directly into an unquoted ORDER BY clause, a position where quoting provides no protection at all. Reaching the vulnerable code path requires two conditions: a first request to prime session-stored sort defaults, and a trailing decoy comment (-- xselect) that satisfies the blacklist’s substring check without altering the payload’s effect.","status":"published","published":"2026-09-28T19:16:47.243Z","modified":"2026-10-07T21:02:05.59Z","cvss":[{"version":"4.0","score":9.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/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","level":"critical","assessor":"secondary"},{"version":"3.1","score":9.8,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","level":"critical","assessor":"primary"}],"cwes":["CWE-89"],"updated_at":"2026-11-02T14:12:52.413234Z"}]}}
