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.
Files changed (93) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +58 -10
  3. package/data/eol-mapping.json +5 -5
  4. package/fad-checker.js +289 -203
  5. package/lib/codecs/npm/collect.js +26 -17
  6. package/lib/codecs/npm/parse.js +114 -10
  7. package/lib/codecs/npm/registry.js +4 -3
  8. package/lib/codecs/npm.codec.js +1 -1
  9. package/lib/codecs/nuget.codec.js +4 -2
  10. package/lib/codecs/pypi/parse.js +104 -12
  11. package/lib/codecs/pypi.codec.js +27 -6
  12. package/lib/core.js +35 -1
  13. package/lib/cve-match.js +15 -5
  14. package/lib/deps-descriptor.js +110 -0
  15. package/lib/nvd.js +4 -3
  16. package/lib/osv.js +7 -4
  17. package/lib/outdated.js +7 -2
  18. package/lib/retire.js +77 -13
  19. package/lib/transitive.js +3 -3
  20. package/lib/ui.js +87 -0
  21. package/package.json +3 -2
  22. package/CLAUDE.md +0 -147
  23. package/docs/ARCHITECTURE.md +0 -182
  24. package/docs/USAGE.md +0 -187
  25. package/docs/superpowers/plans/2026-05-29-codec-composer.md +0 -556
  26. package/docs/superpowers/plans/2026-05-29-codec-foundation.md +0 -851
  27. package/docs/superpowers/plans/2026-05-29-codec-nuget.md +0 -432
  28. package/docs/superpowers/plans/2026-05-29-codec-pypi.md +0 -450
  29. package/docs/superpowers/specs/2026-05-29-codecs-multi-ecosystem-design.md +0 -251
  30. package/test/cli-ecosystem.test.js +0 -30
  31. package/test/codec-edge-cases.test.js +0 -131
  32. package/test/codec-integration.test.js +0 -119
  33. package/test/codecs.test.js +0 -92
  34. package/test/composer.test.js +0 -71
  35. package/test/core.test.js +0 -153
  36. package/test/cpe.test.js +0 -166
  37. package/test/cve-download.test.js +0 -39
  38. package/test/cve-match.test.js +0 -217
  39. package/test/cve-report.test.js +0 -180
  40. package/test/dep-record.test.js +0 -31
  41. package/test/fixtures/complex-enterprise/api/pom.xml +0 -32
  42. package/test/fixtures/complex-enterprise/build/pom.xml +0 -46
  43. package/test/fixtures/complex-enterprise/dao/pom.xml +0 -37
  44. package/test/fixtures/complex-enterprise/pom.xml +0 -66
  45. package/test/fixtures/complex-enterprise/web/pom.xml +0 -77
  46. package/test/fixtures/csharp-config/packages.config +0 -4
  47. package/test/fixtures/csharp-csproj/Directory.Packages.props +0 -5
  48. package/test/fixtures/csharp-csproj/app.csproj +0 -7
  49. package/test/fixtures/csharp-lock/packages.lock.json +0 -6
  50. package/test/fixtures/cve-samples/cve-non-java.json +0 -19
  51. package/test/fixtures/cve-samples/cve-product-only.json +0 -31
  52. package/test/fixtures/cve-samples/cve-with-packagename.json +0 -37
  53. package/test/fixtures/cve-samples/nvd-log4shell.json +0 -40
  54. package/test/fixtures/cve-samples/nvd-npm-lodash.json +0 -22
  55. package/test/fixtures/monorepo-mixed/libs/common-bom/pom.xml +0 -26
  56. package/test/fixtures/monorepo-mixed/packages/cli/package.json +0 -14
  57. package/test/fixtures/monorepo-mixed/packages/cli/yarn.lock +0 -41
  58. package/test/fixtures/monorepo-mixed/packages/no-lock/package.json +0 -10
  59. package/test/fixtures/monorepo-mixed/packages/web-app/package-lock.json +0 -71
  60. package/test/fixtures/monorepo-mixed/packages/web-app/package.json +0 -17
  61. package/test/fixtures/monorepo-mixed/pom.xml +0 -29
  62. package/test/fixtures/monorepo-mixed/services/api/pom.xml +0 -27
  63. package/test/fixtures/monorepo-mixed/services/worker/pom.xml +0 -28
  64. package/test/fixtures/php-app/composer.json +0 -5
  65. package/test/fixtures/php-app/composer.lock +0 -10
  66. package/test/fixtures/polyglot/cs/packages.lock.json +0 -1
  67. package/test/fixtures/polyglot/js/package-lock.json +0 -1
  68. package/test/fixtures/polyglot/js/package.json +0 -1
  69. package/test/fixtures/polyglot/mvn/pom.xml +0 -7
  70. package/test/fixtures/polyglot/php/composer.lock +0 -1
  71. package/test/fixtures/polyglot/py/poetry.lock +0 -3
  72. package/test/fixtures/private-lib-detection/core/pom.xml +0 -26
  73. package/test/fixtures/private-lib-detection/plugin/pom.xml +0 -23
  74. package/test/fixtures/private-lib-detection/pom.xml +0 -35
  75. package/test/fixtures/python-pipenv/Pipfile.lock +0 -1
  76. package/test/fixtures/python-poetry/poetry.lock +0 -7
  77. package/test/fixtures/python-reqs/requirements.txt +0 -5
  78. package/test/fixtures/python-uv/uv.lock +0 -3
  79. package/test/fixtures/simple/app/pom.xml +0 -28
  80. package/test/fixtures/simple/lib/pom.xml +0 -18
  81. package/test/fixtures/simple/pom.xml +0 -24
  82. package/test/maven-repo.test.js +0 -111
  83. package/test/maven-version.test.js +0 -57
  84. package/test/monorepo.test.js +0 -132
  85. package/test/npm-registry.test.js +0 -64
  86. package/test/npm.test.js +0 -150
  87. package/test/nuget.test.js +0 -66
  88. package/test/osv.test.js +0 -62
  89. package/test/outdated.test.js +0 -101
  90. package/test/pypi.test.js +0 -72
  91. package/test/snyk.test.js +0 -64
  92. package/test/transitive.test.js +0 -305
  93. package/test/webjar.test.js +0 -33
@@ -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>&`), "&lt;script&gt;alert(&quot;x&quot;)&lt;/script&gt;&amp;");
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
- });
@@ -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,4 +0,0 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
- <packages>
3
- <package id="EntityFramework" version="6.4.4" targetFramework="net48" />
4
- </packages>
@@ -1,5 +0,0 @@
1
- <Project>
2
- <ItemGroup>
3
- <PackageVersion Include="Managed" Version="6.0.0" />
4
- </ItemGroup>
5
- </Project>
@@ -1,7 +0,0 @@
1
- <Project Sdk="Microsoft.NET.Sdk">
2
- <ItemGroup>
3
- <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
4
- <PackageReference Include="Floating" Version="1.*" />
5
- <PackageReference Include="Managed" />
6
- </ItemGroup>
7
- </Project>
@@ -1,6 +0,0 @@
1
- { "version": 1, "dependencies": {
2
- "net6.0": {
3
- "Newtonsoft.Json": { "type": "Direct", "resolved": "13.0.1" },
4
- "Serilog": { "type": "Direct", "resolved": "2.12.0" },
5
- "System.Buffers": { "type": "Transitive", "resolved": "4.5.1" }
6
- } } }
@@ -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
- }