cognium-dev 3.66.0 → 3.68.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/dist/cli.js +63 -4
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -6279,6 +6279,12 @@ function extractPythonLiteral(node) {
|
|
|
6279
6279
|
if (literalTypes.includes(node.type)) {
|
|
6280
6280
|
const text = getNodeText(node);
|
|
6281
6281
|
if (node.type === "string") {
|
|
6282
|
+
for (let i2 = 0;i2 < node.childCount; i2++) {
|
|
6283
|
+
const child = node.child(i2);
|
|
6284
|
+
if (child && child.type === "interpolation") {
|
|
6285
|
+
return null;
|
|
6286
|
+
}
|
|
6287
|
+
}
|
|
6282
6288
|
return text.replace(/^['"]|['"]$/g, "").replace(/^f['"]|['"]$/g, "");
|
|
6283
6289
|
}
|
|
6284
6290
|
return text;
|
|
@@ -11038,9 +11044,11 @@ var DEFAULT_SINKS = [
|
|
|
11038
11044
|
{ method: "rmdir", class: "fs", type: "path_traversal", cwe: "CWE-22", severity: "critical", arg_positions: [0] },
|
|
11039
11045
|
{ method: "createReadStream", class: "fs", type: "path_traversal", cwe: "CWE-22", severity: "critical", arg_positions: [0] },
|
|
11040
11046
|
{ method: "createWriteStream", class: "fs", type: "path_traversal", cwe: "CWE-22", severity: "critical", arg_positions: [0] },
|
|
11041
|
-
{ method: "query", class: "Connection", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
11042
|
-
{ method: "query", class: "Pool", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
11043
|
-
{ method: "query", class: "Client", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
11047
|
+
{ method: "query", class: "Connection", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"], allow_unresolved_receiver: true },
|
|
11048
|
+
{ method: "query", class: "Pool", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"], allow_unresolved_receiver: true },
|
|
11049
|
+
{ method: "query", class: "Client", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"], allow_unresolved_receiver: true },
|
|
11050
|
+
{ method: "execute", class: "Pool", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"], allow_unresolved_receiver: true },
|
|
11051
|
+
{ method: "execute", class: "Connection", type: "sql_injection", cwe: "CWE-89", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"], allow_unresolved_receiver: true },
|
|
11044
11052
|
{ method: "raw", type: "sql_injection", cwe: "CWE-89", severity: "high", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
11045
11053
|
{ method: "setAttribute", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [1] },
|
|
11046
11054
|
{ method: "send", class: "Response", type: "xss", cwe: "CWE-79", severity: "high", arg_positions: [0] },
|
|
@@ -11053,6 +11061,9 @@ var DEFAULT_SINKS = [
|
|
|
11053
11061
|
{ method: "runInContext", class: "vm", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0] },
|
|
11054
11062
|
{ method: "runInNewContext", class: "vm", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0] },
|
|
11055
11063
|
{ method: "runInThisContext", class: "vm", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0] },
|
|
11064
|
+
{ method: "parse", class: "protobuf", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
11065
|
+
{ method: "parse", class: "protobufjs", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
11066
|
+
{ method: "parse", class: "Root", type: "code_injection", cwe: "CWE-94", severity: "critical", arg_positions: [0], languages: ["javascript", "typescript"] },
|
|
11056
11067
|
{ method: "find", class: "Collection", type: "nosql_injection", cwe: "CWE-943", severity: "high", arg_positions: [0] },
|
|
11057
11068
|
{ method: "findOne", class: "Collection", type: "nosql_injection", cwe: "CWE-943", severity: "high", arg_positions: [0] },
|
|
11058
11069
|
{ method: "updateOne", class: "Collection", type: "nosql_injection", cwe: "CWE-943", severity: "high", arg_positions: [0] },
|
|
@@ -12249,6 +12260,9 @@ function matchesSinkPattern(call, pattern, typeHierarchy, language) {
|
|
|
12249
12260
|
if (typeHierarchy && typeHierarchy.couldBeType(call.receiver, pattern.class)) {
|
|
12250
12261
|
return true;
|
|
12251
12262
|
}
|
|
12263
|
+
if (pattern.allow_unresolved_receiver && !call.receiver_type && !call.receiver_type_fqn && call.receiver.includes(".")) {
|
|
12264
|
+
return true;
|
|
12265
|
+
}
|
|
12252
12266
|
return false;
|
|
12253
12267
|
} else if (!call.receiver && !call.receiver_type) {
|
|
12254
12268
|
const target = call.resolution?.target;
|
|
@@ -15265,6 +15279,9 @@ class DefaultLanguageRegistry {
|
|
|
15265
15279
|
if (language === "tsx") {
|
|
15266
15280
|
return this.plugins.get("javascript");
|
|
15267
15281
|
}
|
|
15282
|
+
if (language === "typescript") {
|
|
15283
|
+
return this.plugins.get("javascript");
|
|
15284
|
+
}
|
|
15268
15285
|
return this.plugins.get(language);
|
|
15269
15286
|
}
|
|
15270
15287
|
getForFile(filePath) {
|
|
@@ -16853,6 +16870,22 @@ class PythonPlugin extends BaseLanguagePlugin {
|
|
|
16853
16870
|
severity: "high",
|
|
16854
16871
|
argPositions: [0]
|
|
16855
16872
|
},
|
|
16873
|
+
{
|
|
16874
|
+
method: "urlretrieve",
|
|
16875
|
+
class: "urllib.request",
|
|
16876
|
+
type: "ssrf",
|
|
16877
|
+
cwe: "CWE-918",
|
|
16878
|
+
severity: "high",
|
|
16879
|
+
argPositions: [0]
|
|
16880
|
+
},
|
|
16881
|
+
{
|
|
16882
|
+
method: "urlretrieve",
|
|
16883
|
+
class: "urllib.request",
|
|
16884
|
+
type: "path_traversal",
|
|
16885
|
+
cwe: "CWE-22",
|
|
16886
|
+
severity: "high",
|
|
16887
|
+
argPositions: [1]
|
|
16888
|
+
},
|
|
16856
16889
|
{
|
|
16857
16890
|
method: "loads",
|
|
16858
16891
|
class: "pickle",
|
|
@@ -22122,6 +22155,32 @@ class SinkFilterPass {
|
|
|
22122
22155
|
return true;
|
|
22123
22156
|
});
|
|
22124
22157
|
}
|
|
22158
|
+
if (["javascript", "typescript"].includes(language)) {
|
|
22159
|
+
const sourceLines = ctx.code.split(`
|
|
22160
|
+
`);
|
|
22161
|
+
const guardPatterns = /\b(?:includes|startsWith|endsWith|indexOf|test|match)\s*\(/;
|
|
22162
|
+
filtered = filtered.filter((sink) => {
|
|
22163
|
+
if (sink.type !== "open_redirect" && sink.type !== "crlf") {
|
|
22164
|
+
return true;
|
|
22165
|
+
}
|
|
22166
|
+
const sinkLineText = sourceLines[sink.line - 1] ?? "";
|
|
22167
|
+
const startLine = Math.max(0, sink.line - 7);
|
|
22168
|
+
for (let i2 = startLine;i2 < sink.line - 1; i2++) {
|
|
22169
|
+
const line = sourceLines[i2] ?? "";
|
|
22170
|
+
if (/\bif\s*\(/.test(line) && guardPatterns.test(line)) {
|
|
22171
|
+
return false;
|
|
22172
|
+
}
|
|
22173
|
+
}
|
|
22174
|
+
if (/\bencodeURIComponent\s*\(|\bencodeURI\s*\(/.test(sinkLineText)) {
|
|
22175
|
+
return false;
|
|
22176
|
+
}
|
|
22177
|
+
const setHeaderMatch = sinkLineText.match(/setHeader\s*\(\s*[^,]+,\s*(['"`])([^'"`]*)\1\s*\)/);
|
|
22178
|
+
if (setHeaderMatch) {
|
|
22179
|
+
return false;
|
|
22180
|
+
}
|
|
22181
|
+
return true;
|
|
22182
|
+
});
|
|
22183
|
+
}
|
|
22125
22184
|
return { sources, sinks: filtered, sanitizers };
|
|
22126
22185
|
}
|
|
22127
22186
|
}
|
|
@@ -31317,7 +31376,7 @@ var colors = {
|
|
|
31317
31376
|
};
|
|
31318
31377
|
|
|
31319
31378
|
// src/version.ts
|
|
31320
|
-
var version = "3.
|
|
31379
|
+
var version = "3.68.0";
|
|
31321
31380
|
|
|
31322
31381
|
// src/formatters.ts
|
|
31323
31382
|
var SINK_SEVERITY = {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cognium-dev",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.68.0",
|
|
4
4
|
"description": "Static Application Security Testing CLI for detecting security vulnerabilities via taint tracking",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"registry": "https://registry.npmjs.org/"
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
|
-
"circle-ir": "^3.
|
|
68
|
+
"circle-ir": "^3.68.0"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
71
|
"@types/node": "^25.5.0",
|