1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
|
.TH "NPM\-AUDIT" "1" "May 2020" "" ""
.SH "NAME"
\fBnpm-audit\fR \- Run a security audit
.SS Synopsis
.P
.RS 2
.nf
npm audit [\-\-json|\-\-parseable|\-\-audit\-level=(low|moderate|high|critical)]
npm audit fix [\-\-force|\-\-package\-lock\-only|\-\-dry\-run]
common options: [\-\-production] [\-\-only=(dev|prod)]
.fi
.RE
.SS Examples
.P
Scan your project for vulnerabilities and automatically install any compatible
updates to vulnerable dependencies:
.P
.RS 2
.nf
$ npm audit fix
.fi
.RE
.P
Run \fBaudit fix\fP without modifying \fBnode_modules\fP, but still updating the
pkglock:
.P
.RS 2
.nf
$ npm audit fix \-\-package\-lock\-only
.fi
.RE
.P
Skip updating \fBdevDependencies\fP:
.P
.RS 2
.nf
$ npm audit fix \-\-only=prod
.fi
.RE
.P
Have \fBaudit fix\fP install semver\-major updates to toplevel dependencies, not just
semver\-compatible ones:
.P
.RS 2
.nf
$ npm audit fix \-\-force
.fi
.RE
.P
Do a dry run to get an idea of what \fBaudit fix\fP will do, and \fIalso\fR output
install information in JSON format:
.P
.RS 2
.nf
$ npm audit fix \-\-dry\-run \-\-json
.fi
.RE
.P
Scan your project for vulnerabilities and just show the details, without fixing
anything:
.P
.RS 2
.nf
$ npm audit
.fi
.RE
.P
Get the detailed audit report in JSON format:
.P
.RS 2
.nf
$ npm audit \-\-json
.fi
.RE
.P
Get the detailed audit report in plain text result, separated by tab characters, allowing for
future reuse in scripting or command line post processing, like for example, selecting
some of the columns printed:
.P
.RS 2
.nf
$ npm audit \-\-parseable
.fi
.RE
.P
To parse columns, you can use for example \fBawk\fP, and just print some of them:
.P
.RS 2
.nf
$ npm audit \-\-parseable | awk \-F $'\\t' '{print $1,$4}'
.fi
.RE
.P
Fail an audit only if the results include a vulnerability with a level of moderate or higher:
.P
.RS 2
.nf
$ npm audit \-\-audit\-level=moderate
.fi
.RE
.SS Description
.P
The audit command submits a description of the dependencies configured in
your project to your default registry and asks for a report of known
vulnerabilities\. The report returned includes instructions on how to act on
this information\. The command will exit with a 0 exit code if no
vulnerabilities were found\.
.P
You can also have npm automatically fix the vulnerabilities by running \fBnpm
audit fix\fP\|\. Note that some vulnerabilities cannot be fixed automatically and
will require manual intervention or review\. Also note that since \fBnpm audit fix\fP
runs a full\-fledged \fBnpm install\fP under the hood, all configs that apply to the
installer will also apply to \fBnpm install\fP \-\- so things like \fBnpm audit fix
\-\-package\-lock\-only\fP will work as expected\.
.P
By default, the audit command will exit with a non\-zero code if any vulnerability
is found\. It may be useful in CI environments to include the \fB\-\-audit\-level\fP parameter
to specify the minimum vulnerability level that will cause the command to fail\. This
option does not filter the report output, it simply changes the command's failure
threshold\.
.SS Content Submitted
.RS 0
.IP \(bu 2
npm_version
.IP \(bu 2
node_version
.IP \(bu 2
platform
.IP \(bu 2
node_env
.IP \(bu 2
A scrubbed version of your package\-lock\.json or npm\-shrinkwrap\.json
.RE
.SS Scrubbing
.P
In order to ensure that potentially sensitive information is not included in
the audit data bundle, some dependencies may have their names (and sometimes
versions) replaced with opaque non\-reversible identifiers\. It is done for
the following dependency types:
.RS 0
.IP \(bu 2
Any module referencing a scope that is configured for a non\-default
registry has its name scrubbed\. (That is, a scope you did a \fBnpm login \-\-scope=@ourscope\fP for\.)
.IP \(bu 2
All git dependencies have their names and specifiers scrubbed\.
.IP \(bu 2
All remote tarball dependencies have their names and specifiers scrubbed\.
.IP \(bu 2
All local directory and tarball dependencies have their names and specifiers scrubbed\.
.RE
.P
The non\-reversible identifiers are a sha256 of a session\-specific UUID and the
value being replaced, ensuring a consistent value within the payload that is
different between runs\.
.SS Exit Code
.P
The \fBnpm audit\fP command will exit with a 0 exit code if no vulnerabilities were found\.
.P
If vulnerabilities were found the exit code will depend on the \fBaudit\-level\fP
configuration setting\.
.SS See Also
.RS 0
.IP \(bu 2
npm help install
.IP \(bu 2
npm help package\-locks
.IP \(bu 2
npm help config
.RE
|