From e612db2ec96fd364ce25ca932f96bd1ec26c4307 Mon Sep 17 00:00:00 2001 From: BazookaMusic Date: Thu, 11 Jun 2026 11:28:14 +0200 Subject: [PATCH] Promote user prompt injection query to stable security Move UserPromptInjection out of experimental into stable JavaScript security locations. Set js/user-prompt-injection precision to low and remove experimental tagging. Move supporting dataflow libraries, qhelp/examples, and tests to stable paths and update references. --- .../security/dataflow}/UserPromptInjectionCustomizations.qll | 0 .../security/dataflow/UserPromptInjectionQuery.qll} | 4 ++-- .../Security/CWE-1427/UserPromptInjection.qhelp | 2 +- .../Security/CWE-1427/UserPromptInjection.ql | 5 ++--- .../Security/CWE-1427/examples/user-prompt-injection.js | 0 .../CWE-1427/examples/user-prompt-injection_fixed.js | 0 .../UserPromptInjection/UserPromptInjection.expected | 0 .../CWE-1427/UserPromptInjection/UserPromptInjection.qlref | 1 + .../CWE-1427/UserPromptInjection/anthropic_user_test.js | 0 .../CWE-1427/UserPromptInjection/gemini_user_test.js | 0 .../CWE-1427/UserPromptInjection/langchain_user_test.js | 0 .../CWE-1427/UserPromptInjection/openai_user_test.js | 0 .../CWE-1427/UserPromptInjection/openrouter_user_test.js | 0 .../CWE-1427/UserPromptInjection/UserPromptInjection.qlref | 1 - 14 files changed, 6 insertions(+), 7 deletions(-) rename javascript/ql/{src/experimental/semmle/javascript/security/PromptInjection => lib/semmle/javascript/security/dataflow}/UserPromptInjectionCustomizations.qll (100%) rename javascript/ql/{src/experimental/semmle/javascript/security/PromptInjection/UserPromptinjectionQuery.qll => lib/semmle/javascript/security/dataflow/UserPromptInjectionQuery.qll} (86%) rename javascript/ql/src/{experimental => }/Security/CWE-1427/UserPromptInjection.qhelp (98%) rename javascript/ql/src/{experimental => }/Security/CWE-1427/UserPromptInjection.ql (83%) rename javascript/ql/src/{experimental => }/Security/CWE-1427/examples/user-prompt-injection.js (100%) rename javascript/ql/src/{experimental => }/Security/CWE-1427/examples/user-prompt-injection_fixed.js (100%) rename javascript/ql/test/{experimental => }/Security/CWE-1427/UserPromptInjection/UserPromptInjection.expected (100%) create mode 100644 javascript/ql/test/Security/CWE-1427/UserPromptInjection/UserPromptInjection.qlref rename javascript/ql/test/{experimental => }/Security/CWE-1427/UserPromptInjection/anthropic_user_test.js (100%) rename javascript/ql/test/{experimental => }/Security/CWE-1427/UserPromptInjection/gemini_user_test.js (100%) rename javascript/ql/test/{experimental => }/Security/CWE-1427/UserPromptInjection/langchain_user_test.js (100%) rename javascript/ql/test/{experimental => }/Security/CWE-1427/UserPromptInjection/openai_user_test.js (100%) rename javascript/ql/test/{experimental => }/Security/CWE-1427/UserPromptInjection/openrouter_user_test.js (100%) delete mode 100644 javascript/ql/test/experimental/Security/CWE-1427/UserPromptInjection/UserPromptInjection.qlref diff --git a/javascript/ql/src/experimental/semmle/javascript/security/PromptInjection/UserPromptInjectionCustomizations.qll b/javascript/ql/lib/semmle/javascript/security/dataflow/UserPromptInjectionCustomizations.qll similarity index 100% rename from javascript/ql/src/experimental/semmle/javascript/security/PromptInjection/UserPromptInjectionCustomizations.qll rename to javascript/ql/lib/semmle/javascript/security/dataflow/UserPromptInjectionCustomizations.qll diff --git a/javascript/ql/src/experimental/semmle/javascript/security/PromptInjection/UserPromptinjectionQuery.qll b/javascript/ql/lib/semmle/javascript/security/dataflow/UserPromptInjectionQuery.qll similarity index 86% rename from javascript/ql/src/experimental/semmle/javascript/security/PromptInjection/UserPromptinjectionQuery.qll rename to javascript/ql/lib/semmle/javascript/security/dataflow/UserPromptInjectionQuery.qll index a363a64a15f..21c337433ee 100644 --- a/javascript/ql/src/experimental/semmle/javascript/security/PromptInjection/UserPromptinjectionQuery.qll +++ b/javascript/ql/lib/semmle/javascript/security/dataflow/UserPromptInjectionQuery.qll @@ -2,8 +2,8 @@ * Provides a taint-tracking configuration for detecting "prompt injection" vulnerabilities. * * Note, for performance reasons: only import this file if - * `PromptInjection::Configuration` is needed, otherwise - * `PromptInjectionCustomizations` should be imported instead. + * `UserPromptInjectionFlow::Configuration` is needed, otherwise + * `UserPromptInjectionCustomizations` should be imported instead. */ private import javascript diff --git a/javascript/ql/src/experimental/Security/CWE-1427/UserPromptInjection.qhelp b/javascript/ql/src/Security/CWE-1427/UserPromptInjection.qhelp similarity index 98% rename from javascript/ql/src/experimental/Security/CWE-1427/UserPromptInjection.qhelp rename to javascript/ql/src/Security/CWE-1427/UserPromptInjection.qhelp index fadb6317c90..d1c94867142 100644 --- a/javascript/ql/src/experimental/Security/CWE-1427/UserPromptInjection.qhelp +++ b/javascript/ql/src/Security/CWE-1427/UserPromptInjection.qhelp @@ -20,7 +20,7 @@ context, or trigger unintended tool calls.