fad-checker 2.0.0 → 2.0.1
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/CHANGELOG.md +15 -0
- package/README.md +58 -10
- package/data/eol-mapping.json +5 -5
- package/fad-checker.js +289 -203
- package/lib/codecs/npm/collect.js +26 -17
- package/lib/codecs/npm/parse.js +114 -10
- package/lib/codecs/npm/registry.js +4 -3
- package/lib/codecs/npm.codec.js +1 -1
- package/lib/codecs/nuget.codec.js +4 -2
- package/lib/codecs/pypi/parse.js +104 -12
- package/lib/codecs/pypi.codec.js +27 -6
- package/lib/core.js +35 -1
- package/lib/cve-match.js +15 -5
- package/lib/deps-descriptor.js +110 -0
- package/lib/nvd.js +4 -3
- package/lib/osv.js +7 -4
- package/lib/outdated.js +7 -2
- package/lib/retire.js +77 -13
- package/lib/transitive.js +3 -3
- package/lib/ui.js +87 -0
- package/package.json +3 -2
- package/CLAUDE.md +0 -147
- package/docs/ARCHITECTURE.md +0 -182
- package/docs/USAGE.md +0 -187
- package/docs/superpowers/plans/2026-05-29-codec-composer.md +0 -556
- package/docs/superpowers/plans/2026-05-29-codec-foundation.md +0 -851
- package/docs/superpowers/plans/2026-05-29-codec-nuget.md +0 -432
- package/docs/superpowers/plans/2026-05-29-codec-pypi.md +0 -450
- package/docs/superpowers/specs/2026-05-29-codecs-multi-ecosystem-design.md +0 -251
- package/test/cli-ecosystem.test.js +0 -30
- package/test/codec-edge-cases.test.js +0 -131
- package/test/codec-integration.test.js +0 -119
- package/test/codecs.test.js +0 -92
- package/test/composer.test.js +0 -71
- package/test/core.test.js +0 -153
- package/test/cpe.test.js +0 -166
- package/test/cve-download.test.js +0 -39
- package/test/cve-match.test.js +0 -217
- package/test/cve-report.test.js +0 -180
- package/test/dep-record.test.js +0 -31
- package/test/fixtures/complex-enterprise/api/pom.xml +0 -32
- package/test/fixtures/complex-enterprise/build/pom.xml +0 -46
- package/test/fixtures/complex-enterprise/dao/pom.xml +0 -37
- package/test/fixtures/complex-enterprise/pom.xml +0 -66
- package/test/fixtures/complex-enterprise/web/pom.xml +0 -77
- package/test/fixtures/csharp-config/packages.config +0 -4
- package/test/fixtures/csharp-csproj/Directory.Packages.props +0 -5
- package/test/fixtures/csharp-csproj/app.csproj +0 -7
- package/test/fixtures/csharp-lock/packages.lock.json +0 -6
- package/test/fixtures/cve-samples/cve-non-java.json +0 -19
- package/test/fixtures/cve-samples/cve-product-only.json +0 -31
- package/test/fixtures/cve-samples/cve-with-packagename.json +0 -37
- package/test/fixtures/cve-samples/nvd-log4shell.json +0 -40
- package/test/fixtures/cve-samples/nvd-npm-lodash.json +0 -22
- package/test/fixtures/monorepo-mixed/libs/common-bom/pom.xml +0 -26
- package/test/fixtures/monorepo-mixed/packages/cli/package.json +0 -14
- package/test/fixtures/monorepo-mixed/packages/cli/yarn.lock +0 -41
- package/test/fixtures/monorepo-mixed/packages/no-lock/package.json +0 -10
- package/test/fixtures/monorepo-mixed/packages/web-app/package-lock.json +0 -71
- package/test/fixtures/monorepo-mixed/packages/web-app/package.json +0 -17
- package/test/fixtures/monorepo-mixed/pom.xml +0 -29
- package/test/fixtures/monorepo-mixed/services/api/pom.xml +0 -27
- package/test/fixtures/monorepo-mixed/services/worker/pom.xml +0 -28
- package/test/fixtures/php-app/composer.json +0 -5
- package/test/fixtures/php-app/composer.lock +0 -10
- package/test/fixtures/polyglot/cs/packages.lock.json +0 -1
- package/test/fixtures/polyglot/js/package-lock.json +0 -1
- package/test/fixtures/polyglot/js/package.json +0 -1
- package/test/fixtures/polyglot/mvn/pom.xml +0 -7
- package/test/fixtures/polyglot/php/composer.lock +0 -1
- package/test/fixtures/polyglot/py/poetry.lock +0 -3
- package/test/fixtures/private-lib-detection/core/pom.xml +0 -26
- package/test/fixtures/private-lib-detection/plugin/pom.xml +0 -23
- package/test/fixtures/private-lib-detection/pom.xml +0 -35
- package/test/fixtures/python-pipenv/Pipfile.lock +0 -1
- package/test/fixtures/python-poetry/poetry.lock +0 -7
- package/test/fixtures/python-reqs/requirements.txt +0 -5
- package/test/fixtures/python-uv/uv.lock +0 -3
- package/test/fixtures/simple/app/pom.xml +0 -28
- package/test/fixtures/simple/lib/pom.xml +0 -18
- package/test/fixtures/simple/pom.xml +0 -24
- package/test/maven-repo.test.js +0 -111
- package/test/maven-version.test.js +0 -57
- package/test/monorepo.test.js +0 -132
- package/test/npm-registry.test.js +0 -64
- package/test/npm.test.js +0 -150
- package/test/nuget.test.js +0 -66
- package/test/osv.test.js +0 -62
- package/test/outdated.test.js +0 -101
- package/test/pypi.test.js +0 -72
- package/test/snyk.test.js +0 -64
- package/test/transitive.test.js +0 -305
- package/test/webjar.test.js +0 -33
package/test/cve-report.test.js
DELETED
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
const { test } = require("node:test");
|
|
2
|
-
const assert = require("node:assert/strict");
|
|
3
|
-
const fs = require("fs");
|
|
4
|
-
const path = require("path");
|
|
5
|
-
const os = require("os");
|
|
6
|
-
const { generateHtmlReport, generateWordReport, computeStats, writeReports, esc } = require("../lib/cve-report");
|
|
7
|
-
|
|
8
|
-
const sampleMatches = [
|
|
9
|
-
{
|
|
10
|
-
dep: { groupId: "org.apache.logging.log4j", artifactId: "log4j-core", version: "2.14.0", scope: "compile" },
|
|
11
|
-
cve: { id: "CVE-2021-44228", severity: "CRITICAL", score: 10, description: "Log4Shell", fixVersion: "2.15.0" },
|
|
12
|
-
confidence: "exact",
|
|
13
|
-
},
|
|
14
|
-
{
|
|
15
|
-
dep: { groupId: "com.fasterxml.jackson.core", artifactId: "jackson-databind", version: "2.13.0", scope: "compile" },
|
|
16
|
-
cve: { id: "CVE-2022-42003", severity: "HIGH", score: 7.5, description: "DoS via deep nesting", fixVersion: "2.13.5" },
|
|
17
|
-
confidence: "exact",
|
|
18
|
-
},
|
|
19
|
-
];
|
|
20
|
-
|
|
21
|
-
const projectInfo = { name: "demo", src: "/tmp/demo", generatedAt: "2026-05-21", cveDataDate: null };
|
|
22
|
-
|
|
23
|
-
test("computeStats counts by severity", () => {
|
|
24
|
-
const s = computeStats(sampleMatches);
|
|
25
|
-
assert.equal(s.total, 2);
|
|
26
|
-
assert.equal(s.critical, 1);
|
|
27
|
-
assert.equal(s.high, 1);
|
|
28
|
-
assert.equal(s.medium, 0);
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
test("computeStats handles undefined/null severity", () => {
|
|
32
|
-
const s = computeStats([{ cve: { severity: null } }, { cve: {} }]);
|
|
33
|
-
assert.equal(s.unknown, 2);
|
|
34
|
-
});
|
|
35
|
-
|
|
36
|
-
test("esc escapes HTML entities", () => {
|
|
37
|
-
assert.equal(esc(`<script>alert("x")</script>&`), "<script>alert("x")</script>&");
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
test("generateHtmlReport produces well-formed self-contained HTML", () => {
|
|
41
|
-
const html = generateHtmlReport({
|
|
42
|
-
cveMatches: sampleMatches,
|
|
43
|
-
eolResults: [], obsoleteResults: [], outdatedResults: [],
|
|
44
|
-
projectInfo,
|
|
45
|
-
});
|
|
46
|
-
assert.ok(html.startsWith("<!doctype html>"));
|
|
47
|
-
assert.ok(html.includes("CVE-2021-44228"));
|
|
48
|
-
assert.ok(html.includes("Log4Shell"));
|
|
49
|
-
assert.ok(html.includes("<style>"), "should have inline CSS");
|
|
50
|
-
assert.ok(!html.includes("</body>\n<body>"), "no double body");
|
|
51
|
-
});
|
|
52
|
-
|
|
53
|
-
test("generateWordReport contains Word XML namespaces", () => {
|
|
54
|
-
const doc = generateWordReport({
|
|
55
|
-
cveMatches: sampleMatches,
|
|
56
|
-
eolResults: [], obsoleteResults: [], outdatedResults: [],
|
|
57
|
-
projectInfo,
|
|
58
|
-
});
|
|
59
|
-
assert.ok(doc.includes("xmlns:o=\"urn:schemas-microsoft-com:office:office\""));
|
|
60
|
-
assert.ok(doc.includes("Word.Document"));
|
|
61
|
-
});
|
|
62
|
-
|
|
63
|
-
test("generateHtmlReport wraps tables with copy buttons", () => {
|
|
64
|
-
const html = generateHtmlReport({
|
|
65
|
-
cveMatches: sampleMatches,
|
|
66
|
-
eolResults: [], obsoleteResults: [], outdatedResults: [],
|
|
67
|
-
projectInfo,
|
|
68
|
-
});
|
|
69
|
-
// Wrapper div + copy button injected around every table
|
|
70
|
-
assert.ok(html.includes('class="table-wrap"'), "should wrap tables");
|
|
71
|
-
assert.ok(html.includes('class="btn-copy"'), "should have copy buttons");
|
|
72
|
-
assert.ok(html.includes("📋 Copy table"), "button label");
|
|
73
|
-
// Copy script wired up
|
|
74
|
-
assert.ok(html.includes("navigator.clipboard"), "should include clipboard script");
|
|
75
|
-
assert.ok(html.includes("inlineStylesForWord"), "should inline styles for Word paste");
|
|
76
|
-
});
|
|
77
|
-
|
|
78
|
-
test("generateWordReport does NOT wrap tables (no copy buttons in .doc)", () => {
|
|
79
|
-
const doc = generateWordReport({
|
|
80
|
-
cveMatches: sampleMatches,
|
|
81
|
-
eolResults: [], obsoleteResults: [], outdatedResults: [],
|
|
82
|
-
projectInfo,
|
|
83
|
-
});
|
|
84
|
-
assert.ok(!doc.includes('class="table-wrap"'), "no wrapper in Word output");
|
|
85
|
-
assert.ok(!doc.includes('class="btn-copy"'), "no copy buttons in Word output");
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
test("CWE human names are shown in the CVE table and detail panel", () => {
|
|
89
|
-
const html = generateHtmlReport({
|
|
90
|
-
cveMatches: sampleMatches.map(m => ({
|
|
91
|
-
...m,
|
|
92
|
-
cve: { ...m.cve, cwes: ["CWE-502", "CWE-917"] },
|
|
93
|
-
})),
|
|
94
|
-
eolResults: [], obsoleteResults: [], outdatedResults: [],
|
|
95
|
-
projectInfo,
|
|
96
|
-
});
|
|
97
|
-
// Detail panel: full name inline
|
|
98
|
-
assert.ok(html.includes("Deserialization of Untrusted Data"), "CWE-502 name in panel");
|
|
99
|
-
assert.ok(html.includes("Expression Language Injection"), "CWE-917 name in panel");
|
|
100
|
-
// Tooltip on the column link
|
|
101
|
-
assert.ok(html.includes('title="CWE-502: Deserialization of Untrusted Data"'), "tooltip");
|
|
102
|
-
// Weaknesses section in detail panel
|
|
103
|
-
assert.ok(html.includes("Weaknesses (CWE)"), "weaknesses section heading");
|
|
104
|
-
assert.ok(html.includes('class="cwe-list"'), "CWE list rendered");
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
test("Executive summary surfaces primary CWE name on each preview row", () => {
|
|
108
|
-
const html = generateHtmlReport({
|
|
109
|
-
cveMatches: [{
|
|
110
|
-
dep: { groupId: "org.apache.logging.log4j", artifactId: "log4j-core", version: "2.14.0", scope: "compile" },
|
|
111
|
-
cve: { id: "CVE-2021-44228", severity: "CRITICAL", score: 10, description: "Log4Shell", fixVersion: "2.15.0", cwes: ["CWE-502", "CWE-917"] },
|
|
112
|
-
confidence: "exact",
|
|
113
|
-
}],
|
|
114
|
-
eolResults: [], obsoleteResults: [], outdatedResults: [],
|
|
115
|
-
projectInfo,
|
|
116
|
-
});
|
|
117
|
-
assert.ok(html.includes('class="exec-cwe"'), "exec-cwe chip in summary");
|
|
118
|
-
assert.ok(html.includes('class="exec-cwe-id">CWE-502'), "id in chip");
|
|
119
|
-
assert.ok(html.includes("Deserialization of Untrusted Data"), "human name in chip");
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
test("Unknown CWE falls back to id-only display", () => {
|
|
123
|
-
const html = generateHtmlReport({
|
|
124
|
-
cveMatches: [{
|
|
125
|
-
dep: { groupId: "x", artifactId: "y", version: "1", scope: "compile" },
|
|
126
|
-
cve: { id: "CVE-2099-9999", severity: "HIGH", description: "n/a", cwes: ["CWE-99999"] },
|
|
127
|
-
}],
|
|
128
|
-
eolResults: [], obsoleteResults: [], outdatedResults: [],
|
|
129
|
-
projectInfo,
|
|
130
|
-
});
|
|
131
|
-
assert.ok(html.includes("CWE-99999"), "unknown CWE id present");
|
|
132
|
-
assert.ok(html.includes("(unknown weakness)"), "fallback label for unknown CWE in detail panel");
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
test("generateWordReport applies width:100% to every table for Word page-fit", () => {
|
|
136
|
-
const doc = generateWordReport({
|
|
137
|
-
cveMatches: sampleMatches,
|
|
138
|
-
eolResults: [], obsoleteResults: [], outdatedResults: [],
|
|
139
|
-
projectInfo,
|
|
140
|
-
});
|
|
141
|
-
// Every <table> rewritten with width="100%" + inline style (incl. fixed table-layout)
|
|
142
|
-
assert.ok(doc.includes('width="100%"'), "tables get width=100% attribute");
|
|
143
|
-
assert.ok(doc.includes("table-layout:fixed"), "tables get fixed layout");
|
|
144
|
-
// Word section + landscape page setup
|
|
145
|
-
assert.ok(doc.includes('class="WordSection1"'), "WordSection1 wrapper");
|
|
146
|
-
assert.ok(doc.includes("mso-page-orientation: landscape"), "landscape declared via mso-* property");
|
|
147
|
-
assert.ok(doc.includes("29.7cm 21cm"), "explicit A4 landscape dimensions");
|
|
148
|
-
// MSO conditional comment block with twips-based <w:sectPr> equivalent
|
|
149
|
-
assert.ok(doc.includes("w:WordDocument"), "Word document XML block");
|
|
150
|
-
assert.ok(doc.includes("16838twips"), "twips-based page size in mso conditional");
|
|
151
|
-
// Colgroups injected so fixed-layout tables have deterministic column widths
|
|
152
|
-
assert.ok(doc.includes('<colgroup>'), "colgroup injected on tables");
|
|
153
|
-
});
|
|
154
|
-
|
|
155
|
-
test("writeReports writes both files to disk", async () => {
|
|
156
|
-
const tmp = fs.mkdtempSync(path.join(os.tmpdir(), "fad-checker-rep-"));
|
|
157
|
-
const r = await writeReports({
|
|
158
|
-
cveMatches: sampleMatches,
|
|
159
|
-
eolResults: [{ dep: { groupId: "org.hibernate", artifactId: "hibernate-core", version: "5.6" }, product: "Hibernate ORM", eol: "2025-08-08" }],
|
|
160
|
-
obsoleteResults: [{ dep: { groupId: "log4j", artifactId: "log4j", version: "1.2" }, severity: "CRITICAL", replacement: "log4j-core 2.x" }],
|
|
161
|
-
outdatedResults: [],
|
|
162
|
-
projectInfo,
|
|
163
|
-
outputDir: tmp,
|
|
164
|
-
});
|
|
165
|
-
assert.ok(fs.existsSync(r.htmlPath));
|
|
166
|
-
assert.ok(fs.existsSync(r.docPath));
|
|
167
|
-
const html = fs.readFileSync(r.htmlPath, "utf8");
|
|
168
|
-
assert.ok(html.includes("Hibernate ORM"));
|
|
169
|
-
assert.ok(html.includes("log4j:log4j"));
|
|
170
|
-
fs.rmSync(tmp, { recursive: true, force: true });
|
|
171
|
-
});
|
|
172
|
-
|
|
173
|
-
const { depDisplayName, depDisplayParts } = require("../lib/cve-report");
|
|
174
|
-
|
|
175
|
-
test("depDisplayName delegates to codec and preserves legacy display", () => {
|
|
176
|
-
assert.strictEqual(depDisplayName({ ecosystem: "maven", ecosystemType: "maven", namespace: "org.apache", name: "log4j", groupId: "org.apache", artifactId: "log4j" }), "org.apache:log4j");
|
|
177
|
-
assert.strictEqual(depDisplayName({ ecosystem: "npm", ecosystemType: "npm", namespace: "", name: "lodash", artifactId: "lodash" }), "npm:lodash");
|
|
178
|
-
const parts = depDisplayParts({ ecosystem: "npm", ecosystemType: "npm", namespace: "", name: "lodash", artifactId: "lodash" });
|
|
179
|
-
assert.deepStrictEqual(parts, { groupLine: "npm:", nameLine: "lodash" });
|
|
180
|
-
});
|
package/test/dep-record.test.js
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
const test = require("node:test");
|
|
2
|
-
const assert = require("node:assert");
|
|
3
|
-
const { makeDepRecord, coordKeyFor } = require("../lib/dep-record");
|
|
4
|
-
|
|
5
|
-
test("maven depRecord builds bare g:a coordKey and keeps groupId/artifactId aliases", () => {
|
|
6
|
-
const d = makeDepRecord({ ecosystem: "maven", namespace: "org.apache", name: "log4j", version: "2.14.0", manifestPath: "/p/pom.xml", scope: "compile" });
|
|
7
|
-
assert.strictEqual(d.coordKey, "org.apache:log4j"); // clé Maven brute (pas de préfixe)
|
|
8
|
-
assert.strictEqual(d.groupId, "org.apache"); // alias rétro-compat
|
|
9
|
-
assert.strictEqual(d.artifactId, "log4j"); // alias rétro-compat
|
|
10
|
-
assert.deepStrictEqual(d.versions, ["2.14.0"]);
|
|
11
|
-
assert.strictEqual(d.isDev, false);
|
|
12
|
-
});
|
|
13
|
-
|
|
14
|
-
test("npm depRecord has empty namespace and npm-prefixed coordKey", () => {
|
|
15
|
-
const d = makeDepRecord({ ecosystem: "npm", namespace: "", name: "lodash", version: "4.17.20", manifestPath: "/p/package-lock.json", scope: "prod" });
|
|
16
|
-
assert.strictEqual(d.coordKey, "npm:lodash");
|
|
17
|
-
assert.strictEqual(d.groupId, "");
|
|
18
|
-
assert.strictEqual(d.artifactId, "lodash");
|
|
19
|
-
});
|
|
20
|
-
|
|
21
|
-
test("coordKeyFor composes ecosystem + namespace + name", () => {
|
|
22
|
-
assert.strictEqual(coordKeyFor("composer", "guzzlehttp", "guzzle"), "composer:guzzlehttp/guzzle");
|
|
23
|
-
assert.strictEqual(coordKeyFor("pypi", "", "requests"), "pypi:requests");
|
|
24
|
-
assert.strictEqual(coordKeyFor("nuget", "", "Newtonsoft.Json"), "nuget:newtonsoft.json");
|
|
25
|
-
});
|
|
26
|
-
|
|
27
|
-
test("pomPaths shares the manifestPaths array reference (push stays in sync)", () => {
|
|
28
|
-
const d = makeDepRecord({ ecosystem: "maven", namespace: "g", name: "a", version: "1.0", manifestPath: "/p/pom.xml" });
|
|
29
|
-
d.manifestPaths.push("/q/pom.xml");
|
|
30
|
-
assert.deepStrictEqual(d.pomPaths, ["/p/pom.xml", "/q/pom.xml"]);
|
|
31
|
-
});
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project xmlns="http://maven.apache.org/POM/4.0.0">
|
|
3
|
-
<modelVersion>4.0.0</modelVersion>
|
|
4
|
-
<parent>
|
|
5
|
-
<groupId>com.acme.enterprise</groupId>
|
|
6
|
-
<artifactId>enterprise-root</artifactId>
|
|
7
|
-
<version>4.2.1</version>
|
|
8
|
-
<relativePath>..</relativePath>
|
|
9
|
-
</parent>
|
|
10
|
-
<artifactId>api</artifactId>
|
|
11
|
-
<dependencyManagement>
|
|
12
|
-
<dependencies>
|
|
13
|
-
<dependency>
|
|
14
|
-
<groupId>com.acme.enterprise</groupId>
|
|
15
|
-
<artifactId>build-bom</artifactId>
|
|
16
|
-
<version>4.2.1</version>
|
|
17
|
-
<type>pom</type>
|
|
18
|
-
<scope>import</scope>
|
|
19
|
-
</dependency>
|
|
20
|
-
</dependencies>
|
|
21
|
-
</dependencyManagement>
|
|
22
|
-
<dependencies>
|
|
23
|
-
<dependency>
|
|
24
|
-
<groupId>com.fasterxml.jackson.core</groupId>
|
|
25
|
-
<artifactId>jackson-databind</artifactId>
|
|
26
|
-
</dependency>
|
|
27
|
-
<dependency>
|
|
28
|
-
<groupId>com.acme.private</groupId>
|
|
29
|
-
<artifactId>acme-commons</artifactId>
|
|
30
|
-
</dependency>
|
|
31
|
-
</dependencies>
|
|
32
|
-
</project>
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project xmlns="http://maven.apache.org/POM/4.0.0">
|
|
3
|
-
<modelVersion>4.0.0</modelVersion>
|
|
4
|
-
<parent>
|
|
5
|
-
<groupId>com.acme.enterprise</groupId>
|
|
6
|
-
<artifactId>enterprise-root</artifactId>
|
|
7
|
-
<version>4.2.1</version>
|
|
8
|
-
<relativePath>..</relativePath>
|
|
9
|
-
</parent>
|
|
10
|
-
<artifactId>build-bom</artifactId>
|
|
11
|
-
<packaging>pom</packaging>
|
|
12
|
-
<dependencyManagement>
|
|
13
|
-
<dependencies>
|
|
14
|
-
<dependency>
|
|
15
|
-
<groupId>org.hibernate</groupId>
|
|
16
|
-
<artifactId>hibernate-core</artifactId>
|
|
17
|
-
<version>${hibernate.version}</version>
|
|
18
|
-
</dependency>
|
|
19
|
-
<dependency>
|
|
20
|
-
<groupId>com.fasterxml.jackson.core</groupId>
|
|
21
|
-
<artifactId>jackson-databind</artifactId>
|
|
22
|
-
<version>${jackson.version}</version>
|
|
23
|
-
</dependency>
|
|
24
|
-
<dependency>
|
|
25
|
-
<groupId>org.apache.logging.log4j</groupId>
|
|
26
|
-
<artifactId>log4j-core</artifactId>
|
|
27
|
-
<version>2.14.0</version>
|
|
28
|
-
</dependency>
|
|
29
|
-
<dependency>
|
|
30
|
-
<groupId>com.acme.private</groupId>
|
|
31
|
-
<artifactId>acme-commons</artifactId>
|
|
32
|
-
<version>${acme-commons.version}</version>
|
|
33
|
-
</dependency>
|
|
34
|
-
<dependency>
|
|
35
|
-
<groupId>commons-io</groupId>
|
|
36
|
-
<artifactId>commons-io</artifactId>
|
|
37
|
-
<version>2.7</version>
|
|
38
|
-
</dependency>
|
|
39
|
-
<dependency>
|
|
40
|
-
<groupId>org.codehaus.jackson</groupId>
|
|
41
|
-
<artifactId>jackson-mapper-asl</artifactId>
|
|
42
|
-
<version>1.9.13</version>
|
|
43
|
-
</dependency>
|
|
44
|
-
</dependencies>
|
|
45
|
-
</dependencyManagement>
|
|
46
|
-
</project>
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project xmlns="http://maven.apache.org/POM/4.0.0">
|
|
3
|
-
<modelVersion>4.0.0</modelVersion>
|
|
4
|
-
<parent>
|
|
5
|
-
<groupId>com.acme.enterprise</groupId>
|
|
6
|
-
<artifactId>enterprise-root</artifactId>
|
|
7
|
-
<version>4.2.1</version>
|
|
8
|
-
<relativePath>..</relativePath>
|
|
9
|
-
</parent>
|
|
10
|
-
<artifactId>dao</artifactId>
|
|
11
|
-
<dependencyManagement>
|
|
12
|
-
<dependencies>
|
|
13
|
-
<dependency>
|
|
14
|
-
<groupId>com.acme.enterprise</groupId>
|
|
15
|
-
<artifactId>build-bom</artifactId>
|
|
16
|
-
<version>4.2.1</version>
|
|
17
|
-
<type>pom</type>
|
|
18
|
-
<scope>import</scope>
|
|
19
|
-
</dependency>
|
|
20
|
-
</dependencies>
|
|
21
|
-
</dependencyManagement>
|
|
22
|
-
<dependencies>
|
|
23
|
-
<dependency>
|
|
24
|
-
<groupId>org.hibernate</groupId>
|
|
25
|
-
<artifactId>hibernate-core</artifactId>
|
|
26
|
-
</dependency>
|
|
27
|
-
<dependency>
|
|
28
|
-
<groupId>org.apache.commons</groupId>
|
|
29
|
-
<artifactId>commons-lang3</artifactId>
|
|
30
|
-
<version>3.12.0</version>
|
|
31
|
-
</dependency>
|
|
32
|
-
<dependency>
|
|
33
|
-
<groupId>commons-io</groupId>
|
|
34
|
-
<artifactId>commons-io</artifactId>
|
|
35
|
-
</dependency>
|
|
36
|
-
</dependencies>
|
|
37
|
-
</project>
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project xmlns="http://maven.apache.org/POM/4.0.0">
|
|
3
|
-
<modelVersion>4.0.0</modelVersion>
|
|
4
|
-
<parent>
|
|
5
|
-
<groupId>org.springframework.boot</groupId>
|
|
6
|
-
<artifactId>spring-boot-starter-parent</artifactId>
|
|
7
|
-
<version>2.7.18</version>
|
|
8
|
-
</parent>
|
|
9
|
-
<groupId>com.acme.enterprise</groupId>
|
|
10
|
-
<artifactId>enterprise-root</artifactId>
|
|
11
|
-
<version>4.2.1</version>
|
|
12
|
-
<packaging>pom</packaging>
|
|
13
|
-
<modules>
|
|
14
|
-
<module>build</module>
|
|
15
|
-
<module>api</module>
|
|
16
|
-
<module>dao</module>
|
|
17
|
-
<module>web</module>
|
|
18
|
-
</modules>
|
|
19
|
-
<properties>
|
|
20
|
-
<java.version>17</java.version>
|
|
21
|
-
<hibernate.version>5.6.15.Final</hibernate.version>
|
|
22
|
-
<jackson.version>2.13.5</jackson.version>
|
|
23
|
-
<acme-commons.version>3.0.0</acme-commons.version>
|
|
24
|
-
</properties>
|
|
25
|
-
<profiles>
|
|
26
|
-
<profile>
|
|
27
|
-
<id>dev</id>
|
|
28
|
-
<activation>
|
|
29
|
-
<activeByDefault>true</activeByDefault>
|
|
30
|
-
</activation>
|
|
31
|
-
<properties>
|
|
32
|
-
<env.profile>dev</env.profile>
|
|
33
|
-
</properties>
|
|
34
|
-
<dependencies>
|
|
35
|
-
<dependency>
|
|
36
|
-
<groupId>com.h2database</groupId>
|
|
37
|
-
<artifactId>h2</artifactId>
|
|
38
|
-
<version>2.2.224</version>
|
|
39
|
-
</dependency>
|
|
40
|
-
</dependencies>
|
|
41
|
-
</profile>
|
|
42
|
-
<profile>
|
|
43
|
-
<id>prod</id>
|
|
44
|
-
<properties>
|
|
45
|
-
<env.profile>prod</env.profile>
|
|
46
|
-
</properties>
|
|
47
|
-
<dependencies>
|
|
48
|
-
<dependency>
|
|
49
|
-
<groupId>org.postgresql</groupId>
|
|
50
|
-
<artifactId>postgresql</artifactId>
|
|
51
|
-
<version>42.6.0</version>
|
|
52
|
-
</dependency>
|
|
53
|
-
</dependencies>
|
|
54
|
-
</profile>
|
|
55
|
-
<profile>
|
|
56
|
-
<id>oracle</id>
|
|
57
|
-
<dependencies>
|
|
58
|
-
<dependency>
|
|
59
|
-
<groupId>com.acme.private</groupId>
|
|
60
|
-
<artifactId>acme-oracle-driver</artifactId>
|
|
61
|
-
<version>1.2.3</version>
|
|
62
|
-
</dependency>
|
|
63
|
-
</dependencies>
|
|
64
|
-
</profile>
|
|
65
|
-
</profiles>
|
|
66
|
-
</project>
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<project xmlns="http://maven.apache.org/POM/4.0.0">
|
|
3
|
-
<modelVersion>4.0.0</modelVersion>
|
|
4
|
-
<parent>
|
|
5
|
-
<groupId>com.acme.enterprise</groupId>
|
|
6
|
-
<artifactId>enterprise-root</artifactId>
|
|
7
|
-
<version>4.2.1</version>
|
|
8
|
-
<relativePath>..</relativePath>
|
|
9
|
-
</parent>
|
|
10
|
-
<artifactId>web</artifactId>
|
|
11
|
-
<packaging>war</packaging>
|
|
12
|
-
<profiles>
|
|
13
|
-
<profile>
|
|
14
|
-
<id>tomcat</id>
|
|
15
|
-
<activation>
|
|
16
|
-
<activeByDefault>true</activeByDefault>
|
|
17
|
-
</activation>
|
|
18
|
-
<properties>
|
|
19
|
-
<servlet.container>tomcat</servlet.container>
|
|
20
|
-
</properties>
|
|
21
|
-
<dependencies>
|
|
22
|
-
<dependency>
|
|
23
|
-
<groupId>org.apache.tomcat.embed</groupId>
|
|
24
|
-
<artifactId>tomcat-embed-core</artifactId>
|
|
25
|
-
<version>9.0.83</version>
|
|
26
|
-
</dependency>
|
|
27
|
-
</dependencies>
|
|
28
|
-
</profile>
|
|
29
|
-
<profile>
|
|
30
|
-
<id>jetty</id>
|
|
31
|
-
<dependencies>
|
|
32
|
-
<dependency>
|
|
33
|
-
<groupId>org.eclipse.jetty</groupId>
|
|
34
|
-
<artifactId>jetty-server</artifactId>
|
|
35
|
-
<version>9.4.51.v20230217</version>
|
|
36
|
-
</dependency>
|
|
37
|
-
</dependencies>
|
|
38
|
-
</profile>
|
|
39
|
-
</profiles>
|
|
40
|
-
<dependencyManagement>
|
|
41
|
-
<dependencies>
|
|
42
|
-
<dependency>
|
|
43
|
-
<groupId>com.acme.enterprise</groupId>
|
|
44
|
-
<artifactId>build-bom</artifactId>
|
|
45
|
-
<version>4.2.1</version>
|
|
46
|
-
<type>pom</type>
|
|
47
|
-
<scope>import</scope>
|
|
48
|
-
</dependency>
|
|
49
|
-
</dependencies>
|
|
50
|
-
</dependencyManagement>
|
|
51
|
-
<dependencies>
|
|
52
|
-
<dependency>
|
|
53
|
-
<groupId>com.acme.enterprise</groupId>
|
|
54
|
-
<artifactId>api</artifactId>
|
|
55
|
-
<version>4.2.1</version>
|
|
56
|
-
</dependency>
|
|
57
|
-
<dependency>
|
|
58
|
-
<groupId>com.acme.enterprise</groupId>
|
|
59
|
-
<artifactId>dao</artifactId>
|
|
60
|
-
<version>4.2.1</version>
|
|
61
|
-
</dependency>
|
|
62
|
-
<dependency>
|
|
63
|
-
<groupId>org.apache.logging.log4j</groupId>
|
|
64
|
-
<artifactId>log4j-core</artifactId>
|
|
65
|
-
</dependency>
|
|
66
|
-
<dependency>
|
|
67
|
-
<groupId>org.codehaus.jackson</groupId>
|
|
68
|
-
<artifactId>jackson-mapper-asl</artifactId>
|
|
69
|
-
</dependency>
|
|
70
|
-
<dependency>
|
|
71
|
-
<groupId>junit</groupId>
|
|
72
|
-
<artifactId>junit</artifactId>
|
|
73
|
-
<version>4.13.2</version>
|
|
74
|
-
<scope>test</scope>
|
|
75
|
-
</dependency>
|
|
76
|
-
</dependencies>
|
|
77
|
-
</project>
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"cveMetadata": {
|
|
3
|
-
"cveId": "CVE-2024-00001"
|
|
4
|
-
},
|
|
5
|
-
"containers": {
|
|
6
|
-
"cna": {
|
|
7
|
-
"descriptions": [{ "lang": "en", "value": "Some npm package vulnerability — should be excluded from Maven index." }],
|
|
8
|
-
"metrics": [{ "cvssV3_1": { "baseScore": 5.0, "baseSeverity": "MEDIUM" } }],
|
|
9
|
-
"affected": [
|
|
10
|
-
{
|
|
11
|
-
"vendor": "npm-vendor",
|
|
12
|
-
"product": "left-pad",
|
|
13
|
-
"collectionURL": "https://registry.npmjs.org",
|
|
14
|
-
"versions": [{ "version": "1.0.0", "status": "affected", "lessThan": "1.3.0" }]
|
|
15
|
-
}
|
|
16
|
-
]
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"cveMetadata": {
|
|
3
|
-
"cveId": "CVE-2017-5638",
|
|
4
|
-
"datePublished": "2017-03-10T00:00:00Z"
|
|
5
|
-
},
|
|
6
|
-
"containers": {
|
|
7
|
-
"cna": {
|
|
8
|
-
"descriptions": [
|
|
9
|
-
{ "lang": "en", "value": "Apache Struts 2 Jakarta Multipart parser arbitrary OS command execution." }
|
|
10
|
-
],
|
|
11
|
-
"metrics": [
|
|
12
|
-
{
|
|
13
|
-
"cvssV3_1": {
|
|
14
|
-
"baseScore": 9.8,
|
|
15
|
-
"baseSeverity": "CRITICAL"
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
],
|
|
19
|
-
"affected": [
|
|
20
|
-
{
|
|
21
|
-
"vendor": "apache",
|
|
22
|
-
"product": "struts2-core",
|
|
23
|
-
"versions": [
|
|
24
|
-
{ "version": "2.3.5", "status": "affected", "lessThan": "2.3.32", "versionType": "maven" },
|
|
25
|
-
{ "version": "2.5.0", "status": "affected", "lessThan": "2.5.10.1", "versionType": "maven" }
|
|
26
|
-
]
|
|
27
|
-
}
|
|
28
|
-
]
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"cveMetadata": {
|
|
3
|
-
"cveId": "CVE-2021-44228",
|
|
4
|
-
"datePublished": "2021-12-10T00:00:00Z"
|
|
5
|
-
},
|
|
6
|
-
"containers": {
|
|
7
|
-
"cna": {
|
|
8
|
-
"descriptions": [
|
|
9
|
-
{ "lang": "en", "value": "Apache Log4j2 JNDI features used in configuration do not protect against attacker controlled LDAP and other JNDI related endpoints. (Log4Shell)" }
|
|
10
|
-
],
|
|
11
|
-
"metrics": [
|
|
12
|
-
{
|
|
13
|
-
"cvssV3_1": {
|
|
14
|
-
"baseScore": 10.0,
|
|
15
|
-
"baseSeverity": "CRITICAL"
|
|
16
|
-
}
|
|
17
|
-
}
|
|
18
|
-
],
|
|
19
|
-
"affected": [
|
|
20
|
-
{
|
|
21
|
-
"vendor": "apache",
|
|
22
|
-
"product": "log4j-core",
|
|
23
|
-
"packageName": "org.apache.logging.log4j:log4j-core",
|
|
24
|
-
"collectionURL": "https://repo.maven.apache.org/maven2",
|
|
25
|
-
"versions": [
|
|
26
|
-
{
|
|
27
|
-
"version": "2.0",
|
|
28
|
-
"status": "affected",
|
|
29
|
-
"versionType": "maven",
|
|
30
|
-
"lessThan": "2.15.0"
|
|
31
|
-
}
|
|
32
|
-
]
|
|
33
|
-
}
|
|
34
|
-
]
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "CVE-2021-44228",
|
|
3
|
-
"published": "2021-12-10T00:00:00Z",
|
|
4
|
-
"lastModified": "2022-04-01T00:00:00Z",
|
|
5
|
-
"descriptions": [
|
|
6
|
-
{ "lang": "en", "value": "Apache Log4j2 JNDI features used in configuration do not protect against attacker controlled LDAP and other JNDI related endpoints." }
|
|
7
|
-
],
|
|
8
|
-
"metrics": {
|
|
9
|
-
"cvssMetricV31": [
|
|
10
|
-
{
|
|
11
|
-
"cvssData": {
|
|
12
|
-
"baseScore": 10.0,
|
|
13
|
-
"baseSeverity": "CRITICAL",
|
|
14
|
-
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H"
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
]
|
|
18
|
-
},
|
|
19
|
-
"references": [
|
|
20
|
-
{ "url": "https://logging.apache.org/log4j/2.x/security.html", "tags": ["Vendor Advisory"] }
|
|
21
|
-
],
|
|
22
|
-
"configurations": [
|
|
23
|
-
{
|
|
24
|
-
"operator": "OR",
|
|
25
|
-
"nodes": [
|
|
26
|
-
{
|
|
27
|
-
"operator": "OR",
|
|
28
|
-
"cpeMatch": [
|
|
29
|
-
{
|
|
30
|
-
"vulnerable": true,
|
|
31
|
-
"criteria": "cpe:2.3:a:apache:log4j:*:*:*:*:*:*:*:*",
|
|
32
|
-
"versionStartIncluding": "2.0.0",
|
|
33
|
-
"versionEndExcluding": "2.15.0"
|
|
34
|
-
}
|
|
35
|
-
]
|
|
36
|
-
}
|
|
37
|
-
]
|
|
38
|
-
}
|
|
39
|
-
]
|
|
40
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"id": "CVE-2019-10744",
|
|
3
|
-
"published": "2019-07-26T00:00:00Z",
|
|
4
|
-
"descriptions": [{ "lang": "en", "value": "Prototype pollution in lodash defaultsDeep." }],
|
|
5
|
-
"metrics": {
|
|
6
|
-
"cvssMetricV31": [{ "cvssData": { "baseScore": 9.1, "baseSeverity": "CRITICAL", "vectorString": "CVSS:3.1/AV:N" } }]
|
|
7
|
-
},
|
|
8
|
-
"references": [{ "url": "https://github.com/lodash/lodash/pull/4336", "tags": ["Patch"] }],
|
|
9
|
-
"configurations": [
|
|
10
|
-
{
|
|
11
|
-
"operator": "OR",
|
|
12
|
-
"nodes": [
|
|
13
|
-
{
|
|
14
|
-
"operator": "OR",
|
|
15
|
-
"cpeMatch": [
|
|
16
|
-
{ "vulnerable": true, "criteria": "cpe:2.3:a:lodash:lodash:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "4.17.12" }
|
|
17
|
-
]
|
|
18
|
-
}
|
|
19
|
-
]
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
}
|