retire 5.5.0 → 5.6.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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## [5.6.0]
4
+
5
+ ### Improvements
6
+
7
+ - Report when repository certificate errors are ignored (`--insecure`): as `ignoreRepositoryCertificateErrors` in the JSON report, and as a `retirejs:ignore-repository-certificate-errors` entry under `metadata.properties` in all CycloneDX reports. The entry is only present when the option is set.
8
+
3
9
  ## [5.5.0]
4
10
 
5
11
  ### Improvements
package/lib/cli.js CHANGED
@@ -96,6 +96,7 @@ const log = reporting.open({
96
96
  colors: !!prg.colors,
97
97
  colorwarn,
98
98
  jsRepo: jsrepolocation,
99
+ insecure: prg.insecure,
99
100
  outputformat: prg.outputformat,
100
101
  outputpath: prg.outputpath,
101
102
  path: scanpath,
@@ -68,12 +68,16 @@ function configureCycloneDXJSONLogger(logger, writer, config, hash) {
68
68
  const seen = new Map();
69
69
  const vulnerabilitiesCyclone = new Map();
70
70
  const includeVEX = config.outputformat === 'cyclonedxJSON1_6_VEX';
71
- const repositories = (0, utils_1.vulnerabilityRepositories)(config.jsRepo);
71
+ const vulnerabilityRepositoriesList = (0, utils_1.vulnerabilityRepositories)(config.jsRepo);
72
72
  // Only attributable to a single URL when exactly one repository was used
73
73
  const retireSource = {
74
74
  name: 'Retire.js',
75
- url: repositories.length === 1 ? repositories[0] : undefined,
75
+ url: vulnerabilityRepositoriesList.length === 1 ? vulnerabilityRepositoriesList[0] : undefined,
76
76
  };
77
+ const properties = vulnerabilityRepositoriesList.map((repo) => ({ name: 'retirejs:vulnerability-repository', value: repo }));
78
+ if (config.insecure) {
79
+ properties.push({ name: 'retirejs:ignore-repository-certificate-errors', value: 'true' });
80
+ }
77
81
  const components = finalResults.data
78
82
  .filter((d) => d.results)
79
83
  .map((r) => r.results
@@ -168,12 +172,7 @@ function configureCycloneDXJSONLogger(logger, writer, config, hash) {
168
172
  version: retire.version,
169
173
  },
170
174
  ],
171
- properties: repositories.length
172
- ? repositories.map((repo) => ({
173
- name: 'retirejs:vulnerability-repository',
174
- value: repo,
175
- }))
176
- : undefined,
175
+ properties: properties.length ? properties : undefined,
177
176
  },
178
177
  components: components,
179
178
  vulnerabilities: includeVEX ? Array.from(vulnerabilitiesCyclone.values()) : undefined,
@@ -65,7 +65,10 @@ function configureCycloneDXJSONLogger(logger, writer, config, hash) {
65
65
  };
66
66
  logger.close = function (callback) {
67
67
  const write = vulnsFound ? writer.err : writer.out;
68
- const repositories = (0, utils_1.vulnerabilityRepositories)(config.jsRepo);
68
+ const properties = (0, utils_1.vulnerabilityRepositories)(config.jsRepo).map((repo) => ({ name: 'retirejs:vulnerability-repository', value: repo }));
69
+ if (config.insecure) {
70
+ properties.push({ name: 'retirejs:ignore-repository-certificate-errors', value: 'true' });
71
+ }
69
72
  const seen = new Map();
70
73
  const components = finalResults.data
71
74
  .filter((d) => d.results)
@@ -123,12 +126,7 @@ function configureCycloneDXJSONLogger(logger, writer, config, hash) {
123
126
  version: retire.version,
124
127
  },
125
128
  ],
126
- properties: repositories.length
127
- ? repositories.map((repo) => ({
128
- name: 'retirejs:vulnerability-repository',
129
- value: repo,
130
- }))
131
- : undefined,
129
+ properties: properties.length ? properties : undefined,
132
130
  },
133
131
  components: components,
134
132
  }, undefined, 2));
@@ -65,9 +65,16 @@ function configureCycloneDXLogger(logger, writer, config, hash) {
65
65
  };
66
66
  logger.close = function (callback) {
67
67
  const write = vulnsFound ? writer.err : writer.out;
68
- const repositories = (0, utils_1.vulnerabilityRepositories)(config.jsRepo)
69
- .map((repo) => `
70
- <property name="retirejs:vulnerability-repository">${escapeXml(repo)}</property>`)
68
+ const propertyList = (0, utils_1.vulnerabilityRepositories)(config.jsRepo).map((repo) => ({
69
+ name: 'retirejs:vulnerability-repository',
70
+ value: repo,
71
+ }));
72
+ if (config.insecure) {
73
+ propertyList.push({ name: 'retirejs:ignore-repository-certificate-errors', value: 'true' });
74
+ }
75
+ const properties = propertyList
76
+ .map((property) => `
77
+ <property name="${escapeXml(property.name)}">${escapeXml(property.value)}</property>`)
71
78
  .join('');
72
79
  const seen = new Set();
73
80
  const components = finalResults.data
@@ -113,8 +120,8 @@ function configureCycloneDXLogger(logger, writer, config, hash) {
113
120
  <name>retire.js</name>
114
121
  <version>${retire.version}</version>
115
122
  </tool>
116
- </tools>${repositories ? `
117
- <properties>${repositories}
123
+ </tools>${properties ? `
124
+ <properties>${properties}
118
125
  </properties>` : ''}
119
126
  </metadata>
120
127
  <components>${components}
@@ -47,6 +47,7 @@ exports.default = {
47
47
  errors: [],
48
48
  time: undefined,
49
49
  vulnerabilityRepositories: (0, utils_1.vulnerabilityRepositories)(config.jsRepo),
50
+ ignoreRepositoryCertificateErrors: config.insecure,
50
51
  };
51
52
  logger.info = finalResults.messages.push;
52
53
  logger.debug = config.verbose
@@ -5,6 +5,7 @@ export type LoggerOptions = {
5
5
  colors: boolean;
6
6
  outputformat: string;
7
7
  jsRepo: string[];
8
+ insecure?: boolean;
8
9
  path: string;
9
10
  colorwarn: (s: string) => string;
10
11
  };
package/lib/retire.js CHANGED
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  var exports = exports || {};
7
- exports.version = '5.5.0';
7
+ exports.version = '5.6.0';
8
8
 
9
9
  function isDefined(o) {
10
10
  return typeof o !== 'undefined';
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "author": "Erlend Oftedal <erlend@oftedal.no>",
3
3
  "name": "retire",
4
4
  "description": "Retire is a tool for detecting use of vulnerable libraries",
5
- "version": "5.5.0",
5
+ "version": "5.6.0",
6
6
  "license": "Apache-2.0",
7
7
  "repository": {
8
8
  "type": "git",