mirror of
https://github.com/github/codeql.git
synced 2026-06-29 16:47:09 +02:00
Mirror the JavaScript layout from PR #21953: - Move SystemPromptInjection.ql / UserPromptInjection.ql to src/Security/CWE-1427 - Move customizations, query and framework libs to python/ql/lib - Move the AIPrompt concept to the production Concepts.qll - Drop the experimental tag; py/system-prompt-injection (high precision) now joins the code-scanning, security-extended and security-and-quality suites, while py/user-prompt-injection (low precision) stays out of the default suites - Move query tests to python/ql/test/query-tests/Security Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
22 lines
754 B
Plaintext
22 lines
754 B
Plaintext
/**
|
|
* @name User prompt injection
|
|
* @description Untrusted input flowing into a user-role prompt of an AI model
|
|
* may allow an attacker to manipulate the model's behavior.
|
|
* @kind path-problem
|
|
* @problem.severity warning
|
|
* @security-severity 5.0
|
|
* @precision low
|
|
* @id py/user-prompt-injection
|
|
* @tags security
|
|
* external/cwe/cwe-1427
|
|
*/
|
|
|
|
import python
|
|
import semmle.python.security.dataflow.UserPromptInjectionQuery
|
|
import UserPromptInjectionFlow::PathGraph
|
|
|
|
from UserPromptInjectionFlow::PathNode source, UserPromptInjectionFlow::PathNode sink
|
|
where UserPromptInjectionFlow::flowPath(source, sink)
|
|
select sink.getNode(), source, sink, "This prompt construction depends on a $@.", source.getNode(),
|
|
"user-provided value"
|