ACTI Vulnerability Query
ACTI provides intelligence regarding security threats and vulnerabilities.
Vulnerability Management · Accenture CTI v2
Details
| ID | ACTI Vulnerability Query |
|---|---|
| Provider | Accenture |
| Category | Vulnerability Management |
| From Version | 5.5.0 |
| Docker Image | demisto/python3:3.12.13.10116658 |
| Supported Modules | Agentix 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-vulnChecks 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