Skip to content

Commit

Permalink
Moved severity matrix up a level
Browse files Browse the repository at this point in the history
  • Loading branch information
Frichetten committed Dec 11, 2023
1 parent 986993e commit 980b141
Show file tree
Hide file tree
Showing 2 changed files with 94 additions and 90 deletions.
90 changes: 0 additions & 90 deletions content/en/security/misconfigurations/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,96 +51,6 @@ Investigate details using the [Misconfigurations Explorer][10]. View detailed in

{{< img src="security/cspm/misconfigurations_explorer.png" alt="CSM Misconfigurations Explorer page" width="100%">}}

## Severity score framework

Starting in early 2024, all CSM Misconfigurations and Identity Risk rules will migrate to our severity score framework. This framework is designed to compare the likelihood that an adversary will take advantage of a misconfiguration to the risk posed to your environment. By weighting both of these aspects, findings can be prioritized more accurately by their real-world risks. The matrices below show how to compute a misconfiguration's severity score depending on certain criteria.

### Likelihood

The likelihood component is made up of two subcomponents; The attack vector, the means through which a misconfiguration can be exploited, and the accessibility, if the resource is publicly accessible or not.

| | | Accessibility | |
|---------------|---------------------|---------------|----------|
| | | **Private** | **Public** |
| **Attack Vector** | **Required Privileges** | Low | Medium |
| | **Vulnerability** | Medium | High |
| | **No Authorization** | High | Critical |

The attack vector is determined by the following criteria:

| Attack Vector | Definition |
|:-------------------:|:---------------------------------------------------------------------------------------------------------:|
| Required Privileges | Requires specific privileges or access to abuse. |
| Vulnerability | Requires a vulnerable component to abuse, such as a software vulnerability on a compute instance or a leaked password/access key. |
| No Authorization | Requires no authorization/authentication to abuse. |

The accessibility is determined by the following criteria:

| Accessibility | Definition |
|:-------------:|:------------------------------------------------------------------:|
| Private | The vulnerable component/resource is in a private network. |
| Public | The vulnerable component/resource is accessible from the internet. |

### Impact

The impact component is how damaging the exploitation of the misconfiguration would be to the environment.

| Impact | Definition |
|:--------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Low | This misconfiguration is related to security hardening, hygiene, resource metadata, or industry best practice configurations. By itself, this misconfiguration represents little to no impact to the environment. |
| Medium | Abusing this misconfiguration results in an impact to the confidentiality, integrity, or availability of the vulnerable component or its directly associated resources. |
| High | Abusing this misconfiguration results in an impact to the following: confidentiality, integrity or availability of the vulnerable component and impacts a significant number of other resources (E.G. S3FullAccess, EC2FullAccess, etc.). |
| Critical | Abusing this misconfiguration results in complete control of all resources in the account (E.G. AdministratorAccess) |

### Severity Matrix

These two subcomponent scores combined compute the overall severity score for a misconfiguration.

| | | Impact | | | |
|------------|----------|--------|--------|----------|----------|
| | | **Low** | **Medium** | **High** | **Critical** |
| **Likelihood** | **Low** | Low | Low | Medium | Medium |
| | **Medium** | Low | Medium | High | High |
| | **High** | Medium | High | High | Critical |
| | **Critical** | Medium | High | Critical | Critical |

### Examples

To explain how the framework is used here are a few examples.

#### Example 1: SNS Topic should have access restrictions set for subscription

The detection rule for [SNS Topic should have access restrictions set for subscription][14] checks if the SNS topic has a resource-based policy that contains a `Principal` of `*`, and an `Action` with the `sns:Subscribe` permission. This combination would allow anyone the ability to subscribe to the SNS topic and receive its notifications. We score this rule as follows:

- Likelihood: Critical
- Attack Vector: No Authorization
- The Attack Vector is marked as "No Authorization" because the resource-based policy contains a `*`. This wildcard permits anyone the ability to act on the resource. No authentication/authorization is required to exploit the misconfiguration.
- Accessibility: Public
- The Accessibility is marked as "Public" because the misconfiguration can be exploited over the internet. No specific network access is required.

- Impact: Medium
- Impact is marked as "Medium" due to the fact that the confidentiality of the resource is impacted. An adversary who has exploited this misconfiguration can receive messages as they are sent by the SNS topic.

- Severity Score: Critical x Medium = High
- The final severity score is High. This is because a Critical likelihood mixed with a Medium impact results in an overall score of High.

#### Example 2: EC2 instances should enforce IMDSv2

The detection rule for [EC2 instances should enforce IMDSv2][15] checks if an EC2 instance is using the instance metadata service version 1 ([IMDSv1][16]), which is vulnerable to common web application attacks. If exploited, an adversary would be able to access the IAM credentials stored in the IMDS and use them to access resources in the AWS account. We score this rule as follows:

- Likelihood: Medium
- Attack Vector: Vulnerability
- The Attack Vector is marked as "Vulnerability". This is because the exploitation of this misconfiguration requires the resource to contain a vulnerable component, such as vulnerable software running on the EC2 instance that can be abused to perform [server side request forgery][17].
- Accessibility: Private
- The Accessibility is marked as "Private" because the EC2 instance has not explicitly been made public.

