From 11ac699e2a0684b5fbeb44a9110372d97f90778a Mon Sep 17 00:00:00 2001 From: jtabsbm <317336566@users.noreply.github.com> Date: Sat, 15 Aug 2026 11:42:58 -0700 Subject: [PATCH] Add SQL injection models for the duckdb Python package duckdb (~10M downloads/month) implements PEP 249 but had no CodeQL models, so string-built SQL passed to duckdb.execute()/sql()/executemany() was not flagged by the SqlInjection query suite. This adds: - DuckdbPEP249: models duckdb as a PEP 249 module (connect/cursor/ execute/executemany sinks via the existing PEP249 machinery) - ModuleLevelExecuteCall: models the module-level duckdb.sql(), duckdb.execute() and duckdb.executemany() convenience wrappers as SqlExecution calls (getSql from arg 0 or the 'query' keyword) - Frameworks.qll registration and supported-frameworks docs entry Pattern follows the merged hdbcli models (PR #19444). Signed-off-by: jtabsbm <317336566@users.noreply.github.com> --- .../codeql/reusables/supported-frameworks.rst | 1 + python/ql/lib/semmle/python/Frameworks.qll | 1 + .../lib/semmle/python/frameworks/Duckdb.qll | 44 +++++++++++++++++++ .../change-notes/2026-08-15-duckdb-models.md | 8 ++++ 4 files changed, 54 insertions(+) create mode 100644 python/ql/lib/semmle/python/frameworks/Duckdb.qll create mode 100644 python/ql/src/change-notes/2026-08-15-duckdb-models.md diff --git a/docs/codeql/reusables/supported-frameworks.rst b/docs/codeql/reusables/supported-frameworks.rst index 0552a3495175..45716fd408f7 100644 --- a/docs/codeql/reusables/supported-frameworks.rst +++ b/docs/codeql/reusables/supported-frameworks.rst @@ -256,6 +256,7 @@ and the CodeQL library pack ``codeql/python-all`` (`changelog