Skip to content

Commit f2c30dd

Browse files
authored
feat: Implement Yarn Berry Analyser (#7319)
1 parent 8e555fc commit f2c30dd

File tree

8 files changed

+10980
-73
lines changed

8 files changed

+10980
-73
lines changed

core/src/main/java/org/owasp/dependencycheck/analyzer/YarnAuditAnalyzer.java

Lines changed: 232 additions & 70 deletions
Large diffs are not rendered by default.

core/src/test/java/org/owasp/dependencycheck/analyzer/YarnAuditAnalyzerIT.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +26,29 @@
2626
import org.owasp.dependencycheck.dependency.EvidenceType;
2727
import org.owasp.dependencycheck.exception.InitializationException;
2828
import org.owasp.dependencycheck.utils.InvalidSettingException;
29+
2930
import static org.junit.Assert.assertTrue;
3031

3132
public class YarnAuditAnalyzerIT extends BaseTest {
3233

3334
@Test
34-
public void testAnalyzePackageYarn() throws AnalysisException, InitializationException, InvalidSettingException {
35+
public void testAnalyzePackageYarnClassic() throws AnalysisException, InitializationException, InvalidSettingException {
36+
testAnalyzePackageYarn("yarn-classic-audit/yarn.lock");
37+
}
38+
39+
@Test
40+
public void testAnalyzePackageYarnBerry() throws AnalysisException, InitializationException, InvalidSettingException {
41+
testAnalyzePackageYarn("yarn-berry-audit/yarn.lock");
42+
}
3543

44+
private void testAnalyzePackageYarn(String yarnLockFile) throws AnalysisException {
3645
//Assume.assumeThat(getSettings().getBoolean(Settings.KEYS.ANALYZER_YARN_AUDIT_ENABLED), is(true));
3746
try (Engine engine = new Engine(getSettings())) {
38-
YarnAuditAnalyzer analyzer = new YarnAuditAnalyzer();
47+
var analyzer = new YarnAuditAnalyzer();
3948
analyzer.setFilesMatched(true);
4049
analyzer.initialize(getSettings());
4150
analyzer.prepare(engine);
42-
final Dependency toScan = new Dependency(BaseTest.getResourceAsFile(this, "yarnaudit/yarn.lock"));
51+
final Dependency toScan = new Dependency(BaseTest.getResourceAsFile(this, yarnLockFile));
4352
analyzer.analyze(toScan, engine);
4453
boolean found = false;
4554
assertTrue("More then 1 dependency should be identified", 1 < engine.getDependencies().length);

core/src/test/resources/yarn-berry-audit/.yarn/releases/yarn-4.6.0.cjs

Lines changed: 934 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
nodeLinker: node-modules
2+
3+
yarnPath: .yarn/releases/yarn-4.6.0.cjs
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
{
2+
"name": "owasp-nodejs-goat",
3+
"private": true,
4+
"version": "1.3.0",
5+
"description": "A tool to learn OWASP Top 10 for node.js developers",
6+
"main": "server.js",
7+
"dependencies": {
8+
"bcrypt-nodejs": "0.0.3",
9+
"body-parser": "^1.15.1",
10+
"consolidate": "^0.14.1",
11+
"csurf": "^1.8.3",
12+
"dont-sniff-mimetype": "^1.0.0",
13+
"express": "^4.13.4",
14+
"express-session": "^1.13.0",
15+
"forever": "^0.15.1",
16+
"helmet": "^2.0.0",
17+
"marked": "0.3.5",
18+
"mongodb": "^2.1.18",
19+
"serve-favicon": "^2.3.0",
20+
"swig": "^1.4.2",
21+
"underscore": "^1.8.3"
22+
},
23+
"comments": {
24+
"//": "a9 insecure components"
25+
},
26+
"engines": {
27+
"node": "15.x.x",
28+
"npm": "6.x.x"
29+
},
30+
"scripts": {
31+
"start": "node server.js",
32+
"test": "node node_modules/grunt-cli/bin/grunt test",
33+
"db:seed": "grunt db-reset",
34+
"precommit": "grunt precommit"
35+
},
36+
"devDependencies": {
37+
"async": "^2.0.0-rc.4",
38+
"grunt": "^1.0.1",
39+
"grunt-cli": "^1.2.0",
40+
"grunt-concurrent": "^2.3.0",
41+
"grunt-contrib-jshint": "^1.0.0",
42+
"grunt-contrib-watch": "^1.0.0",
43+
"grunt-env": "latest",
44+
"grunt-if": "https://github.com/binarymist/grunt-if/tarball/master",
45+
"grunt-jsbeautifier": "^0.2.12",
46+
"grunt-mocha-test": "^0.12.7",
47+
"grunt-nodemon": "^0.4.2",
48+
"grunt-npm-install": "^0.3.0",
49+
"grunt-retire": "^0.3.12",
50+
"mocha": "^2.4.5",
51+
"selenium-webdriver": "^2.53.2",
52+
"should": "^8.3.1",
53+
"zaproxy": "^0.2.0"
54+
},
55+
"repository": "https://github.com/OWASP/NodejsGoat",
56+
"license": "Apache 2.0",
57+
"packageManager": "[email protected]"
58+
}

0 commit comments

Comments
 (0)