circle-ir 3.173.0 → 3.175.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/configs/sinks/open_redirect.yaml +21 -0
- package/configs/sinks/prompt_injection.yaml +50 -0
- package/configs/sinks/trust_boundary.yaml +18 -0
- package/dist/analysis/config-loader.d.ts.map +1 -1
- package/dist/analysis/config-loader.js +178 -1
- package/dist/analysis/config-loader.js.map +1 -1
- package/dist/analysis/rules.d.ts.map +1 -1
- package/dist/analysis/rules.js +9 -0
- package/dist/analysis/rules.js.map +1 -1
- package/dist/browser/circle-ir.js +150 -2
- package/dist/core/circle-ir-core.cjs +150 -2
- package/dist/core/circle-ir-core.js +150 -2
- package/dist/types/index.d.ts +1 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/analysis/rules.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAM5D,6DAA6D;AAC7D,eAAO,MAAM,cAAc,EAAE,QAAQ,EAKpC,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,UAAU,EAAE,QAAQ,EAOhC,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,UAIjC,CAAC;AAMF,MAAM,WAAW,QAAQ;IACvB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,aAAa,EAAE,QAAQ,CAAC;IACxB,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/analysis/rules.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAM5D,6DAA6D;AAC7D,eAAO,MAAM,cAAc,EAAE,QAAQ,EAKpC,CAAC;AAEF,wCAAwC;AACxC,eAAO,MAAM,UAAU,EAAE,QAAQ,EAOhC,CAAC;AAEF,0DAA0D;AAC1D,eAAO,MAAM,qBAAqB,UAIjC,CAAC;AAMF,MAAM,WAAW,QAAQ;IACvB,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,sCAAsC;IACtC,gBAAgB,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,eAAe,EAAE,MAAM,CAAC;IACxB,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,aAAa,EAAE,QAAQ,CAAC;IACxB,qBAAqB;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAkOvD,CAAC;AAMF;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAgBjE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAElE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAEtE;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAE1D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAEnE;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,CAE/D;AAqBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,CAOtE;AAMD,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B,UAAU,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,eAAe,GAAG,QAAQ,CA2CpE"}
|
package/dist/analysis/rules.js
CHANGED
|
@@ -249,6 +249,15 @@ export const RULE_DEFINITIONS = {
|
|
|
249
249
|
severityLevel: 'medium',
|
|
250
250
|
cwe: 'CWE-89',
|
|
251
251
|
},
|
|
252
|
+
prompt_injection: {
|
|
253
|
+
name: 'Prompt Injection',
|
|
254
|
+
shortDescription: 'Tainted input flows into a generative-model prompt-construction API',
|
|
255
|
+
fullDescription: 'The application passes user-controlled input into a prompt/messages payload sent to a generative model (chat completion, message create, invoke). An attacker can craft input that overrides system instructions, exfiltrates prior context, or induces the model to emit content that drives unintended tool/agent actions downstream. The finding is a data-flow signal at the call site; downstream trust layers can further classify by response consumption (agentic vs display-only).',
|
|
256
|
+
remediation: 'Do not concatenate untrusted text into system-role messages or template-controlled sections. Constrain user text to a dedicated `content` field of a user-role message, apply structural allow-lists (schema-validated tool arguments, JSON-mode with fixed schema), and reject or escape control tokens for the target model. When the response drives tool execution or code eval, gate on output validation before acting.',
|
|
257
|
+
cvssScore: '7.5',
|
|
258
|
+
severityLevel: 'high',
|
|
259
|
+
cwe: 'CWE-1427',
|
|
260
|
+
},
|
|
252
261
|
};
|
|
253
262
|
// =============================================================================
|
|
254
263
|
// Lookup Functions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/analysis/rules.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/analysis/rules.ts"],"names":[],"mappings":"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"}
|
|
@@ -11215,6 +11215,66 @@ var DEFAULT_SOURCES = [
|
|
|
11215
11215
|
{ method: "decode", class: "JWT", type: "http_header", severity: "high", return_tainted: true, languages: ["java"] },
|
|
11216
11216
|
{ method: "ParseUnverified", class: "jwt", type: "http_header", severity: "high", return_tainted: true, languages: ["go"] }
|
|
11217
11217
|
];
|
|
11218
|
+
var OPEN_REDIRECT_FRAMEWORK_SINKS = [
|
|
11219
|
+
// --- Python: django / starlette / fastapi -------------------------------
|
|
11220
|
+
{ method: "HttpResponseRedirect", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["python"] },
|
|
11221
|
+
{ method: "HttpResponsePermanentRedirect", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["python"] },
|
|
11222
|
+
{ method: "RedirectResponse", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["python"] },
|
|
11223
|
+
// --- JS/TS: koa / fastify / express / next.js ---------------------------
|
|
11224
|
+
{ method: "redirect", class: "Context", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
11225
|
+
{ method: "redirect", class: "FastifyReply", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
11226
|
+
// Express: res.location(url) sets Location header without redirect status,
|
|
11227
|
+
// still an open-redirect vector when combined with a downstream redirect.
|
|
11228
|
+
{ method: "location", class: "Response", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
11229
|
+
// Next.js App Router: NextResponse.redirect(url) — static method matched
|
|
11230
|
+
// by receiver-class name.
|
|
11231
|
+
{ method: "redirect", class: "NextResponse", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
11232
|
+
// --- Java: Spring MVC RedirectView + JAX-RS Response --------------------
|
|
11233
|
+
{ method: "RedirectView", class: "RedirectView", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11234
|
+
{ method: "setUrl", class: "RedirectView", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11235
|
+
// JAX-RS Response builder — static factory methods that take a target URI.
|
|
11236
|
+
{ method: "seeOther", class: "Response", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11237
|
+
{ method: "temporaryRedirect", class: "Response", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11238
|
+
// --- Go: gin / echo / fiber ---------------------------------------------
|
|
11239
|
+
// gin/echo: c.Redirect(302, url) — status at arg[0], url at arg[1].
|
|
11240
|
+
// fiber: c.Redirect(url) — url at arg[0].
|
|
11241
|
+
// These entries fire once Go local-receiver type resolution lands
|
|
11242
|
+
// (see taint-matcher.ts:2137 receiverMightBeClass — currently returns
|
|
11243
|
+
// false for `c` against 'Context'/'Ctx'). Until then, the
|
|
11244
|
+
// external_taint_escape fallback preserves recall on these call sites.
|
|
11245
|
+
// net/http.Redirect (class 'http') is unaffected — declares class 'http'
|
|
11246
|
+
// and matches via package receiver.
|
|
11247
|
+
{ method: "Redirect", class: "Context", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [1], languages: ["go"] },
|
|
11248
|
+
{ method: "Redirect", class: "Ctx", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["go"] }
|
|
11249
|
+
];
|
|
11250
|
+
var TRUST_BOUNDARY_FRAMEWORK_SINKS = [
|
|
11251
|
+
// --- Python: Django cache write -----------------------------------------
|
|
11252
|
+
{ method: "set", class: "cache", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [1], languages: ["python"] },
|
|
11253
|
+
{ method: "set_many", class: "cache", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [0], languages: ["python"] },
|
|
11254
|
+
// --- JS/TS: client-side Storage + Express cookie ------------------------
|
|
11255
|
+
// localStorage / sessionStorage — browser Storage.setItem(key, value).
|
|
11256
|
+
{ method: "setItem", class: "Storage", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [1], languages: ["javascript", "typescript"] },
|
|
11257
|
+
// Express: res.cookie(name, value, opts) — cookie-jar write.
|
|
11258
|
+
{ method: "cookie", class: "Response", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [1], languages: ["javascript", "typescript"] },
|
|
11259
|
+
// --- Java: Cookie / SecurityContext / System.setProperty ----------------
|
|
11260
|
+
// `new Cookie(name, value)` — constructor with tainted value crosses the
|
|
11261
|
+
// client-server trust boundary via Set-Cookie.
|
|
11262
|
+
{ method: "Cookie", class: "Cookie", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [1], languages: ["java"] },
|
|
11263
|
+
{ method: "setValue", class: "Cookie", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [0], languages: ["java"] },
|
|
11264
|
+
// Spring Security: SecurityContext.setAuthentication(userSuppliedAuth) —
|
|
11265
|
+
// installs an untrusted principal into the request-scoped security
|
|
11266
|
+
// context; downstream authz decisions become attacker-controlled.
|
|
11267
|
+
{ method: "setAuthentication", class: "SecurityContext", type: "trust_boundary", cwe: "CWE-501", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11268
|
+
// JVM-wide System property write with tainted value pollutes process
|
|
11269
|
+
// state observable to every thread.
|
|
11270
|
+
{ method: "setProperty", class: "System", type: "trust_boundary", cwe: "CWE-501", severity: "high", arg_positions: [1], languages: ["java"] },
|
|
11271
|
+
// --- Go: http.SetCookie / gin.SetCookie ---------------------------------
|
|
11272
|
+
// Package-level `http.SetCookie(w, &http.Cookie{Value: tainted})` — sink
|
|
11273
|
+
// on arg[1] (the *Cookie) catches struct-literal composite tainting.
|
|
11274
|
+
{ method: "SetCookie", class: "http", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [1], languages: ["go"] },
|
|
11275
|
+
// gin: c.SetCookie(name, value, maxAge, path, domain, secure, httpOnly).
|
|
11276
|
+
{ method: "SetCookie", class: "Context", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [1], languages: ["go"] }
|
|
11277
|
+
];
|
|
11218
11278
|
var DEFAULT_SINKS = [
|
|
11219
11279
|
// SQL Injection (CWE-89)
|
|
11220
11280
|
{ method: "executeQuery", class: "Statement", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0] },
|
|
@@ -12576,7 +12636,10 @@ var DEFAULT_SINKS = [
|
|
|
12576
12636
|
{ method: "parse", class: "Uri", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
|
|
12577
12637
|
// Rust Open Redirect
|
|
12578
12638
|
{ method: "redirect", class: "HttpResponse", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0] },
|
|
12579
|
-
|
|
12639
|
+
// Actix/warp `Redirect::to(url)` — scoped to Rust to avoid collision with
|
|
12640
|
+
// Go's `c.Redirect(status, url)` on gin/echo, which lives further down in
|
|
12641
|
+
// the OPEN_REDIRECT_FRAMEWORK_SINKS block with `arg_positions: [0, 1]`.
|
|
12642
|
+
{ method: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["rust"] },
|
|
12580
12643
|
{ method: "see_other", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
|
|
12581
12644
|
{ method: "to", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
|
|
12582
12645
|
{ method: "temporary", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
|
|
@@ -12782,7 +12845,92 @@ var DEFAULT_SINKS = [
|
|
|
12782
12845
|
// they iterate after net/http entries and don't hijack `http.Get`.
|
|
12783
12846
|
{ method: "Do", class: "Client", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0], languages: ["go"] },
|
|
12784
12847
|
// *fasthttp.Client.Do(req)
|
|
12785
|
-
{ method: "DoTimeout", class: "Client", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0], languages: ["go"] }
|
|
12848
|
+
{ method: "DoTimeout", class: "Client", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0], languages: ["go"] },
|
|
12849
|
+
// =========================================================================
|
|
12850
|
+
// cognium-dev #248 — prompt-injection sinks (CWE-1427)
|
|
12851
|
+
//
|
|
12852
|
+
// Tainted data reaching a generative-model prompt-construction API is
|
|
12853
|
+
// classified as `prompt_injection`. v1 uses broad positional matching
|
|
12854
|
+
// (arg_positions [0..3]) because these APIs are kwarg-heavy: Python
|
|
12855
|
+
// `openai.chat.completions.create(model=..., messages=...)` may pass the
|
|
12856
|
+
// messages arg at position 0 or 1 depending on caller order, and JS/TS
|
|
12857
|
+
// object-literal `{ messages: [...], model: '...' }` is a single
|
|
12858
|
+
// positional arg whose taint is inherited from any tainted property.
|
|
12859
|
+
// Argname-precise matching (messages=/prompt=/content=) and
|
|
12860
|
+
// sanitizer credit for prompt-template libraries (PromptTemplate,
|
|
12861
|
+
// ChatPromptTemplate) are follow-ups.
|
|
12862
|
+
//
|
|
12863
|
+
// Class-qualified entries prevent bare `create()` / `generate()` calls
|
|
12864
|
+
// with no receiver from matching (per taint-matcher.ts:1696 guard).
|
|
12865
|
+
// =========================================================================
|
|
12866
|
+
// --- Python: openai (v1 SDK) --------------------------------------------
|
|
12867
|
+
{ method: "create", class: "Completions", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12868
|
+
{ method: "create", class: "Responses", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12869
|
+
// openai <1.0 legacy top-level API — `openai.ChatCompletion.create(...)` / `openai.Completion.create(...)`
|
|
12870
|
+
{ method: "create", class: "ChatCompletion", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12871
|
+
{ method: "create", class: "Completion", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12872
|
+
// --- Python: anthropic ---------------------------------------------------
|
|
12873
|
+
{ method: "create", class: "Messages", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12874
|
+
{ method: "stream", class: "Messages", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12875
|
+
// --- Python: litellm (bare functions from the litellm module) -----------
|
|
12876
|
+
{ method: "completion", class: "litellm", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12877
|
+
{ method: "acompletion", class: "litellm", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12878
|
+
// --- Python: langchain chat/llm models ----------------------------------
|
|
12879
|
+
// Common concrete classes; matching the class name catches typical usage
|
|
12880
|
+
// `ChatOpenAI().invoke(prompt)` where the receiver-type resolver identifies
|
|
12881
|
+
// the class from the constructor.
|
|
12882
|
+
{ method: "invoke", class: "ChatOpenAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12883
|
+
{ method: "predict", class: "ChatOpenAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12884
|
+
{ method: "stream", class: "ChatOpenAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12885
|
+
{ method: "generate", class: "ChatOpenAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12886
|
+
{ method: "invoke", class: "ChatAnthropic", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12887
|
+
{ method: "invoke", class: "ChatGoogleGenerativeAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12888
|
+
{ method: "run", class: "LLMChain", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12889
|
+
{ method: "invoke", class: "LLMChain", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12890
|
+
// --- JS/TS: openai node SDK ---------------------------------------------
|
|
12891
|
+
{ method: "create", class: "Completions", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12892
|
+
{ method: "create", class: "Responses", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12893
|
+
// --- JS/TS: @anthropic-ai/sdk -------------------------------------------
|
|
12894
|
+
{ method: "create", class: "Messages", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12895
|
+
{ method: "stream", class: "Messages", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12896
|
+
// --- JS/TS: Vercel AI SDK (bare functions from the `ai` package) --------
|
|
12897
|
+
// generateText/streamText/generateObject take a single options object;
|
|
12898
|
+
// taint reaches the sink when a tainted variable flows into any property.
|
|
12899
|
+
{ method: "generateText", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
12900
|
+
{ method: "streamText", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
12901
|
+
{ method: "generateObject", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
12902
|
+
{ method: "streamObject", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
12903
|
+
// --- JS/TS: langchain.js ------------------------------------------------
|
|
12904
|
+
{ method: "invoke", class: "ChatOpenAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12905
|
+
{ method: "invoke", class: "ChatAnthropic", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12906
|
+
{ method: "stream", class: "ChatOpenAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12907
|
+
// --- Java: LangChain4j --------------------------------------------------
|
|
12908
|
+
{ method: "generate", class: "ChatLanguageModel", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12909
|
+
{ method: "chat", class: "ChatLanguageModel", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12910
|
+
{ method: "generate", class: "StreamingChatLanguageModel", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12911
|
+
{ method: "chat", class: "StreamingChatLanguageModel", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12912
|
+
// --- Java: Spring AI ----------------------------------------------------
|
|
12913
|
+
{ method: "prompt", class: "ChatClient", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12914
|
+
{ method: "call", class: "ChatClient", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12915
|
+
{ method: "call", class: "ChatModel", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12916
|
+
// --- Java: OpenAI Java SDK (theokanning) --------------------------------
|
|
12917
|
+
{ method: "createChatCompletion", class: "OpenAiService", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12918
|
+
{ method: "createCompletion", class: "OpenAiService", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12919
|
+
// --- Go: go-openai (sashabaranov/go-openai) -----------------------------
|
|
12920
|
+
{ method: "CreateChatCompletion", class: "Client", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["go"] },
|
|
12921
|
+
{ method: "CreateCompletion", class: "Client", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["go"] },
|
|
12922
|
+
{ method: "CreateChatCompletionStream", class: "Client", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["go"] },
|
|
12923
|
+
// --- Go: langchaingo ----------------------------------------------------
|
|
12924
|
+
{ method: "Call", class: "LLM", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["go"] },
|
|
12925
|
+
{ method: "Generate", class: "LLM", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["go"] },
|
|
12926
|
+
{ method: "GenerateContent", class: "Model", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["go"] },
|
|
12927
|
+
// cognium-dev #240 ship 1 — extended framework sinks for open_redirect
|
|
12928
|
+
// (CWE-601) and trust_boundary (CWE-501). Definitions extracted above
|
|
12929
|
+
// as OPEN_REDIRECT_FRAMEWORK_SINKS / TRUST_BOUNDARY_FRAMEWORK_SINKS to
|
|
12930
|
+
// keep the DEFAULT_SINKS literal within TypeScript's union-type
|
|
12931
|
+
// inference complexity limit (TS2590). See ~lines 661-752.
|
|
12932
|
+
...OPEN_REDIRECT_FRAMEWORK_SINKS,
|
|
12933
|
+
...TRUST_BOUNDARY_FRAMEWORK_SINKS
|
|
12786
12934
|
];
|
|
12787
12935
|
var DEFAULT_SANITIZERS = [
|
|
12788
12936
|
// SQL Injection - proper parameter binding sanitizes input
|
|
@@ -10610,6 +10610,66 @@ var DEFAULT_SOURCES = [
|
|
|
10610
10610
|
{ method: "decode", class: "JWT", type: "http_header", severity: "high", return_tainted: true, languages: ["java"] },
|
|
10611
10611
|
{ method: "ParseUnverified", class: "jwt", type: "http_header", severity: "high", return_tainted: true, languages: ["go"] }
|
|
10612
10612
|
];
|
|
10613
|
+
var OPEN_REDIRECT_FRAMEWORK_SINKS = [
|
|
10614
|
+
// --- Python: django / starlette / fastapi -------------------------------
|
|
10615
|
+
{ method: "HttpResponseRedirect", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["python"] },
|
|
10616
|
+
{ method: "HttpResponsePermanentRedirect", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["python"] },
|
|
10617
|
+
{ method: "RedirectResponse", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["python"] },
|
|
10618
|
+
// --- JS/TS: koa / fastify / express / next.js ---------------------------
|
|
10619
|
+
{ method: "redirect", class: "Context", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
10620
|
+
{ method: "redirect", class: "FastifyReply", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
10621
|
+
// Express: res.location(url) sets Location header without redirect status,
|
|
10622
|
+
// still an open-redirect vector when combined with a downstream redirect.
|
|
10623
|
+
{ method: "location", class: "Response", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
10624
|
+
// Next.js App Router: NextResponse.redirect(url) — static method matched
|
|
10625
|
+
// by receiver-class name.
|
|
10626
|
+
{ method: "redirect", class: "NextResponse", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
10627
|
+
// --- Java: Spring MVC RedirectView + JAX-RS Response --------------------
|
|
10628
|
+
{ method: "RedirectView", class: "RedirectView", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
10629
|
+
{ method: "setUrl", class: "RedirectView", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
10630
|
+
// JAX-RS Response builder — static factory methods that take a target URI.
|
|
10631
|
+
{ method: "seeOther", class: "Response", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
10632
|
+
{ method: "temporaryRedirect", class: "Response", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
10633
|
+
// --- Go: gin / echo / fiber ---------------------------------------------
|
|
10634
|
+
// gin/echo: c.Redirect(302, url) — status at arg[0], url at arg[1].
|
|
10635
|
+
// fiber: c.Redirect(url) — url at arg[0].
|
|
10636
|
+
// These entries fire once Go local-receiver type resolution lands
|
|
10637
|
+
// (see taint-matcher.ts:2137 receiverMightBeClass — currently returns
|
|
10638
|
+
// false for `c` against 'Context'/'Ctx'). Until then, the
|
|
10639
|
+
// external_taint_escape fallback preserves recall on these call sites.
|
|
10640
|
+
// net/http.Redirect (class 'http') is unaffected — declares class 'http'
|
|
10641
|
+
// and matches via package receiver.
|
|
10642
|
+
{ method: "Redirect", class: "Context", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [1], languages: ["go"] },
|
|
10643
|
+
{ method: "Redirect", class: "Ctx", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["go"] }
|
|
10644
|
+
];
|
|
10645
|
+
var TRUST_BOUNDARY_FRAMEWORK_SINKS = [
|
|
10646
|
+
// --- Python: Django cache write -----------------------------------------
|
|
10647
|
+
{ method: "set", class: "cache", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [1], languages: ["python"] },
|
|
10648
|
+
{ method: "set_many", class: "cache", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [0], languages: ["python"] },
|
|
10649
|
+
// --- JS/TS: client-side Storage + Express cookie ------------------------
|
|
10650
|
+
// localStorage / sessionStorage — browser Storage.setItem(key, value).
|
|
10651
|
+
{ method: "setItem", class: "Storage", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [1], languages: ["javascript", "typescript"] },
|
|
10652
|
+
// Express: res.cookie(name, value, opts) — cookie-jar write.
|
|
10653
|
+
{ method: "cookie", class: "Response", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [1], languages: ["javascript", "typescript"] },
|
|
10654
|
+
// --- Java: Cookie / SecurityContext / System.setProperty ----------------
|
|
10655
|
+
// `new Cookie(name, value)` — constructor with tainted value crosses the
|
|
10656
|
+
// client-server trust boundary via Set-Cookie.
|
|
10657
|
+
{ method: "Cookie", class: "Cookie", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [1], languages: ["java"] },
|
|
10658
|
+
{ method: "setValue", class: "Cookie", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [0], languages: ["java"] },
|
|
10659
|
+
// Spring Security: SecurityContext.setAuthentication(userSuppliedAuth) —
|
|
10660
|
+
// installs an untrusted principal into the request-scoped security
|
|
10661
|
+
// context; downstream authz decisions become attacker-controlled.
|
|
10662
|
+
{ method: "setAuthentication", class: "SecurityContext", type: "trust_boundary", cwe: "CWE-501", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
10663
|
+
// JVM-wide System property write with tainted value pollutes process
|
|
10664
|
+
// state observable to every thread.
|
|
10665
|
+
{ method: "setProperty", class: "System", type: "trust_boundary", cwe: "CWE-501", severity: "high", arg_positions: [1], languages: ["java"] },
|
|
10666
|
+
// --- Go: http.SetCookie / gin.SetCookie ---------------------------------
|
|
10667
|
+
// Package-level `http.SetCookie(w, &http.Cookie{Value: tainted})` — sink
|
|
10668
|
+
// on arg[1] (the *Cookie) catches struct-literal composite tainting.
|
|
10669
|
+
{ method: "SetCookie", class: "http", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [1], languages: ["go"] },
|
|
10670
|
+
// gin: c.SetCookie(name, value, maxAge, path, domain, secure, httpOnly).
|
|
10671
|
+
{ method: "SetCookie", class: "Context", type: "trust_boundary", cwe: "CWE-501", severity: "medium", arg_positions: [1], languages: ["go"] }
|
|
10672
|
+
];
|
|
10613
10673
|
var DEFAULT_SINKS = [
|
|
10614
10674
|
// SQL Injection (CWE-89)
|
|
10615
10675
|
{ method: "executeQuery", class: "Statement", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0] },
|
|
@@ -11971,7 +12031,10 @@ var DEFAULT_SINKS = [
|
|
|
11971
12031
|
{ method: "parse", class: "Uri", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0] },
|
|
11972
12032
|
// Rust Open Redirect
|
|
11973
12033
|
{ method: "redirect", class: "HttpResponse", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0] },
|
|
11974
|
-
|
|
12034
|
+
// Actix/warp `Redirect::to(url)` — scoped to Rust to avoid collision with
|
|
12035
|
+
// Go's `c.Redirect(status, url)` on gin/echo, which lives further down in
|
|
12036
|
+
// the OPEN_REDIRECT_FRAMEWORK_SINKS block with `arg_positions: [0, 1]`.
|
|
12037
|
+
{ method: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "medium", arg_positions: [0], languages: ["rust"] },
|
|
11975
12038
|
{ method: "see_other", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
|
|
11976
12039
|
{ method: "to", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
|
|
11977
12040
|
{ method: "temporary", class: "Redirect", type: "open_redirect", cwe: "CWE-601", severity: "high", arg_positions: [0] },
|
|
@@ -12177,7 +12240,92 @@ var DEFAULT_SINKS = [
|
|
|
12177
12240
|
// they iterate after net/http entries and don't hijack `http.Get`.
|
|
12178
12241
|
{ method: "Do", class: "Client", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0], languages: ["go"] },
|
|
12179
12242
|
// *fasthttp.Client.Do(req)
|
|
12180
|
-
{ method: "DoTimeout", class: "Client", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0], languages: ["go"] }
|
|
12243
|
+
{ method: "DoTimeout", class: "Client", type: "ssrf", cwe: "CWE-918", severity: "high", arg_positions: [0], languages: ["go"] },
|
|
12244
|
+
// =========================================================================
|
|
12245
|
+
// cognium-dev #248 — prompt-injection sinks (CWE-1427)
|
|
12246
|
+
//
|
|
12247
|
+
// Tainted data reaching a generative-model prompt-construction API is
|
|
12248
|
+
// classified as `prompt_injection`. v1 uses broad positional matching
|
|
12249
|
+
// (arg_positions [0..3]) because these APIs are kwarg-heavy: Python
|
|
12250
|
+
// `openai.chat.completions.create(model=..., messages=...)` may pass the
|
|
12251
|
+
// messages arg at position 0 or 1 depending on caller order, and JS/TS
|
|
12252
|
+
// object-literal `{ messages: [...], model: '...' }` is a single
|
|
12253
|
+
// positional arg whose taint is inherited from any tainted property.
|
|
12254
|
+
// Argname-precise matching (messages=/prompt=/content=) and
|
|
12255
|
+
// sanitizer credit for prompt-template libraries (PromptTemplate,
|
|
12256
|
+
// ChatPromptTemplate) are follow-ups.
|
|
12257
|
+
//
|
|
12258
|
+
// Class-qualified entries prevent bare `create()` / `generate()` calls
|
|
12259
|
+
// with no receiver from matching (per taint-matcher.ts:1696 guard).
|
|
12260
|
+
// =========================================================================
|
|
12261
|
+
// --- Python: openai (v1 SDK) --------------------------------------------
|
|
12262
|
+
{ method: "create", class: "Completions", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12263
|
+
{ method: "create", class: "Responses", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12264
|
+
// openai <1.0 legacy top-level API — `openai.ChatCompletion.create(...)` / `openai.Completion.create(...)`
|
|
12265
|
+
{ method: "create", class: "ChatCompletion", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12266
|
+
{ method: "create", class: "Completion", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12267
|
+
// --- Python: anthropic ---------------------------------------------------
|
|
12268
|
+
{ method: "create", class: "Messages", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12269
|
+
{ method: "stream", class: "Messages", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12270
|
+
// --- Python: litellm (bare functions from the litellm module) -----------
|
|
12271
|
+
{ method: "completion", class: "litellm", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12272
|
+
{ method: "acompletion", class: "litellm", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12273
|
+
// --- Python: langchain chat/llm models ----------------------------------
|
|
12274
|
+
// Common concrete classes; matching the class name catches typical usage
|
|
12275
|
+
// `ChatOpenAI().invoke(prompt)` where the receiver-type resolver identifies
|
|
12276
|
+
// the class from the constructor.
|
|
12277
|
+
{ method: "invoke", class: "ChatOpenAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12278
|
+
{ method: "predict", class: "ChatOpenAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12279
|
+
{ method: "stream", class: "ChatOpenAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12280
|
+
{ method: "generate", class: "ChatOpenAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12281
|
+
{ method: "invoke", class: "ChatAnthropic", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12282
|
+
{ method: "invoke", class: "ChatGoogleGenerativeAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12283
|
+
{ method: "run", class: "LLMChain", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12284
|
+
{ method: "invoke", class: "LLMChain", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["python"] },
|
|
12285
|
+
// --- JS/TS: openai node SDK ---------------------------------------------
|
|
12286
|
+
{ method: "create", class: "Completions", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12287
|
+
{ method: "create", class: "Responses", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12288
|
+
// --- JS/TS: @anthropic-ai/sdk -------------------------------------------
|
|
12289
|
+
{ method: "create", class: "Messages", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12290
|
+
{ method: "stream", class: "Messages", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12291
|
+
// --- JS/TS: Vercel AI SDK (bare functions from the `ai` package) --------
|
|
12292
|
+
// generateText/streamText/generateObject take a single options object;
|
|
12293
|
+
// taint reaches the sink when a tainted variable flows into any property.
|
|
12294
|
+
{ method: "generateText", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
12295
|
+
{ method: "streamText", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
12296
|
+
{ method: "generateObject", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
12297
|
+
{ method: "streamObject", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
12298
|
+
// --- JS/TS: langchain.js ------------------------------------------------
|
|
12299
|
+
{ method: "invoke", class: "ChatOpenAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12300
|
+
{ method: "invoke", class: "ChatAnthropic", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12301
|
+
{ method: "stream", class: "ChatOpenAI", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["javascript", "typescript"] },
|
|
12302
|
+
// --- Java: LangChain4j --------------------------------------------------
|
|
12303
|
+
{ method: "generate", class: "ChatLanguageModel", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12304
|
+
{ method: "chat", class: "ChatLanguageModel", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12305
|
+
{ method: "generate", class: "StreamingChatLanguageModel", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12306
|
+
{ method: "chat", class: "StreamingChatLanguageModel", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12307
|
+
// --- Java: Spring AI ----------------------------------------------------
|
|
12308
|
+
{ method: "prompt", class: "ChatClient", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12309
|
+
{ method: "call", class: "ChatClient", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12310
|
+
{ method: "call", class: "ChatModel", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12311
|
+
// --- Java: OpenAI Java SDK (theokanning) --------------------------------
|
|
12312
|
+
{ method: "createChatCompletion", class: "OpenAiService", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12313
|
+
{ method: "createCompletion", class: "OpenAiService", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["java"] },
|
|
12314
|
+
// --- Go: go-openai (sashabaranov/go-openai) -----------------------------
|
|
12315
|
+
{ method: "CreateChatCompletion", class: "Client", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["go"] },
|
|
12316
|
+
{ method: "CreateCompletion", class: "Client", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["go"] },
|
|
12317
|
+
{ method: "CreateChatCompletionStream", class: "Client", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["go"] },
|
|
12318
|
+
// --- Go: langchaingo ----------------------------------------------------
|
|
12319
|
+
{ method: "Call", class: "LLM", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["go"] },
|
|
12320
|
+
{ method: "Generate", class: "LLM", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["go"] },
|
|
12321
|
+
{ method: "GenerateContent", class: "Model", type: "prompt_injection", cwe: "CWE-1427", severity: "high", arg_positions: [0, 1, 2, 3], languages: ["go"] },
|
|
12322
|
+
// cognium-dev #240 ship 1 — extended framework sinks for open_redirect
|
|
12323
|
+
// (CWE-601) and trust_boundary (CWE-501). Definitions extracted above
|
|
12324
|
+
// as OPEN_REDIRECT_FRAMEWORK_SINKS / TRUST_BOUNDARY_FRAMEWORK_SINKS to
|
|
12325
|
+
// keep the DEFAULT_SINKS literal within TypeScript's union-type
|
|
12326
|
+
// inference complexity limit (TS2590). See ~lines 661-752.
|
|
12327
|
+
...OPEN_REDIRECT_FRAMEWORK_SINKS,
|
|
12328
|
+
...TRUST_BOUNDARY_FRAMEWORK_SINKS
|
|
12181
12329
|
];
|
|
12182
12330
|
var DEFAULT_SANITIZERS = [
|
|
12183
12331
|
// SQL Injection - proper parameter binding sanitizes input
|