fad-checker 2.0.0 → 2.1.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/CHANGELOG.md +65 -0
- package/README.md +147 -25
- package/completions/fad-checker.bash +1 -1
- package/completions/fad-checker.zsh +14 -1
- package/data/eol-mapping.json +5 -5
- package/data/license-policy.json +97 -0
- package/fad-checker-report/cve-report.doc +630 -0
- package/fad-checker-report/cve-report.html +748 -0
- package/fad-checker.js +556 -245
- package/lib/cache-archive.js +3 -0
- package/lib/codecs/codec.interface.js +3 -0
- package/lib/codecs/composer/parse.js +3 -0
- package/lib/codecs/composer/registry.js +13 -5
- package/lib/codecs/composer.codec.js +3 -0
- package/lib/codecs/go/parse.js +65 -0
- package/lib/codecs/go/registry.js +74 -0
- package/lib/codecs/go.codec.js +76 -0
- package/lib/codecs/index.js +7 -2
- package/lib/codecs/maven/jar-scan.js +199 -0
- package/lib/codecs/maven.codec.js +17 -1
- package/lib/codecs/npm/collect.js +37 -17
- package/lib/codecs/npm/parse.js +117 -10
- package/lib/codecs/npm/registry.js +14 -5
- package/lib/codecs/npm.codec.js +4 -1
- package/lib/codecs/nuget/parse.js +3 -0
- package/lib/codecs/nuget/registry.js +11 -4
- package/lib/codecs/nuget.codec.js +7 -2
- package/lib/codecs/pypi/parse.js +111 -14
- package/lib/codecs/pypi/registry.js +24 -5
- package/lib/codecs/pypi.codec.js +30 -6
- package/lib/codecs/recipes.js +28 -1
- package/lib/codecs/ruby/parse.js +42 -0
- package/lib/codecs/ruby/registry.js +76 -0
- package/lib/codecs/ruby.codec.js +66 -0
- package/lib/codecs/select.js +3 -0
- package/lib/codecs/yarn.codec.js +3 -0
- package/lib/config.js +3 -0
- package/lib/core.js +38 -1
- package/lib/cpe.js +30 -5
- package/lib/csaf-export.js +159 -0
- package/lib/cve-download.js +3 -0
- package/lib/cve-match.js +27 -6
- package/lib/cve-report.js +157 -28
- package/lib/dep-record.js +15 -2
- package/lib/deps-descriptor.js +113 -0
- package/lib/epss.js +115 -0
- package/lib/gate.js +45 -0
- package/lib/json-export.js +110 -0
- package/lib/kev.js +88 -0
- package/lib/license-policy.js +110 -0
- package/lib/maven-license.js +52 -0
- package/lib/maven-repo.js +3 -0
- package/lib/maven-version.js +8 -3
- package/lib/nvd.js +17 -6
- package/lib/osv.js +75 -23
- package/lib/outdated.js +10 -2
- package/lib/priority.js +90 -0
- package/lib/purl.js +77 -0
- package/lib/retire.js +80 -13
- package/lib/sarif-export.js +134 -0
- package/lib/sbom-export.js +153 -0
- package/lib/scan-completeness.js +3 -0
- package/lib/snyk.js +3 -0
- package/lib/suppress.js +113 -0
- package/lib/transitive.js +6 -3
- package/lib/ui.js +90 -0
- package/package.json +49 -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
|
-
}
|