Skip to content

Commit a30bb43

Browse files
committed
Add option --reach-min-severity to only run reachability analysis on vulnerabilities with at least that severity
1 parent 08474bc commit a30bb43

File tree

4 files changed

+32
-0
lines changed

4 files changed

+32
-0
lines changed

packages/cli/src/commands/scan/cmd-scan-create.mts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,7 @@ async function run(
241241
reachAnalysisMemoryLimit,
242242
reachAnalysisTimeout,
243243
reachDisableAnalytics,
244+
reachMinSeverity,
244245
reachSkipCache,
245246
readOnly,
246247
reportLevel,
@@ -266,6 +267,7 @@ async function run(
266267
reachAnalysisTimeout: number
267268
reachAnalysisMemoryLimit: number
268269
reachDisableAnalytics: boolean
270+
reachMinSeverity: string
269271
reachSkipCache: boolean
270272
}
271273

@@ -282,6 +284,14 @@ async function run(
282284
reachEcosystems.push(ecosystem as PURL_Type)
283285
}
284286

287+
// Validate severity value if provided.
288+
const validSeverities = ['info', 'low', 'moderate', 'high', 'critical']
289+
if (reachMinSeverity && !validSeverities.includes(reachMinSeverity.toLowerCase())) {
290+
throw new Error(
291+
`Invalid severity: "${reachMinSeverity}". Valid values are: ${joinAnd(validSeverities)}`,
292+
)
293+
}
294+
285295
const dryRun = !!cli.flags['dryRun']
286296

287297
let {
@@ -517,6 +527,7 @@ async function run(
517527
reachAnalysisMemoryLimit: Number(reachAnalysisMemoryLimit),
518528
reachEcosystems,
519529
reachExcludePaths,
530+
reachMinSeverity,
520531
reachSkipCache: Boolean(reachSkipCache),
521532
},
522533
readOnly: Boolean(readOnly),

packages/cli/src/commands/scan/cmd-scan-reach.mts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ async function run(
123123
reachAnalysisMemoryLimit,
124124
reachAnalysisTimeout,
125125
reachDisableAnalytics,
126+
reachMinSeverity,
126127
reachSkipCache,
127128
} = cli.flags as unknown as {
128129
cwd: string
@@ -134,6 +135,7 @@ async function run(
134135
reachAnalysisTimeout: number
135136
reachAnalysisMemoryLimit: number
136137
reachDisableAnalytics: boolean
138+
reachMinSeverity: string
137139
reachSkipCache: boolean
138140
}
139141

@@ -155,6 +157,14 @@ async function run(
155157
reachEcosystems.push(ecosystem as PURL_Type)
156158
}
157159

160+
// Validate severity value if provided.
161+
const validSeverities = ['info', 'low', 'moderate', 'high', 'critical']
162+
if (reachMinSeverity && !validSeverities.includes(reachMinSeverity.toLowerCase())) {
163+
throw new Error(
164+
`Invalid severity: "${reachMinSeverity}". Valid values are: ${joinAnd(validSeverities)}`,
165+
)
166+
}
167+
158168
const processCwd = process.cwd()
159169
const cwd =
160170
cwdOverride && cwdOverride !== '.' && cwdOverride !== processCwd
@@ -223,6 +233,7 @@ async function run(
223233
reachDisableAnalytics: Boolean(reachDisableAnalytics),
224234
reachEcosystems,
225235
reachExcludePaths,
236+
reachMinSeverity,
226237
reachSkipCache: Boolean(reachSkipCache),
227238
},
228239
targets,

packages/cli/src/commands/scan/perform-reachability-analysis.mts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ export type ReachabilityOptions = {
2323
reachDisableAnalytics: boolean
2424
reachEcosystems: PURL_Type[]
2525
reachExcludePaths: string[]
26+
reachMinSeverity: string
2627
reachSkipCache: boolean
2728
}
2829

@@ -165,6 +166,9 @@ export async function performReachabilityAnalysis(
165166
...(reachabilityOptions.reachExcludePaths.length
166167
? ['--exclude-dirs', ...reachabilityOptions.reachExcludePaths]
167168
: []),
169+
...(reachabilityOptions.reachMinSeverity
170+
? ['--min-severity', reachabilityOptions.reachMinSeverity]
171+
: []),
168172
...(reachabilityOptions.reachSkipCache ? ['--skip-cache-usage'] : []),
169173
]
170174

packages/cli/src/commands/scan/reachability-flags.mts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,12 @@ export const reachabilityFlags: MeowFlags = {
3131
description:
3232
'List of paths to exclude from reachability analysis, as either a comma separated value or as multiple flags.',
3333
},
34+
reachMinSeverity: {
35+
type: 'string',
36+
default: '',
37+
description:
38+
'Set the minimum severity of vulnerabilities to analyze. Supported severities are info, low, moderate, high and critical.',
39+
},
3440
reachSkipCache: {
3541
type: 'boolean',
3642
default: false,

0 commit comments

Comments
 (0)