+ {{ embededRow.scanSummary.critical }}
{{ embededRow.scanSummary.high }}
{{ embededRow.scanSummary.medium }}
diff --git a/pkg/neuvector-ui-ext/l10n/en-us.yaml b/pkg/neuvector-ui-ext/l10n/en-us.yaml
index afa4a20f..ccf55622 100644
--- a/pkg/neuvector-ui-ext/l10n/en-us.yaml
+++ b/pkg/neuvector-ui-ext/l10n/en-us.yaml
@@ -1407,6 +1407,7 @@ scan:
IMAGE: Image
STATUS: Scan Status
RESULT: Result
+ CRITICAL: Critical
HIGH: High
MEDIUM: Medium
SEVERITY: Severity
@@ -1866,6 +1867,8 @@ audit:
VERSION: Version
HIGH_VUL_CNT: High
MEDIUM_VUL_CNT: Medium
+ CRITICAL_VUL_CNT: Critical
+ CRITICAL_VUL: Critical Vulnerabilities
HIGH_VUL: High Vulnerabilities
MEDIUM_VUL: Medium Vulnerabilities
CVE_DB_VERSION: CVE DB Version
@@ -2910,9 +2913,13 @@ admissionControl:
BASE_IMAGE: Base Image
CVE_NAMES: CVE names
CVE_SEVERITY: CVE severity
- CVE_HIGH_COUNT: Count of high severity CVE
- CVE_HIGH_WITH_FIX_COUNT: Count of high severity CVE with fix
+ CVE_HIGH_COUNT: Count of critical and high severity CVE
+ CVE_HIGH_WITH_FIX_COUNT: Count of critical and high severity CVE with fix
CVE_MEDIUM_COUNT: Count of medium severity CVE
+ CVE_CRITICAL_COUNT: Count of critical severity CVE
+ CVE_CRITICAL_WITH_FIX_COUNT: Count of critical severity CVE with fix
+ CVE_HIGH_COUNT_NO_CRITICAL: Count of high severity CVE
+ CVE_HIGH_WITH_FIX_COUNT_NO_CRITICAL: Count of high severity CVE with fix
CVE_SCORE: CVE score
IMAGE_SCANNED: Image scanned
IMAGE_SIGNED: Image signed
@@ -2985,6 +2992,7 @@ admissionControl:
HIGH: high
MEDIUM: medium
LOW: low
+ CRITICAL: critical
NONE: none
DAYS: days
CORE: Core(s)
diff --git a/pkg/neuvector-ui-ext/plugins/vulnerabilities-csv-class.js b/pkg/neuvector-ui-ext/plugins/vulnerabilities-csv-class.js
index ea168861..cecebb92 100644
--- a/pkg/neuvector-ui-ext/plugins/vulnerabilities-csv-class.js
+++ b/pkg/neuvector-ui-ext/plugins/vulnerabilities-csv-class.js
@@ -303,6 +303,7 @@ const prepareContainersData = (workloads) => {
'Policy Mode': workload.policy_mode,
'Image': workload.image,
'Applications': workload.applications,
+ 'Critical': workload.critical,
'High': workload.high,
'Medium': workload.medium,
'Low': workload.low,
@@ -323,6 +324,7 @@ const prepareNodesData = (nodes) => {
'Kernel': node.kernel,
'Memory': formatBytes(node.memory),
'Policy Mode': node.policy_mode,
+ 'Critical': node.critical,
'High': node.high,
'Medium': node.medium,
'Low': node.low,
@@ -338,6 +340,7 @@ const preparePlatformsData = (platforms) => {
'Name': platform.name,
'Version': platform.version,
'Base OS': platform.base_os,
+ 'Critical': platform.critical,
'High': platform.high,
'Medium': platform.medium,
'Low': platform.low,
@@ -352,6 +355,7 @@ const prepareImagesData = (images) => {
return {
'Name': image.platform,
'ID': image.id,
+ 'Critical': image.critical,
'High': image.high,
'Medium': image.medium,
'Low': image.low,
diff --git a/pkg/neuvector-ui-ext/styles/neuvector.scss b/pkg/neuvector-ui-ext/styles/neuvector.scss
index aed7da2f..4ed0f253 100644
--- a/pkg/neuvector-ui-ext/styles/neuvector.scss
+++ b/pkg/neuvector-ui-ext/styles/neuvector.scss
@@ -168,6 +168,10 @@
}
+.badge-critical {
+ background-color: #E91E63;
+ color: #fff;
+}
.badge-danger {
background-color: $mdc-red-400;
color: #fff;
diff --git a/pkg/neuvector-ui-ext/types/neuvector.ts b/pkg/neuvector-ui-ext/types/neuvector.ts
index fd420ee0..43bd9f79 100644
--- a/pkg/neuvector-ui-ext/types/neuvector.ts
+++ b/pkg/neuvector-ui-ext/types/neuvector.ts
@@ -515,8 +515,8 @@ export const NV_MAP = {
error: 'pink',
Error: 'pink',
ERROR: 'pink',
- Critical: 'danger',
- critical: 'danger',
+ Critical: 'pink',
+ critical: 'pink',
Alert: 'pink',
Emergency: 'danger',
Low: 'success',
@@ -624,7 +624,7 @@ export const NV_MAP = {
responseRuleCriteriaSampleMap: {
'security-event': 'level:Critical, name:Container.Suspicious.Process',
'cve-report':
- 'name:Container.Scan.Report, cve-name:cve-2018-12345, cve-high:1, cve-medium:1, cve-high-with-fix:23 (fixed high vulnerability > 23), cve-high-with-fix:23/30 (fixed high vulnerability > 23 and reported 30 days ago)',
+ 'name:Container.Scan.Report, cve-name:cve-2018-12345, cve-critical:1, cve-high:1 (Legacy severity level including critical and high), cve-high-only:1, cve-medium:1, cve-high-with-fix:23 (fixed high vulnerability >= 23), cve-high-with-fix:23/30 (fixed high vulnerability >= 23 and reported 30 days ago)',
event: 'name:Container.Stop, level:Emergency',
compliance: 'level:Warning, name:D.5.4, name:Compliance.Image.Violation',
'admission-control':
diff --git a/pkg/neuvector-ui-ext/types/vulnerabilities.ts b/pkg/neuvector-ui-ext/types/vulnerabilities.ts
index 2214b1f6..a899101e 100644
--- a/pkg/neuvector-ui-ext/types/vulnerabilities.ts
+++ b/pkg/neuvector-ui-ext/types/vulnerabilities.ts
@@ -14,12 +14,14 @@ export interface VulnerabilitiesQuerySummary {
export interface VulnerabilitiesQuerySummaryTopAsset {
index: number;
display_name: string;
+ critical: number;
high: number;
medium: number;
low: number;
}
export interface VulnerabilitiesQuerySummaryDistribution {
+ critical: number;
high: number;
medium: number;
low: number;
diff --git a/pkg/neuvector-ui-ext/utils/response-rules.ts b/pkg/neuvector-ui-ext/utils/response-rules.ts
index 23ba90e8..f64eeb66 100644
--- a/pkg/neuvector-ui-ext/utils/response-rules.ts
+++ b/pkg/neuvector-ui-ext/utils/response-rules.ts
@@ -29,7 +29,7 @@ export function getPattern(event: string, store: Store
) {
let conditionOptions = store.getters['neuvector/responseRuleConditionOptions'];
conditionOptions[event].types.forEach((type: string) => {
if (type !== 'level' && type !== 'name') {
- if (type === 'cve-high' || type === 'item') {
+ if (type === 'cve-critical' || type === 'cve-high' || type === 'item') {
pattern.push(`^${type}:[0-9]+[\.][0-9]+$|^${type}:[0-9]+$`);
} else {
pattern.push(`^${type}:.+$`);