Skip to content

[RFC] Stage 1- Introducing new fields in ECS Vulnerability fields #2449

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
104 changes: 104 additions & 0 deletions rfcs/text/0045/vulnerbility.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
- name: vulnerability
title: Vulnerability
group: 2
short: These fields contain information about vulnerabilities.
description: >
These fields contain information about vulnerabilities identified in assets.
They help in tracking, mitigating, and documenting vulnerabilities.


fields:
- name: vendor.id
level: extended
type: keyword
description: >
A vulnerability doesn't necessarily have a CVE associated with it. It makes sense to separate vulnerability ID (like CVEs) to the vendor/detection IDs.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
A vulnerability doesn't necessarily have a CVE associated with it. It makes sense to separate vulnerability ID (like CVEs) to the vendor/detection IDs.
A vulnerability doesn't necessarily have a CVE associated with it. It makes sense to separate vulnerability ID (like CVEs) from the vendor/detection IDs.


- name: title
level: extended
type: keyword
description: >
Title/Name/Short Description for vulnerability, to be used in flyout and dashboards.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Title/Name/Short Description for vulnerability, to be used in flyout and dashboards.
Title, name, and short description for the vulnerability, to be used in flyout and dashboards.

I think an example: would be helpful here too.


- name: mitigation
level: extended
type: text
description: >
Explains how to fix or mitigate the problem, could be used to store resolution from the scanner vendor or document mitigation in place.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Explains how to fix or mitigate the problem, could be used to store resolution from the scanner vendor or document mitigation in place.
Explains how to fix or mitigate the problem. Could be used to store the resolution from the scanner vendor or document the mitigation in place.


- name: published
level: extended
type: date
description: >
The “published” field indicates the date when information about a specific vulnerability was publicly disclosed or made available. It represents the moment when details about the vulnerability were shared with the security community, vendors, and the public. This field helps security professionals track the timeline of vulnerability awareness, in ISO 8601 format - YYYY-MM-DD.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think "in ISO 8601 format - YYYY-MM-DD" is needed given that we have said it is a type: date field.


- name: patch
type: group
description: >
Information about patches available for the vulnerability.
fields:
- name: exists
level: extended
type: boolean
description: >
Indicates whether a security fix or update (commonly known as a patch) is available to address the identified vulnerability.

- name: name
level: extended
type: text
description: >
Name of the patch.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you give an example of a named patch? I'm not sure follow what would go into this field.


- name: code
level: extended
type: keyword
description: >
Associated patch code, for example, ESA-2020-13.

- name: evidence
level: extended
type: text
description: >
A demonstration of the validity of a vulnerability claim, e.g., app.any.run replaying the exploitation of the vulnerability.

- name: status
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the example values list are the only values to be allowed, then this should have an expected_values: [] that lists the possible values.

level: extended
type: keyword
description: >
The status field helps security teams track vulnerabilities, prioritize actions, and communicate their progress effectively. Examples: open/ignored/patched/mitigated/false_positive/risk_accepted/reopened.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The status field helps security teams track vulnerabilities, prioritize actions, and communicate their progress effectively. Examples: open/ignored/patched/mitigated/false_positive/risk_accepted/reopened.
The status field helps security teams track vulnerabilities, prioritize actions, and communicate their progress effectively. Examples: open, ignored, patched, mitigated, false_positive, risk_accepted, reopened.


- name: tags
level: extended
type: keyword
description: >
This is different from cloud provider assigned resource tags, this is specifically for vulnerability. Vulnerability tags serve as a way to add custom metadata to vulnerabilities, enhancing their context and aiding in search and automation.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
This is different from cloud provider assigned resource tags, this is specifically for vulnerability. Vulnerability tags serve as a way to add custom metadata to vulnerabilities, enhancing their context and aiding in search and automation.
This is different from cloud provider-assigned resource tags; this is specifically for vulnerabilities. Vulnerability tags serve as a way to add custom metadata to vulnerabilities, enhancing their context and aiding in search and automation.


- name: first_found
level: extended
type: date
description: >
First time a vulnerability was found on the asset, in ISO 8601 format: 2016-05-23T08:05:34.853Z.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
First time a vulnerability was found on the asset, in ISO 8601 format: 2016-05-23T08:05:34.853Z.
The first time a vulnerability was found on the asset.

Given the type: date I don't think we need to specify the format.


- name: last_found
level: extended
type: date
description: >
Last time a vulnerability was found on the asset, in ISO 8601 format: 2016-05-23T08:05:34.853Z.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Last time a vulnerability was found on the asset, in ISO 8601 format: 2016-05-23T08:05:34.853Z.
The last time a vulnerability was found on the asset.


- name: last_scanned
level: extended
type: date
description: >
Last time a scan was performed on the asset. It's important as some companies are scanning on a quarterly basis. If last_found and last_scanned are close, it means it's still an active vulnerability, in ISO 8601 format: 2016-05-23T08:05:34.853Z.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Last time a scan was performed on the asset. It's important as some companies are scanning on a quarterly basis. If last_found and last_scanned are close, it means it's still an active vulnerability, in ISO 8601 format: 2016-05-23T08:05:34.853Z.
The last time a scan was performed on the asset. If last_found and last_scanned are close, it suggests that the vulnerability is likely still active.

I'm not sure about added value of "It's important as some companies are scanning on a quarterly basis." section. Perhaps the additional context could be phrased in terms of it be in important indicator of staleness.


- name: age
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Given that this is derived data, I think we should omit this field. Users of the data can calculate it on their own via the various means you mentioned if they need it.

level: extended
type: long
description: >
Number of days since the vulnerability is active. It should be dynamically calculated (runtime fields, ingest, ...). It could either be the difference between the last_found date and the published date (preferred). It could also be the difference between the first_found and last_found dates.

- name: uid
level: extended
type: keyword
description: >
It's extremely important to be able to deduplicate different scans. It's often that we have different scanners showing the same vulnerability on the same asset.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
It's extremely important to be able to deduplicate different scans. It's often that we have different scanners showing the same vulnerability on the same asset.
It's extremely important to be able to deduplicate different scans. It's common to have different scanners showing the same vulnerability on the same asset.