From c4b54f2754cd9488e2110da2f4fc1fed005fd1bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jack=20N=C3=B8rskov=20J=C3=B8rgensen?= Date: Mon, 12 Oct 2026 15:55:34 +0200 Subject: [PATCH] Add opt-in AI output threat model Register ai as a shared threat model, document its scope, and add a regression test for explicit enablement. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 3b1133f4-388a-4e13-a00f-dce2b41cd295 --- docs/codeql/reusables/threat-model-description.rst | 1 + .../threat-models/ai-enabled/ActiveAiThreatModel.expected | 1 + .../threat-models/ai-enabled/ActiveAiThreatModel.ext.yml | 6 ++++++ .../threat-models/ai-enabled/ActiveAiThreatModel.ql | 6 ++++++ .../change-notes/2026-10-12-ai-threat-model.md | 4 ++++ shared/threat-models/ext/threat-model-grouping.model.yml | 3 +++ 6 files changed, 21 insertions(+) create mode 100644 javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.expected create mode 100644 javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.yml create mode 100644 javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ql create mode 100644 shared/threat-models/change-notes/2026-10-12-ai-threat-model.md diff --git a/docs/codeql/reusables/threat-model-description.rst b/docs/codeql/reusables/threat-model-description.rst index ff1718fcedcc..ad5cef3d35bb 100644 --- a/docs/codeql/reusables/threat-model-description.rst +++ b/docs/codeql/reusables/threat-model-description.rst @@ -11,6 +11,7 @@ Note that subcategories can be turned included or excluded separately, so you ca The less commonly used categories are: +- ``ai`` which represents output generated by large language models (LLMs). This threat model is opt-in and does not include any built-in source models. - ``android`` which represents reads from external files in Android (``android-external-storage-dir``) and parameter of an entry-point method declared in a ``ContentProvider`` class (``contentprovider``). Currently only used by Java/Kotlin. - ``database-access-result`` which represents a database access. Currently only used by JavaScript. - ``file-write`` which represents opening a file in write mode. Currently only used in C#. diff --git a/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.expected b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.expected new file mode 100644 index 000000000000..be236f3a50c0 --- /dev/null +++ b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.expected @@ -0,0 +1 @@ +| ai | diff --git a/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.yml b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.yml new file mode 100644 index 000000000000..e30874b74455 --- /dev/null +++ b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ext.yml @@ -0,0 +1,6 @@ +extensions: + - addsTo: + pack: codeql/threat-models + extensible: threatModelConfiguration + data: + - ["ai", true, 0] diff --git a/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ql b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ql new file mode 100644 index 000000000000..298fb583532d --- /dev/null +++ b/javascript/ql/test/library-tests/threat-models/ai-enabled/ActiveAiThreatModel.ql @@ -0,0 +1,6 @@ +private import codeql.threatmodels.ThreatModels + +where + knownThreatModel("ai") and + currentThreatModel("ai") +select "ai" diff --git a/shared/threat-models/change-notes/2026-10-12-ai-threat-model.md b/shared/threat-models/change-notes/2026-10-12-ai-threat-model.md new file mode 100644 index 000000000000..3aedb64891ec --- /dev/null +++ b/shared/threat-models/change-notes/2026-10-12-ai-threat-model.md @@ -0,0 +1,4 @@ +--- +category: feature +--- +* Added the opt-in `ai` threat model for LLM-generated data. No built-in source models are included. diff --git a/shared/threat-models/ext/threat-model-grouping.model.yml b/shared/threat-models/ext/threat-model-grouping.model.yml index 1c8229b81f6a..97a0c7e95da0 100644 --- a/shared/threat-models/ext/threat-model-grouping.model.yml +++ b/shared/threat-models/ext/threat-model-grouping.model.yml @@ -19,6 +19,9 @@ extensions: - ["file", "local"] - ["windows-registry", "local"] + # AI threat models + - ["ai", "all"] + # Android threat models - ["android-external-storage-dir", "android"] - ["contentprovider", "android"]