Cybersixgill_DVE_Enrichment

By enriching CVEs with the DVE Score, Cortex XSOAR customers gain deeper visibility with relevant threat intel from the deep and dark web with dynamic attributes such as where they are trending, POC exploit details, and more. Loaded with extra-context, this allows users to accurately understand the real impact of CVEs to effectively prioritize critical vulnerabilities.

Data Enrichment & Threat Intelligence · Cybersixgill-DVE

Details

IDCybersixgill_DVE_Enrichment
ProviderBitSight
CategoryData Enrichment & Threat Intelligence
From Version5.5.0
Docker Imagedemisto/sixgill:1.0.0.10120494
Supported ModulesAgentix XSIAM

README

Powered by the broadest automated collection from the deep and dark web, Cybersixgill’s Dynamic Vulnerability Exploit (DVE) Score is a feed of common known vulnerabilities, scored by their probability of getting exploited. The DVE Score feed enables Cortex XSOAR users to track threats from vulnerabilities that others define as irrelevant, but have a higher probability of being exploited. It is the only solution that predicts the immediate risks of a vulnerability based on threat actors’ intent.

DVE Score is also the most comprehensive CVE enrichment solution on the market: Cortex XSOAR users gain unparalleled context and can accelerate threat response and decision making, effectively giving security teams a head start on vulnerability management.

· Anticipate the exploitation of a vulnerability up to 90 days in advance
· Track threats from CVEs that most others define as irrelevant or obsolete, but a higher probability of being exploited by active cyber threat actors.
· Gain visibility as well as the ability to prioritize and articulate the remediation process across the organization - straight from Cortex XSOAR

To obtain access to Cybersixgill DVE Score feed via Cortex XSOAR, please contact Cybersixgill at getstarted@cybersixgill.com.

Configure Sixgill_Darkfeed_Enrichment in Cortex

Parameter Description Required
Sixgill API client ID Sixgill API client ID True
Sixgill API client secret Sixgill API client secret True
insecure Trust any certificate (not secure) False
proxy Use system proxy settings False

Commands

You can execute these commands from the CLI, as part of an automation, or in a playbook.
After you successfully execute a command, a DBot message appears in the War Room with the command details.

cybersixgill-cve-enrich


Returns information for each CVE in the input list.

Base Command

cybersixgill-cve-enrich

Input

Argument Name Description Required
cve_id comma separated list of cves id. Required

Context Output

Path Type Description
Sixgill.CVE.value String CVE ID.
Sixgill.CVE.Description String Description of the given DVE ID.
Sixgill.CVE.Created Date The creation date of the CVE.
Sixgill.CVE.Modified Date The modified date of the CVE.
Sixgill.CVE.Cybersixgill_DVE_score_current String The current Sixgill DVE Score.
Sixgill.CVE.Cybersixgill_DVE_score_highest_ever_date Date The date on which Sixgill’s highest DVE score ever reported.
Sixgill.CVE.Cybersixgill_DVE_score_highest_ever String Sixgill’s highest DVE score ever reported.
Sixgill.CVE.Cybersixgill_Previously_exploited_probability String Sixgill’s score of previously exploited probability.
Sixgill.CVE.Previous_Level String Previous level of the CVE ID.
Sixgill.CVE.CVSS_3_1_score String CVSS 3.1 score.
Sixgill.CVE.CVSS_3_1_severity String CVSS 3.1 severity.
Sixgill.CVE.NVD_Link String NVD link.
Sixgill.CVE.NVD_last_modified_date Date NVD last modified date.
Sixgill.CVE.NVD_publication_date Date NVD publication date.
Sixgill.CVE.CVSS_2_0_score String CVSS 2.0 score.
Sixgill.CVE.CVSS_2_0_severity String CVSS 2.0 severity.
Sixgill.CVE.NVD_Vector_V2_0 String NVD vector v2.0.
Sixgill.CVE.NVD_Vector_V3_1 String NVD vector v3.1.
Sixgill.CVE.rawJSON String The raw JSON of the CVE entich information.

cybersixgill-cve-remediation


