cognium-dev 3.177.0 → 3.179.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 +271 -2
- package/package.json +2 -2
package/dist/cli.js
CHANGED
|
@@ -11683,12 +11683,20 @@ var DEFAULT_SINKS = [
|
|
|
11683
11683
|
{ method: "format", class: "String", type: "format_string", cwe: "CWE-134", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11684
11684
|
{ method: "format", class: "Formatter", type: "format_string", cwe: "CWE-134", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11685
11685
|
{ method: "printf", class: "System.out", type: "format_string", cwe: "CWE-134", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11686
|
+
{ method: "format", class: "MessageFormat", type: "format_string", cwe: "CWE-134", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11687
|
+
{ method: "printf", class: "PrintStream", type: "format_string", cwe: "CWE-134", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11688
|
+
{ method: "format", class: "PrintStream", type: "format_string", cwe: "CWE-134", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11689
|
+
{ method: "printf", class: "PrintWriter", type: "format_string", cwe: "CWE-134", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11690
|
+
{ method: "format", class: "PrintWriter", type: "format_string", cwe: "CWE-134", severity: "high", arg_positions: [0], languages: ["java"] },
|
|
11686
11691
|
{ method: "printf", type: "format_string", cwe: "CWE-134", severity: "high", arg_positions: [0], languages: ["python"] },
|
|
11687
11692
|
{ method: "fprintf", type: "format_string", cwe: "CWE-134", severity: "high", arg_positions: [1], languages: ["python"] },
|
|
11688
11693
|
{ method: "Sprintf", class: "fmt", type: "format_string", cwe: "CWE-134", severity: "medium", arg_positions: [0], languages: ["go"] },
|
|
11689
11694
|
{ method: "Printf", class: "fmt", type: "format_string", cwe: "CWE-134", severity: "medium", arg_positions: [0], languages: ["go"] },
|
|
11690
11695
|
{ method: "Errorf", class: "fmt", type: "format_string", cwe: "CWE-134", severity: "medium", arg_positions: [0], languages: ["go"] },
|
|
11691
11696
|
{ method: "Fprintf", class: "fmt", type: "format_string", cwe: "CWE-134", severity: "medium", arg_positions: [1], languages: ["go"] },
|
|
11697
|
+
{ method: "Printf", class: "log", type: "format_string", cwe: "CWE-134", severity: "medium", arg_positions: [0], languages: ["go"] },
|
|
11698
|
+
{ method: "Fatalf", class: "log", type: "format_string", cwe: "CWE-134", severity: "medium", arg_positions: [0], languages: ["go"] },
|
|
11699
|
+
{ method: "Panicf", class: "log", type: "format_string", cwe: "CWE-134", severity: "medium", arg_positions: [0], languages: ["go"] },
|
|
11692
11700
|
{ method: "setHeader", type: "crlf", cwe: "CWE-113", severity: "medium", arg_positions: [1], languages: ["javascript", "typescript"] },
|
|
11693
11701
|
{ method: "writeHead", type: "crlf", cwe: "CWE-113", severity: "medium", arg_positions: [2], languages: ["javascript", "typescript"] },
|
|
11694
11702
|
{ method: "cookie", type: "crlf", cwe: "CWE-113", severity: "medium", arg_positions: [1], languages: ["javascript", "typescript"] },
|
|
@@ -13680,6 +13688,11 @@ function calculateSinkConfidence(call, pattern) {
|
|
|
13680
13688
|
if (pattern.class && call.receiver) {
|
|
13681
13689
|
if (receiverMightBeClass(call.receiver, pattern.class)) {
|
|
13682
13690
|
confidence += 0.1;
|
|
13691
|
+
const receiverLc = call.receiver.toLowerCase();
|
|
13692
|
+
const classLc = pattern.class.toLowerCase();
|
|
13693
|
+
if (call.receiver === pattern.class || receiverLc === classLc) {
|
|
13694
|
+
confidence += 0.05;
|
|
13695
|
+
}
|
|
13683
13696
|
}
|
|
13684
13697
|
}
|
|
13685
13698
|
if (pattern.severity === "critical") {
|
|
@@ -19183,6 +19196,50 @@ function applyLibraryApiSurfaceDowngrade(findings) {
|
|
|
19183
19196
|
});
|
|
19184
19197
|
}
|
|
19185
19198
|
|
|
19199
|
+
// ../circle-ir/dist/analysis/note-coalescer.js
|
|
19200
|
+
function coalesceNoteLevelFindings(findings) {
|
|
19201
|
+
if (findings.length < 2)
|
|
19202
|
+
return [...findings];
|
|
19203
|
+
const groups = new Map;
|
|
19204
|
+
const order = [];
|
|
19205
|
+
for (const f of findings) {
|
|
19206
|
+
const key = `${f.file}\x00${f.line}`;
|
|
19207
|
+
const bucket = groups.get(key);
|
|
19208
|
+
if (bucket) {
|
|
19209
|
+
bucket.push(f);
|
|
19210
|
+
} else {
|
|
19211
|
+
groups.set(key, [f]);
|
|
19212
|
+
order.push(key);
|
|
19213
|
+
}
|
|
19214
|
+
}
|
|
19215
|
+
const out2 = [];
|
|
19216
|
+
for (const key of order) {
|
|
19217
|
+
const bucket = groups.get(key);
|
|
19218
|
+
if (bucket.length === 1) {
|
|
19219
|
+
out2.push(bucket[0]);
|
|
19220
|
+
continue;
|
|
19221
|
+
}
|
|
19222
|
+
const allNote = bucket.every((f) => f.level === "note");
|
|
19223
|
+
if (!allNote) {
|
|
19224
|
+
for (const f of bucket)
|
|
19225
|
+
out2.push(f);
|
|
19226
|
+
continue;
|
|
19227
|
+
}
|
|
19228
|
+
const uniqueRuleIds = new Set(bucket.map((f) => f.rule_id));
|
|
19229
|
+
if (uniqueRuleIds.size < 2) {
|
|
19230
|
+
for (const f of bucket)
|
|
19231
|
+
out2.push(f);
|
|
19232
|
+
continue;
|
|
19233
|
+
}
|
|
19234
|
+
const sorted = [...bucket].sort((a, b) => a.rule_id.localeCompare(b.rule_id));
|
|
19235
|
+
const primary = sorted[0];
|
|
19236
|
+
const additional = sorted.slice(1).map((f) => f.rule_id).concat(...sorted.map((f) => f.labels ?? []));
|
|
19237
|
+
const uniqueLabels = Array.from(new Set(additional)).filter((l) => l !== primary.rule_id);
|
|
19238
|
+
out2.push({ ...primary, labels: uniqueLabels });
|
|
19239
|
+
}
|
|
19240
|
+
return out2;
|
|
19241
|
+
}
|
|
19242
|
+
|
|
19186
19243
|
// ../circle-ir/dist/analysis/entry-point-detection.js
|
|
19187
19244
|
var TIER_1_METHOD_ANNOTATIONS = new Set([
|
|
19188
19245
|
"RequestMapping",
|
|
@@ -32583,6 +32640,215 @@ class SinkSemanticsPass {
|
|
|
32583
32640
|
}
|
|
32584
32641
|
}
|
|
32585
32642
|
|
|
32643
|
+
// ../circle-ir/dist/analysis/dependency-versions.js
|
|
32644
|
+
function resolveFastjsonFromPom(pomXml) {
|
|
32645
|
+
if (!pomXml)
|
|
32646
|
+
return null;
|
|
32647
|
+
const propMatch = pomXml.match(/<fastjson\.version>\s*([^<\s]+)\s*<\/fastjson\.version>/);
|
|
32648
|
+
if (propMatch) {
|
|
32649
|
+
const version = propMatch[1];
|
|
32650
|
+
return { version, noneAutotype: /_noneautotype/i.test(version) };
|
|
32651
|
+
}
|
|
32652
|
+
const depRe = /<dependency>[\s\S]*?<\/dependency>/g;
|
|
32653
|
+
let m;
|
|
32654
|
+
while ((m = depRe.exec(pomXml)) !== null) {
|
|
32655
|
+
const block = m[0];
|
|
32656
|
+
const gid = block.match(/<groupId>\s*([^<\s]+)\s*<\/groupId>/)?.[1];
|
|
32657
|
+
const aid = block.match(/<artifactId>\s*([^<\s]+)\s*<\/artifactId>/)?.[1];
|
|
32658
|
+
if (gid !== "com.alibaba")
|
|
32659
|
+
continue;
|
|
32660
|
+
if (aid !== "fastjson" && aid !== "fastjson2")
|
|
32661
|
+
continue;
|
|
32662
|
+
const ver = block.match(/<version>\s*([^<\s]+)\s*<\/version>/)?.[1];
|
|
32663
|
+
if (!ver)
|
|
32664
|
+
continue;
|
|
32665
|
+
if (/^\$\{/.test(ver))
|
|
32666
|
+
return null;
|
|
32667
|
+
return { version: ver, noneAutotype: /_noneautotype/i.test(ver) };
|
|
32668
|
+
}
|
|
32669
|
+
return null;
|
|
32670
|
+
}
|
|
32671
|
+
function resolveFastjsonFromGradle(buildGradle) {
|
|
32672
|
+
if (!buildGradle)
|
|
32673
|
+
return null;
|
|
32674
|
+
const directRe = /['"(]\s*com\.alibaba:fastjson:([^'"$\s)]+)\s*['")]/;
|
|
32675
|
+
const direct = buildGradle.match(directRe);
|
|
32676
|
+
if (direct) {
|
|
32677
|
+
const version2 = direct[1];
|
|
32678
|
+
return { version: version2, noneAutotype: /_noneautotype/i.test(version2) };
|
|
32679
|
+
}
|
|
32680
|
+
const propRefRe = /['"(]\s*com\.alibaba:fastjson:\$\{?([A-Za-z_][A-Za-z0-9_]*)\}?\s*['")]/;
|
|
32681
|
+
const propRef = buildGradle.match(propRefRe);
|
|
32682
|
+
if (!propRef)
|
|
32683
|
+
return null;
|
|
32684
|
+
const propName = propRef[1];
|
|
32685
|
+
const defRe = new RegExp(`\\b${propName}\\s*[=:]\\s*['"]([^'"\\s]+)['"]`);
|
|
32686
|
+
const def = buildGradle.match(defRe);
|
|
32687
|
+
if (!def)
|
|
32688
|
+
return null;
|
|
32689
|
+
const version = def[1];
|
|
32690
|
+
return { version, noneAutotype: /_noneautotype/i.test(version) };
|
|
32691
|
+
}
|
|
32692
|
+
function resolvePyYamlFromRequirements(requirementsTxt) {
|
|
32693
|
+
if (!requirementsTxt)
|
|
32694
|
+
return null;
|
|
32695
|
+
for (const rawLine of requirementsTxt.split(/\r?\n/)) {
|
|
32696
|
+
const line = rawLine.replace(/#.*$/, "").trim();
|
|
32697
|
+
if (!line)
|
|
32698
|
+
continue;
|
|
32699
|
+
if (line.startsWith("-"))
|
|
32700
|
+
continue;
|
|
32701
|
+
const m = line.match(/^(pyyaml)\s*(==|>=|~=|>|===)\s*(\d+(?:\.\d+)*)/i);
|
|
32702
|
+
if (!m)
|
|
32703
|
+
continue;
|
|
32704
|
+
const version = m[3];
|
|
32705
|
+
return { version, safeByDefault: isPyYamlVersionSafeByDefault(version) };
|
|
32706
|
+
}
|
|
32707
|
+
return null;
|
|
32708
|
+
}
|
|
32709
|
+
function resolvePyYamlFromPyproject(pyprojectToml) {
|
|
32710
|
+
if (!pyprojectToml)
|
|
32711
|
+
return null;
|
|
32712
|
+
const poetryLine = pyprojectToml.match(/^\s*(pyyaml)\s*=\s*"([\^~=<>]*)(\d+(?:\.\d+)*)"/im);
|
|
32713
|
+
if (poetryLine) {
|
|
32714
|
+
const version = poetryLine[3];
|
|
32715
|
+
return { version, safeByDefault: isPyYamlVersionSafeByDefault(version) };
|
|
32716
|
+
}
|
|
32717
|
+
const poetryTable = pyprojectToml.match(/^\s*(pyyaml)\s*=\s*\{[^}]*\bversion\s*=\s*"([\^~=<>]*)(\d+(?:\.\d+)*)"/im);
|
|
32718
|
+
if (poetryTable) {
|
|
32719
|
+
const version = poetryTable[3];
|
|
32720
|
+
return { version, safeByDefault: isPyYamlVersionSafeByDefault(version) };
|
|
32721
|
+
}
|
|
32722
|
+
const pep621 = pyprojectToml.match(/"(pyyaml)\s*(==|>=|~=|>|===)\s*(\d+(?:\.\d+)*)/i);
|
|
32723
|
+
if (pep621) {
|
|
32724
|
+
const version = pep621[3];
|
|
32725
|
+
return { version, safeByDefault: isPyYamlVersionSafeByDefault(version) };
|
|
32726
|
+
}
|
|
32727
|
+
return null;
|
|
32728
|
+
}
|
|
32729
|
+
function isPyYamlVersionSafeByDefault(version) {
|
|
32730
|
+
const parts2 = version.split(".").map((s) => Number.parseInt(s, 10));
|
|
32731
|
+
if (parts2.length === 0 || !Number.isFinite(parts2[0]))
|
|
32732
|
+
return false;
|
|
32733
|
+
return parts2[0] >= 6;
|
|
32734
|
+
}
|
|
32735
|
+
function fileHasUnsafePyYamlLoader(sourceLines, sinkLine) {
|
|
32736
|
+
const start2 = Math.max(0, sinkLine - 1);
|
|
32737
|
+
const end = Math.min(sourceLines.length, start2 + 10);
|
|
32738
|
+
const unsafeRe = /\bLoader\s*=\s*(?:yaml\s*\.\s*)?(?:Loader|UnsafeLoader|FullLoader)\b/;
|
|
32739
|
+
for (let i2 = start2;i2 < end; i2++) {
|
|
32740
|
+
const ln = sourceLines[i2] ?? "";
|
|
32741
|
+
if (unsafeRe.test(ln))
|
|
32742
|
+
return true;
|
|
32743
|
+
const stripped = ln.trim();
|
|
32744
|
+
if (i2 > start2 && (stripped === ")" || stripped.endsWith(")"))) {
|
|
32745
|
+
return false;
|
|
32746
|
+
}
|
|
32747
|
+
}
|
|
32748
|
+
return false;
|
|
32749
|
+
}
|
|
32750
|
+
function fileReenablesFastjsonAutotype(source) {
|
|
32751
|
+
if (!source)
|
|
32752
|
+
return false;
|
|
32753
|
+
return /\bsetAutoTypeSupport\s*\(\s*true\b/.test(source);
|
|
32754
|
+
}
|
|
32755
|
+
function fileEnablesJacksonPolymorphism(source) {
|
|
32756
|
+
if (!source)
|
|
32757
|
+
return false;
|
|
32758
|
+
if (/\benableDefaultTyping\s*\(/.test(source))
|
|
32759
|
+
return true;
|
|
32760
|
+
if (/\bactivateDefaultTyping\s*\(/.test(source))
|
|
32761
|
+
return true;
|
|
32762
|
+
if (/@JsonTypeInfo\b/.test(source))
|
|
32763
|
+
return true;
|
|
32764
|
+
return false;
|
|
32765
|
+
}
|
|
32766
|
+
function fileConfiguresSnakeYamlSafely(source) {
|
|
32767
|
+
if (!source)
|
|
32768
|
+
return false;
|
|
32769
|
+
if (/\bnew\s+SafeConstructor\s*\(/.test(source))
|
|
32770
|
+
return true;
|
|
32771
|
+
if (/\bSafeConstructor\s+\w+\s*=/.test(source))
|
|
32772
|
+
return true;
|
|
32773
|
+
return false;
|
|
32774
|
+
}
|
|
32775
|
+
|
|
32776
|
+
// ../circle-ir/dist/analysis/passes/deserialization-safety-gate-pass.js
|
|
32777
|
+
var FASTJSON_METHODS = new Set(["parseObject", "parse"]);
|
|
32778
|
+
var FASTJSON_CLASSES = new Set(["JSON", "JSONObject"]);
|
|
32779
|
+
var JACKSON_METHODS = new Set(["readValue", "convertValue", "treeToValue"]);
|
|
32780
|
+
var JACKSON_CLASSES = new Set(["ObjectMapper", "ObjectReader"]);
|
|
32781
|
+
var SNAKEYAML_METHODS = new Set(["load", "loadAs", "loadAll"]);
|
|
32782
|
+
var SNAKEYAML_CLASSES = new Set(["Yaml"]);
|
|
32783
|
+
var PYYAML_METHODS = new Set(["load"]);
|
|
32784
|
+
var PYYAML_CLASSES = new Set(["yaml"]);
|
|
32785
|
+
|
|
32786
|
+
class DeserializationSafetyGatePass {
|
|
32787
|
+
dependencyContext;
|
|
32788
|
+
name = "deserialization-safety-gate";
|
|
32789
|
+
category = "security";
|
|
32790
|
+
constructor(dependencyContext) {
|
|
32791
|
+
this.dependencyContext = dependencyContext;
|
|
32792
|
+
}
|
|
32793
|
+
run(ctx) {
|
|
32794
|
+
const { graph, language, code } = ctx;
|
|
32795
|
+
if (language !== "java" && language !== "python") {
|
|
32796
|
+
return { droppedFastjson: 0, droppedJackson: 0, droppedSnakeYaml: 0, droppedPyYaml: 0 };
|
|
32797
|
+
}
|
|
32798
|
+
const sinks = ctx.hasResult("sink-filter") ? ctx.getResult("sink-filter").sinks : graph.ir.taint.sinks;
|
|
32799
|
+
const pomXml = this.dependencyContext?.java?.pomXml;
|
|
32800
|
+
const buildGradle = this.dependencyContext?.java?.buildGradle;
|
|
32801
|
+
const fastjson = (pomXml ? resolveFastjsonFromPom(pomXml) : null) ?? (buildGradle ? resolveFastjsonFromGradle(buildGradle) : null);
|
|
32802
|
+
const fastjsonHardened = fastjson?.noneAutotype === true && !fileReenablesFastjsonAutotype(code);
|
|
32803
|
+
const jacksonSafe = !fileEnablesJacksonPolymorphism(code);
|
|
32804
|
+
const snakeYamlSafe = fileConfiguresSnakeYamlSafely(code);
|
|
32805
|
+
const requirementsTxt = this.dependencyContext?.python?.requirementsTxt;
|
|
32806
|
+
const pyprojectToml = this.dependencyContext?.python?.pyprojectToml;
|
|
32807
|
+
const pyYaml = (requirementsTxt ? resolvePyYamlFromRequirements(requirementsTxt) : null) ?? (pyprojectToml ? resolvePyYamlFromPyproject(pyprojectToml) : null);
|
|
32808
|
+
const pyYamlSafeByDefault = pyYaml?.safeByDefault === true;
|
|
32809
|
+
let sourceLines = null;
|
|
32810
|
+
const getSourceLines = () => {
|
|
32811
|
+
if (sourceLines === null)
|
|
32812
|
+
sourceLines = code.split(`
|
|
32813
|
+
`);
|
|
32814
|
+
return sourceLines;
|
|
32815
|
+
};
|
|
32816
|
+
let droppedFastjson = 0;
|
|
32817
|
+
let droppedJackson = 0;
|
|
32818
|
+
let droppedSnakeYaml = 0;
|
|
32819
|
+
let droppedPyYaml = 0;
|
|
32820
|
+
const kept = sinks.filter((sink) => {
|
|
32821
|
+
if (sink.type !== "deserialization")
|
|
32822
|
+
return true;
|
|
32823
|
+
if (!sink.method)
|
|
32824
|
+
return true;
|
|
32825
|
+
if (fastjsonHardened && FASTJSON_METHODS.has(sink.method) && (sink.class === undefined || FASTJSON_CLASSES.has(sink.class))) {
|
|
32826
|
+
droppedFastjson++;
|
|
32827
|
+
return false;
|
|
32828
|
+
}
|
|
32829
|
+
if (jacksonSafe && JACKSON_METHODS.has(sink.method) && sink.class !== undefined && JACKSON_CLASSES.has(sink.class)) {
|
|
32830
|
+
droppedJackson++;
|
|
32831
|
+
return false;
|
|
32832
|
+
}
|
|
32833
|
+
if (snakeYamlSafe && SNAKEYAML_METHODS.has(sink.method) && sink.class !== undefined && SNAKEYAML_CLASSES.has(sink.class)) {
|
|
32834
|
+
droppedSnakeYaml++;
|
|
32835
|
+
return false;
|
|
32836
|
+
}
|
|
32837
|
+
if (language === "python" && pyYamlSafeByDefault && PYYAML_METHODS.has(sink.method) && (sink.class === undefined || PYYAML_CLASSES.has(sink.class)) && !fileHasUnsafePyYamlLoader(getSourceLines(), sink.line)) {
|
|
32838
|
+
droppedPyYaml++;
|
|
32839
|
+
return false;
|
|
32840
|
+
}
|
|
32841
|
+
return true;
|
|
32842
|
+
});
|
|
32843
|
+
const totalDropped = droppedFastjson + droppedJackson + droppedSnakeYaml + droppedPyYaml;
|
|
32844
|
+
if (totalDropped > 0) {
|
|
32845
|
+
sinks.length = 0;
|
|
32846
|
+
sinks.push(...kept);
|
|
32847
|
+
}
|
|
32848
|
+
return { droppedFastjson, droppedJackson, droppedSnakeYaml, droppedPyYaml };
|
|
32849
|
+
}
|
|
32850
|
+
}
|
|
32851
|
+
|
|
32586
32852
|
// ../circle-ir/dist/analysis/passes/cli-main-reflection-suppress-pass.js
|
|
32587
32853
|
var REFLECTION_SINK_METHODS = new Set([
|
|
32588
32854
|
"forName",
|
|
@@ -44124,6 +44390,8 @@ async function analyze(code, filePath, language, options = {}) {
|
|
|
44124
44390
|
pipeline.add(new SinkFilterPass);
|
|
44125
44391
|
if (!disabledPasses.has("sink-semantics"))
|
|
44126
44392
|
pipeline.add(new SinkSemanticsPass);
|
|
44393
|
+
if (!disabledPasses.has("deserialization-safety-gate"))
|
|
44394
|
+
pipeline.add(new DeserializationSafetyGatePass(options.dependencyContext));
|
|
44127
44395
|
if (!disabledPasses.has("cli-main-reflection-suppress"))
|
|
44128
44396
|
pipeline.add(new CliMainReflectionSuppressPass);
|
|
44129
44397
|
if (!disabledPasses.has("library-profile-sink-gate"))
|
|
@@ -44285,7 +44553,8 @@ async function analyze(code, filePath, language, options = {}) {
|
|
|
44285
44553
|
const verifiedFindings = applyConfidenceFilter(findings, options.includeSpeculative === true);
|
|
44286
44554
|
const downgradedFindings = applyLibraryApiSurfaceDowngrade(verifiedFindings);
|
|
44287
44555
|
const profiledFindings = applyProjectProfileTransform(downgradedFindings, makeProfileResolver2(options.projectProfile));
|
|
44288
|
-
const
|
|
44556
|
+
const coalescedFindings = coalesceNoteLevelFindings(profiledFindings);
|
|
44557
|
+
const cappedFindings = applyPerFileFindingCap(filePath, coalescedFindings, options.perFileFindingCap ?? DEFAULT_PER_FILE_FINDING_CAP);
|
|
44289
44558
|
return {
|
|
44290
44559
|
meta,
|
|
44291
44560
|
types,
|
|
@@ -45066,7 +45335,7 @@ var colors = {
|
|
|
45066
45335
|
};
|
|
45067
45336
|
|
|
45068
45337
|
// src/version.ts
|
|
45069
|
-
var version = "3.
|
|
45338
|
+
var version = "3.179.0";
|
|
45070
45339
|
|
|
45071
45340
|
// src/formatters.ts
|
|
45072
45341
|
var LIBRARY_API_SURFACE_TAG2 = "library-api-surface:caller-responsibility";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cognium-dev",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.179.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",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
},
|
|
67
67
|
"dependencies": {
|
|
68
68
|
"@cognium/project-profile-detect": "^1.1.0",
|
|
69
|
-
"circle-ir": "^3.
|
|
69
|
+
"circle-ir": "^3.179.0"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
72
|
"@types/node": "^25.5.0",
|