- Impact: Medium
- Impact is marked as "Medium" due to the impacts to the confidentiality of the EC2 instance. An adversary would be able to access the IMDS and potentially pull IAM credentials associated with the resource.

- Severity Score: Medium x Medium = Medium
- The final severity score is Medium. This is because a Medium likelihood mixed with a Medium impact results in an overall score of Medium.


## Get started

{{< whatsnext >}}
Expand Down
94 changes: 94 additions & 0 deletions content/en/security/severity_scoring.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,94 @@
---
title: Severity Scoring
kind: documentation
disable_toc: false
---

## CSM Misconfigurations and Identity Risks

Check warning on line 7 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L7

[Datadog.headings] 'CSM Misconfigurations and Identity Risks' should use sentence-style capitalization.
Raw output
{"message": "[Datadog.headings] 'CSM Misconfigurations and Identity Risks' should use sentence-style capitalization.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 7, "column": 4}}}, "severity": "WARNING"}

Starting in early 2024, all CSM Misconfigurations and Identity Risk rules will migrate to our severity score framework. This framework is designed to compare the likelihood that an adversary will take advantage of a misconfiguration to the risk posed to your environment. By weighting both of these aspects, findings can be prioritized more accurately by their real-world risks. The matrices below show how to compute a misconfiguration's severity score depending on certain criteria.

Check warning on line 9 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L9

[Datadog.tense] Avoid temporal words like 'will'.
Raw output
{"message": "[Datadog.tense] Avoid temporal words like 'will'.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 9, "column": 75}}}, "severity": "WARNING"}

Check warning on line 9 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L9

[Datadog.pronouns] Avoid first-person pronouns such as 'our'.
Raw output
{"message": "[Datadog.pronouns] Avoid first-person pronouns such as 'our'.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 9, "column": 91}}}, "severity": "WARNING"}

Check warning on line 9 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L9

[Datadog.tense] Avoid temporal words like 'will'.
Raw output
{"message": "[Datadog.tense] Avoid temporal words like 'will'.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 9, "column": 192}}}, "severity": "WARNING"}

### Likelihood

The likelihood component is made up of two subcomponents; The attack vector, the means through which a misconfiguration can be exploited, and the accessibility, if the resource is publicly accessible or not.

Check notice on line 13 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L13

[Datadog.sentencelength] Try to keep your sentence length to 25 words or fewer.
Raw output
{"message": "[Datadog.sentencelength] Try to keep your sentence length to 25 words or fewer.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 13, "column": 1}}}, "severity": "INFO"}

| | | Accessibility | |
|---------------|---------------------|---------------|----------|
| | | **Private** | **Public** |
| **Attack Vector** | **Required Privileges** | Low | Medium |
| | **Vulnerability** | Medium | High |
| | **No Authorization** | High | Critical |

The attack vector is determined by the following criteria:

| Attack Vector | Definition |
|:-------------------:|:---------------------------------------------------------------------------------------------------------:|
| Required Privileges | Requires specific privileges or access to abuse. |
| Vulnerability | Requires a vulnerable component to abuse, such as a software vulnerability on a compute instance or a leaked password/access key. |
| No Authorization | Requires no authorization/authentication to abuse. |

The accessibility is determined by the following criteria:

| Accessibility | Definition |
|:-------------:|:------------------------------------------------------------------:|
| Private | The vulnerable component/resource is in a private network. |
| Public | The vulnerable component/resource is accessible from the internet. |

### Impact

The impact component is how damaging the exploitation of the misconfiguration would be to the environment.

| Impact | Definition |
|:--------:|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:|
| Low | This misconfiguration is related to security hardening, hygiene, resource metadata, or industry best practice configurations. By itself, this misconfiguration represents little to no impact to the environment. |
| Medium | Abusing this misconfiguration results in an impact to the confidentiality, integrity, or availability of the vulnerable component or its directly associated resources. |
| High | Abusing this misconfiguration results in an impact to the following: confidentiality, integrity or availability of the vulnerable component and impacts a significant number of other resources (E.G. S3FullAccess, EC2FullAccess, etc.). |

Check warning on line 45 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L45

[Datadog.abbreviations] Use 'for example' instead of abbreviations like 'E.G.'.
Raw output
{"message": "[Datadog.abbreviations] Use 'for example' instead of abbreviations like 'E.G.'.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 45, "column": 207}}}, "severity": "WARNING"}

Check warning on line 45 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L45

[Datadog.abbreviations] Use 'and more' instead of abbreviations like 'etc.'.
Raw output
{"message": "[Datadog.abbreviations] Use 'and more' instead of abbreviations like 'etc.'.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 45, "column": 241}}}, "severity": "WARNING"}
| Critical | Abusing this misconfiguration results in complete control of all resources in the account (E.G. AdministratorAccess) |

Check warning on line 46 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L46

[Datadog.abbreviations] Use 'for example' instead of abbreviations like 'E.G.'.
Raw output
{"message": "[Datadog.abbreviations] Use 'for example' instead of abbreviations like 'E.G.'.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 46, "column": 105}}}, "severity": "WARNING"}

### Severity Matrix

Check warning on line 48 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L48

[Datadog.headings] 'Severity Matrix' should use sentence-style capitalization.
Raw output
{"message": "[Datadog.headings] 'Severity Matrix' should use sentence-style capitalization.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 48, "column": 5}}}, "severity": "WARNING"}

These two subcomponent scores combined compute the overall severity score for a misconfiguration.

| | | Impact | | | |
|------------|----------|--------|--------|----------|----------|
| | | **Low** | **Medium** | **High** | **Critical** |
| **Likelihood** | **Low** | Low | Low | Medium | Medium |
| | **Medium** | Low | Medium | High | High |
| | **High** | Medium | High | High | Critical |
| | **Critical** | Medium | High | Critical | Critical |

### Examples

To explain how the framework is used here are a few examples.

#### Example 1: SNS Topic should have access restrictions set for subscription

The detection rule for [SNS Topic should have access restrictions set for subscription][14] checks if the SNS topic has a resource-based policy that contains a `Principal` of `*`, and an `Action` with the `sns:Subscribe` permission. This combination would allow anyone the ability to subscribe to the SNS topic and receive its notifications. We score this rule as follows:

Check notice on line 66 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L66

[Datadog.sentencelength] Try to keep your sentence length to 25 words or fewer.
Raw output
{"message": "[Datadog.sentencelength] Try to keep your sentence length to 25 words or fewer.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 66, "column": 1}}}, "severity": "INFO"}

Check warning on line 66 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L66

[Datadog.pronouns] Avoid first-person pronouns such as 'We'.
Raw output
{"message": "[Datadog.pronouns] Avoid first-person pronouns such as 'We'.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 66, "column": 343}}}, "severity": "WARNING"}

- Likelihood: Critical
- Attack Vector: No Authorization
- The Attack Vector is marked as "No Authorization" because the resource-based policy contains a `*`. This wildcard permits anyone the ability to act on the resource. No authentication/authorization is required to exploit the misconfiguration.
- Accessibility: Public
- The Accessibility is marked as "Public" because the misconfiguration can be exploited over the internet. No specific network access is required.

- Impact: Medium
- Impact is marked as "Medium" due to the fact that the confidentiality of the resource is impacted. An adversary who has exploited this misconfiguration can receive messages as they are sent by the SNS topic.

- Severity Score: Critical x Medium = High
- The final severity score is High. This is because a Critical likelihood mixed with a Medium impact results in an overall score of High.

#### Example 2: EC2 instances should enforce IMDSv2

Check warning on line 80 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L80

[Datadog.headings] 'Example 2: EC2 instances should enforce IMDSv2' should use sentence-style capitalization.
Raw output
{"message": "[Datadog.headings] 'Example 2: EC2 instances should enforce IMDSv2' should use sentence-style capitalization.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 80, "column": 6}}}, "severity": "WARNING"}

The detection rule for [EC2 instances should enforce IMDSv2][15] checks if an EC2 instance is using the instance metadata service version 1 ([IMDSv1][16]), which is vulnerable to common web application attacks. If exploited, an adversary would be able to access the IAM credentials stored in the IMDS and use them to access resources in the AWS account. We score this rule as follows:

Check notice on line 82 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L82

[Datadog.sentencelength] Try to keep your sentence length to 25 words or fewer.
Raw output
{"message": "[Datadog.sentencelength] Try to keep your sentence length to 25 words or fewer.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 82, "column": 1}}}, "severity": "INFO"}

Check notice on line 82 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L82

[Datadog.sentencelength] Try to keep your sentence length to 25 words or fewer.
Raw output
{"message": "[Datadog.sentencelength] Try to keep your sentence length to 25 words or fewer.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 82, "column": 212}}}, "severity": "INFO"}

Check warning on line 82 in content/en/security/severity_scoring.md

View workflow job for this annotation

GitHub Actions / vale

[vale] content/en/security/severity_scoring.md#L82

[Datadog.pronouns] Avoid first-person pronouns such as 'We'.
Raw output
{"message": "[Datadog.pronouns] Avoid first-person pronouns such as 'We'.", "location": {"path": "content/en/security/severity_scoring.md", "range": {"start": {"line": 82, "column": 355}}}, "severity": "WARNING"}

- Likelihood: Medium
- Attack Vector: Vulnerability
- The Attack Vector is marked as "Vulnerability". This is because the exploitation of this misconfiguration requires the resource to contain a vulnerable component, such as vulnerable software running on the EC2 instance that can be abused to perform [server side request forgery][17].
- Accessibility: Private
- The Accessibility is marked as "Private" because the EC2 instance has not explicitly been made public.

- Impact: Medium
- Impact is marked as "Medium" due to the impacts to the confidentiality of the EC2 instance. An adversary would be able to access the IMDS and potentially pull IAM credentials associated with the resource.

- Severity Score: Medium x Medium = Medium
- The final severity score is Medium. This is because a Medium likelihood mixed with a Medium impact results in an overall score of Medium.

0 comments on commit 980b141

Please sign in to comment.