Returns remediation for each CVE in the input list.

Base Command

cybersixgill-cve-remediation

Input

Argument Name Description Required
cve_id comma separated list of cves id. Required

Context Output

Path Type Description
Sixgill.CVE.value String CVE ID.
Sixgill.CVE.Description String Description of the given DVE remediation.
Sixgill.CVE.Solutions String Possible remediation solutions for the CVE ID.
Sixgill.CVE.rawJSON String The raw JSON of the CVE entich information.

Configuration parameters

  • client_id — Sixgill API client ID (required)
  • client_secret — Sixgill API client secret (required)
  • insecure — Trust any certificate (not secure)
  • proxy — Use system proxy settings

Commands (2)

  • cybersixgill-cve-enrich

    Returns information for each CVE in the input list.

  • cybersixgill-cve-remediation

    Returns remediation for each CVE in the input list.

import json
import random

import demistomock as demisto
import pytest
import requests

cve_enrich = {
    "created": "2020-06-26T00:00:00.001000Z",
    "description": "A vulnerability exists that could allow the execution of unauthorized code or operating "
    "system commands on systems running exacqVision Web Service versions 20.06.3.0 and prior "
    "and exacqVision Enterprise Manager versions 20.06.4.0 and prior. An attacker with "
    "administrative privileges could potentially download and run a malicious executable "
    "that could allow OS command injection on the system.",
    "external_references": [{"external_id": "CVE-2020-9047", "source_name": "cve"}],
    "id": "vulnerability--143fb02c-accf-947e-4619-e0befa4e7068",
    "last_activity_date": "2021-03-28T02:05:19Z",
    "name": "CVE-2020-9047",
    "type": "vulnerability",
    "x_sixgill_info": {
        "attributes": [
            {
                "description": "This CVE was mentioned at least once by the actor Metasploit",
                "name": "Metasploit_attribute",
                "value": False,
            },
            {
                "description": "This CVE is currently recently trending in the cyber Underground",
                "name": "Is_Trend_Underground_attribute",
                "value": False,
            },
            {
                "description": "This CVE scanned at least once by hacktivism collective “Anonymous”",
                "name": "Is_Scanned_by_Anonymous_attribute",
                "value": False,
            },
            {
                "description": "This CVE is currently trending in the Chinese Underground",
                "name": "Is_Trend_Chinese_attribute",
                "value": False,
            },
            {
                "description": "This CVE has at least one published Proof of Concept (POC) exploit.",
                "name": "Has_POC_exploit_attribute",
                "value": False,
            },
            {
                "description": "The CVE is part of an at least one exploit kit",
                "name": "Has_Exploit_kit_attribute",
                "value": False,
            },
            {
                "description": "This CVE is currently trending in the Russian Underground",
                "name": "Is_Trend_Russian_attribute",
                "value": False,
            },
            {
                "description": "This CVE is currently trending in the Arab Underground",
                "name": "Is_Trend_Arabic_attribute",
                "value": False,
            },
            {
                "description": "This CVE is currently trending in the Farsi Underground",
                "name": "Is_Trend_Farsi_attribute",
                "value": False,
            },
            {
                "description": "This CVE is currently trending on GitHub",
                "name": "Is_Trend_GitHub_General_attribute",
                "value": False,
            },
            {
                "description": "This CVE is currently trending on Twitter",
                "name": "Is_Trend_Twitter_attribute",
                "value": False,
            },
        ],
        "github": {
            "activity": {"first_date": "2020-06-26T12:46:26Z", "last_date": "2021-03-28T02:05:19Z"},
            "github_forks": 5,
            "github_projects": 2,
            "github_watchers": 38,
            "projects": [
                {"link": "https://github.com/xqx12/daily-info", "name": "xqx12/daily-info"},
                {"link": "https://github.com/norrismw/CVE-2020-9047", "name": "norrismw/CVE-2020-9047"},
            ],
        },
        "mentions": {
            "first_mention": "2019-12-08T13:03:54Z",
            "last_mention": "2021-01-02T22:19:18Z",
            "mentions_total": 17,
        },
        "nvd": {
            "configurations": {
                "nodes": [
                    {
                        "cpe_match": [
                            {
                                "cpe23Uri": "cpe:2.3:a:exacq:exacq:*:*:*:*:*:*:*:*",
                                "versionEndIncluding": "20.06.3.0",
                                "vulnerable": True,
                            },
                            {
                                "cpe23Uri": "cpe:2.3:a:exacq:exacqvision_enterprise_manager:*:*:*:*:*:*:*:*",
                                "versionEndIncluding": "20.06.4.0",
                                "vulnerable": True,
                            },
                        ],
                        "operator": "OR",
                    }
                ],
                "version": "4.0",
            },
            "link": "https://nvd.nist.gov/vuln/detail/CVE-2020-9047",
            "modified": "2020-08-17T17:43:00Z",
            "published": "2020-06-26T19:15:00Z",
            "v2": {
                "accessVector": "NETWORK",
                "attackComplexity": None,
                "attackVector": None,
                "authentication": "SINGLE",
                "availabilityImpact": "COMPLETE",
                "confidentialityImpact": "COMPLETE",
                "current": 9.0,
                "exploitabilityScore": 8.0,
                "impactScore": 10.0,
                "integrityImpact": "COMPLETE",
                "obtainAllPrivilege": False,
                "obtainOtherPrivilege": False,
                "obtainUserPrivilege": False,
                "privilegesRequired": None,
                "severity": "HIGH",
                "userInteraction": None,
                "userInteractionRequired": False,
                "vector": "AV:N/AC:L/Au:S/C:C/I:C/A:C",
            },
            "v3": {
                "accessVector": None,
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "authentication": None,
                "availabilityImpact": "HIGH",
                "confidentialityImpact": "HIGH",
                "current": 7.2,
                "exploitabilityScore": 1.2,
                "impactScore": 5.9,
                "integrityImpact": "HIGH",
                "privilegesRequired": "HIGH",
                "severity": "HIGH",
                "userInteraction": "NONE",
                "vector": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H",
            },
        },
        "score": {
            "current": 4.83,
            "highest": {"date": "2020-07-14T00:00:00Z", "value": 8.21},
            "history": [
                {"current": 4.83, "date": "2021-04-01T00:00:00Z", "previouslyExploited": 0.0},
                {"current": 4.83, "date": "2021-03-01T00:00:00Z", "previouslyExploited": 0.0},
                {"current": None, "date": "2021-02-01T00:00:00Z", "previouslyExploited": 0.0},
                {"current": None, "date": "2021-01-01T00:00:00Z", "previouslyExploited": 0.0},
                {"current": None, "date": "2020-12-01T00:00:00Z", "previouslyExploited": 0.0},
                {"current": None, "date": "2020-11-01T00:00:00Z", "previouslyExploited": 0.0},
                {"current": 4.59, "date": "2020-10-01T00:00:00Z", "previouslyExploited": 0.0},
                {"current": 6.72, "date": "2020-09-01T00:00:00Z", "previouslyExploited": 0.0},
                {"current": 6.74, "date": "2020-08-01T00:00:00Z", "previouslyExploited": 0.0},
                {"current": 7.1, "date": "2020-07-01T00:00:00Z", "previouslyExploited": 0.55},
                {"current": 5.74, "date": "2020-06-01T00:00:00Z", "previouslyExploited": 1.3},
            ],
            "previouslyExploited": 0.0,
        },
    },
}
expected_enrich_output = [
    {
        "value": "CVE-2020-9047",
        "Description": "A vulnerability exists that could allow the execution of unauthorized code or operating "
        "system commands on systems running exacqVision Web Service versions 20.06.3.0 and prior "
        "and exacqVision Enterprise Manager versions 20.06.4.0 and prior. "
        "An attacker with administrative privileges could potentially download and "
        "run a malicious executable that could allow OS command injection on the system.",
        "Created": "2020-06-26T00:00:00.001000Z",
        "Modified": "",
        "Cybersixgill_DVE_score_current": 4.83,
        "Cybersixgill_DVE_score_highest_ever_date": "2020-07-14T00:00:00Z",
        "Cybersixgill_DVE_score_highest_ever": 8.21,
        "Cybersixgill_Previously_exploited_probability": 0.0,
        "Previous_Level": "",
        "CVSS_3_1_score": 1.2,
        "CVSS_3_1_severity": "HIGH",
        "NVD_Link": "https://nvd.nist.gov/vuln/detail/CVE-2020-9047",
        "NVD_last_modified_date": "2020-08-17T17:43:00Z",
        "NVD_publication_date": "2020-06-26T19:15:00Z",
        "CVSS_2_0_score": 8.0,
        "CVSS_2_0_severity": "HIGH",
        "NVD_Vector_V2_0": "AV:N/AC:L/Au:S/C:C/I:C/A:C",
        "NVD_Vector_V3_1": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H",
        "rawJSON": {
            "created": "2020-06-26T00:00:00.001000Z",
            "description": "A vulnerability exists that could allow the execution of unauthorized "
            "code or operating system commands on systems running exacqVision Web "
            "Service versions 20.06.3.0 and prior and exacqVision Enterprise Manager "
            "versions 20.06.4.0 and prior. An attacker with administrative "
            "privileges could potentially download and run a malicious executable "
            "that could allow OS command injection on the system.",
            "external_references": [{"external_id": "CVE-2020-9047", "source_name": "cve"}],
            "id": "vulnerability--143fb02c-accf-947e-4619-e0befa4e7068",
            "last_activity_date": "2021-03-28T02:05:19Z",
            "name": "CVE-2020-9047",
            "type": "vulnerability",
            "x_sixgill_info": {
                "attributes": [
                    {
                        "description": "This CVE was mentioned at least once by the actor Metasploit",
                        "name": "Metasploit_attribute",
                        "value": False,
                    },
                    {
                        "description": "This CVE is currently recently trending in the cyber Underground",
                        "name": "Is_Trend_Underground_attribute",
                        "value": False,
                    },
                    {
                        "description": "This CVE scanned at least once by hacktivism collective “Anonymous”",
                        "name": "Is_Scanned_by_Anonymous_attribute",
                        "value": False,
                    },
                    {
                        "description": "This CVE is currently trending in the Chinese Underground",
                        "name": "Is_Trend_Chinese_attribute",
                        "value": False,
                    },
                    {
                        "description": "This CVE has at least one published Proof of Concept (POC) exploit.",
                        "name": "Has_POC_exploit_attribute",
                        "value": False,
                    },
                    {
                        "description": "The CVE is part of an at least one exploit kit",
                        "name": "Has_Exploit_kit_attribute",
                        "value": False,
                    },
                    {
                        "description": "This CVE is currently trending in the Russian Underground",
                        "name": "Is_Trend_Russian_attribute",
                        "value": False,
                    },
                    {
                        "description": "This CVE is currently trending in the Arab Underground",
                        "name": "Is_Trend_Arabic_attribute",
                        "value": False,
                    },
                    {
                        "description": "This CVE is currently trending in the Farsi Underground",
                        "name": "Is_Trend_Farsi_attribute",
                        "value": False,
                    },
                    {
                        "description": "This CVE is currently trending on GitHub",
                        "name": "Is_Trend_GitHub_General_attribute",
                        "value": False,
                    },
                    {
                        "description": "This CVE is currently trending on Twitter",
                        "name": "Is_Trend_Twitter_attribute",
                        "value": False,
                    },
                ],
                "github": {
                    "activity": {"first_date": "2020-06-26T12:46:26Z", "last_date": "2021-03-28T02:05:19Z"},
                    "github_forks": 5,
                    "github_projects": 2,
                    "github_watchers": 38,
                    "projects": [
                        {"link": "https://github.com/xqx12/daily-info", "name": "xqx12/daily-info"},
                        {"link": "https://github.com/norrismw/CVE-2020-9047", "name": "norrismw/CVE-2020-9047"},
                    ],
                },
                "mentions": {
                    "first_mention": "2019-12-08T13:03:54Z",
                    "last_mention": "2021-01-02T22:19:18Z",
                    "mentions_total": 17,
                },
                "nvd": {
                    "configurations": {
                        "nodes": [
                            {
                                "cpe_match": [
                                    {
                                        "cpe23Uri": "cpe:2.3:a:exacq:exacq:*:*:*:*:*:*:*:*",
                                        "versionEndIncluding": "20.06.3.0",
                                        "vulnerable": True,
                                    },
                                    {
                                        "cpe23Uri": "cpe:2.3:a:exacq:exacqvision_enterprise_manager:*:*:*:*:*:*:*:*",
                                        "versionEndIncluding": "20.06.4.0",
                                        "vulnerable": True,
                                    },
                                ],
                                "operator": "OR",
                            }
                        ],
                        "version": "4.0",
                    },
                    "link": "https://nvd.nist.gov/vuln/detail/CVE-2020-9047",
                    "modified": "2020-08-17T17:43:00Z",
                    "published": "2020-06-26T19:15:00Z",
                    "v2": {
                        "accessVector": "NETWORK",
                        "attackComplexity": None,
                        "attackVector": None,
                        "authentication": "SINGLE",
                        "availabilityImpact": "COMPLETE",
                        "confidentialityImpact": "COMPLETE",
                        "current": 9.0,
                        "exploitabilityScore": 8.0,
                        "impactScore": 10.0,
                        "integrityImpact": "COMPLETE",
                        "obtainAllPrivilege": False,
                        "obtainOtherPrivilege": False,
                        "obtainUserPrivilege": False,
                        "privilegesRequired": None,
                        "severity": "HIGH",
                        "userInteraction": None,
                        "userInteractionRequired": False,
                        "vector": "AV:N/AC:L/Au:S/C:C/I:C/A:C",
                    },
                    "v3": {
                        "accessVector": None,
                        "attackComplexity": "LOW",
                        "attackVector": "NETWORK",
                        "authentication": None,
                        "availabilityImpact": "HIGH",
                        "confidentialityImpact": "HIGH",
                        "current": 7.2,
                        "exploitabilityScore": 1.2,
                        "impactScore": 5.9,
                        "integrityImpact": "HIGH",
                        "privilegesRequired": "HIGH",
                        "severity": "HIGH",
                        "userInteraction": "NONE",
                        "vector": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:H",
                    },
                },
                "score": {
                    "current": 4.83,
                    "highest": {"date": "2020-07-14T00:00:00Z", "value": 8.21},
                    "history": [
                        {"current": 4.83, "date": "2021-04-01T00:00:00Z", "previouslyExploited": 0.0},
                        {"current": 4.83, "date": "2021-03-01T00:00:00Z", "previouslyExploited": 0.0},
                        {"current": None, "date": "2021-02-01T00:00:00Z", "previouslyExploited": 0.0},
                        {"current": None, "date": "2021-01-01T00:00:00Z", "previouslyExploited": 0.0},
                        {"current": None, "date": "2020-12-01T00:00:00Z", "previouslyExploited": 0.0},
                        {"current": None, "date": "2020-11-01T00:00:00Z", "previouslyExploited": 0.0},
                        {"current": 4.59, "date": "2020-10-01T00:00:00Z", "previouslyExploited": 0.0},
                        {"current": 6.72, "date": "2020-09-01T00:00:00Z", "previouslyExploited": 0.0},
                        {"current": 6.74, "date": "2020-08-01T00:00:00Z", "previouslyExploited": 0.0},
                        {"current": 7.1, "date": "2020-07-01T00:00:00Z", "previouslyExploited": 0.55},
                        {"current": 5.74, "date": "2020-06-01T00:00:00Z", "previouslyExploited": 1.3},
                    ],
                    "previouslyExploited": 0.0,
                },
            },
        },
    }
]

