ACTI Vulnerability Query

ACTI provides intelligence regarding security threats and vulnerabilities.

Vulnerability Management · Accenture CTI v2

Details

IDACTI Vulnerability Query
ProviderAccenture
CategoryVulnerability Management
From Version5.5.0
Docker Imagedemisto/python3:3.12.13.10116658
Supported ModulesAgentix XSIAM

README

Accenture CTI provides intelligence regarding security threats and vulnerabilities.
This integration was integrated and tested with version v2.93.0 of ACTI

Configure ACTI Vulnerability Query in Cortex

Parameter Description Required
url URL True
api_token API Token True
Source Reliability Reliability of the source providing the intelligence data. B - Usually reliable
insecure Trust any certificate (not secure) False
use_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.

acti-vuln


Checks the reputation of the given common vulnerabilities and exposures ID.

Base Command

acti-vuln

Input

Argument Name Description Required
cve CVE ID to check. Optional

Context Output

Path Type Description
CVE.ID String The ID of the CVE, for example: CVE-2022-1653
CVE.CVSS2 String The CVSS2 temporal score of the CVE based on exploitability, remediation level & report confidence, for example: 10.0
CVE.CVSS3 String The CVSS3 temporal score of the CVE based on exploitability, remediation level & report confidence, for example: 10.0
CVE.Published String The timestamp of when the CVE was published.
CVE.Modified String The timestamp of when the CVE was last modified.
CVE.Description String A description of the CVE.
DBotScore.Indicator String The indicator that was tested.
DBotScore.Reliability String Reliability of the source providing the intelligence data.
DBotScore.Type String The indicator type.
DBotScore.Vendor String The vendor that was used to calculate the score.
DBotScore.Score String The actual score.

Command Example

!acti-vuln cve=CVE-2022-1653

Context Example

{
    "DBotScore": {
        "Indicator": "CVE-2022-1653",
        "Reliability": "B - Usually reliable",
        "Score": 2,
        "Type": "cve",
        "Vendor": "ACTI Vulnerability Query"
    },
    "CVE": {
        "CVSS2": "10.0",
        "CVSS3": "10.0",
        "Description": "Description of the vulnerability",
        "ID": "CVE-2022-1653",
        "Modified": "2022-01-27 03:40:00",
        "Published": "2022-01-22 04:01:42",
    }
}

Human Readable Output

Results

CPEs CVSS2 CVSS3 DbotReputation Description LastModified LastPublished Name UUID
cpe:/a:f5:big-ip:16.1.1 10 10 2 Description of the vulnerability 2022-01-27 03:40:00 2022-01-22 04:01:42 CVE-2022-1653 cbc55efe-aa5c-4114-b532-e44f9b824fe1

Configuration parameters

  • url — URL (required)
  • api_token — (required)
  • integrationReliability — Source Reliability (required)
  • insecure — Trust any certificate (not secure)
  • use_proxy — Use system proxy settings

Commands (1)

  • acti-vuln

    Checks reputation of the vulnerability.

import json
from ACTIVulnerabilityQuery import Client, vuln_command
from test_data.response_constants import VULN_RES_JSON
from CommonServerPython import DBotScoreReliability
import requests_mock


API_URL = "https://test.com"


def util_load_json(path):
    with open(path, encoding="utf-8") as f:
        return json.loads(f.read())


def test_vuln_command():
    """
    Given:
        - an CVE

    When:
        - running Vulnerability command and validate whether the CVE is malicious

    Then:
        - return command results containing Vulnerability, dbotscore

    """
    url = "https://test.com/rest/vulnerability/v0?key.values=CVE-2022-23021"
    status_code = 200
    json_res = VULN_RES_JSON

    expected_output = {
        "CVE": [
            {
                "ID": "CVE-2022-23021",
                "CVSS3": 6.5,
                "CVSS2": 3.7,
                "CVSS": {"CVSS3": 6.5, "CVSS2": 3.7},
                "Published": "2022-01-21 03:43:55",
                "Modified": "2022-01-21 03:43:55",
                "Description": "Remote exploitation of a null pointer dereference vulnerability in F5 BIG-IP could allow an attacker to cause a denial of service (DoS) condition on the targeted host. \n\nA null pointer dereference vulnerability has been identified in BIG-IP. This vulnerability occurs due to a failure to properly handle pointers when the HTTP redirect rule in an LTM policy, BIG-IP APM Access Profile, and Explicit HTTP Proxy in HTTP Profile configured on a virtual server.\n\nFurther details are not available at the time of this writing. iDefense will update this report as more details become available.",  # noqa: E501
            }
        ],
        "DBOTSCORE": [
            {
                "Indicator": "CVE-2022-23021",
                "Type": "cve",
                "Vendor": "ACTIVulnerabilityQuery",
                "Score": 1,
                "Reliability": "B - Usually reliable",
            }
        ],
    }

    cve_to_check = {"cve": "CVE-2022-23021"}

    with requests_mock.Mocker() as m:
        m.get(url, status_code=status_code, json=json_res)
        client = Client(API_URL, "api_token", True, False, "/rest/vulnerability")
        results = vuln_command(client, cve_to_check, DBotScoreReliability.B)
        output = results[0].to_context().get("EntryContext", {})

        assert output.get("CVE(val.ID && val.ID == obj.ID)", []) == expected_output.get("CVE")
        assert output.get(
            "DBotScore(val.Indicator && val.Indicator == obj.Indicator && val.Vendor == obj.Vendor && val.Type == obj.Type)", []
        ) == expected_output.get("DBOTSCORE")  # noqa: E501


def test_vuln_not_found():
    """
    Given:
        - an CVE

    When:
        - running Vulnerability command and validate whether the CVE is malicious

    Then:
        - return command results with context indicate that no results were found

    """
    url = "https://test.com/rest/vulnerability/v0?key.values=CVE-0000-00000"
    status_code = 200
    json_res = {"total_size": 0, "page": 1, "page_size": 25, "more": False}

    expected_output = "No results were found for cve CVE-0000-00000"

    cve_to_check = {"cve": "CVE-0000-00000"}

    with requests_mock.Mocker() as m:
        m.get(url, status_code=status_code, json=json_res)
        client = Client(API_URL, "api_token", True, False, "/rest/vulnerability")
        results = vuln_command(client, cve_to_check, DBotScoreReliability.B)
        output = results[0].to_context().get("HumanReadable")

        assert expected_output in output