cve_enrich_remediation = [{"advisory": "N/A", "description": "N/A", "solutions": "N/A"}]

expected_enrich_remediation_output = [{"Value": "CVE-2020-9047", "Advisory": "N/A", "Description": "N/A", "Solutions": "N/A"}]

mock_response, mock_response_remediation = "", ""
mocked_get_token_response = """{"access_token": "fababfafbh"}"""
args = {"cve_id": "CVE-2020-9047"}


def is_xsiam():
    # Mock method to check if the platform is XSIAM
    return random.choice([True, False])


channel_code = "7457a04d972fceb8e0cc2192ba4abc66" if is_xsiam() else "7698e8287dfde53dcd13082be750a85a"


class MockedResponse:
    def __init__(self, status_code, text, reason=None, url=None, method=None):
        self.status_code = status_code
        self.text = text
        self.reason = reason
        self.url = url
        self.request = requests.Request("GET")
        self.ok = self.status_code == 200
        self.headers = ""

    def json(self):
        return json.loads(self.text)


def init_params():
    return {"client_id": "WRONG_CLIENT_ID_TEST", "client_secret": "CLIENT_SECRET_TEST"}


def mocked_request(*args, **kwargs):
    global mock_response
    global mock_response_remediation
    request = kwargs.get("request", {})
    end_point = request.path_url
    method = request.method
    mock_response = json.dumps(cve_enrich)
    mock_response_remediation = json.dumps(cve_enrich_remediation)
    response_dict = {
        "POST": {"/auth/token": MockedResponse(200, mocked_get_token_response)},
        "GET": {
            "/dve_enrich/CVE-2020-9047": MockedResponse(200, mock_response),
            "/dve_enrich/CVE-2020-9047/remediation": MockedResponse(200, mock_response_remediation),
        },
    }
    response_dict = response_dict.get(method)
    response = response_dict.get(end_point)

    return response


def test_test_module_command_raise_exception(mocker):
    mocker.patch.object(demisto, "params", return_value=init_params())
    mocker.patch("requests.sessions.Session.send", return_value=MockedResponse(400, "error"))

    from CybersixgillDVEEnrichment import test_module

    with pytest.raises(Exception):
        test_module()


def test_test_module_command(mocker):
    mocker.patch.object(demisto, "params", return_value=init_params())
    mocker.patch("requests.sessions.Session.send", return_value=MockedResponse(200, "ok"))

    from CybersixgillDVEEnrichment import test_module

    test_module(demisto.params()["client_id"], demisto.params()["client_secret"], channel_code, requests.Session(), True)


def test_stix_to_indicator(mocker):
    mocker.patch.object(demisto, "params", return_value=init_params())
    mocker.patch("requests.sessions.Session.send", new=mocked_request)

    from CybersixgillDVEEnrichment import stix_to_indicator

    output = []
    cve_data = stix_to_indicator(cve_enrich)
    output.append(cve_data)
    assert output == expected_enrich_output


def test_cve_enrich_command(mocker):
    mocker.patch.object(demisto, "params", return_value=init_params())
    mocker.patch.object(demisto, "args", return_value=args)
    mocker.patch("requests.sessions.Session.send", new=mocked_request)

    from CybersixgillDVEEnrichment import cve_enrich_command
    from sixgill.sixgill_enrich_client import SixgillEnrichClient

    client = SixgillEnrichClient(demisto.params()["client_id"], demisto.params()["client_secret"], channel_code, demisto)

    output = cve_enrich_command(client, demisto.args())
    assert output[0].outputs == expected_enrich_output


def test_cve_enrich_remediation_command(mocker):
    mocker.patch.object(demisto, "params", return_value=init_params())
    mocker.patch.object(demisto, "args", return_value=args)
    mocker.patch("requests.sessions.Session.send", new=mocked_request)

    from CybersixgillDVEEnrichment import cve_enrich_remediation_command
    from sixgill.sixgill_enrich_client import SixgillEnrichClient

    client = SixgillEnrichClient(demisto.params()["client_id"], demisto.params()["client_secret"], channel_code, demisto)

    output = cve_enrich_remediation_command(client, demisto.args())
    assert output[0].outputs == expected_enrich_remediation_output