Skip to content

Commit 471f38d

Browse files
committed
[ADD] vulnerabilityFixResolutionText for get_vulnerabilities_risks_by_scan_id
1 parent 4162327 commit 471f38d

File tree

2 files changed

+54
-0
lines changed

2 files changed

+54
-0
lines changed

CheckmarxPythonSDK/CxScaApiSDK/api.py

+47
Original file line numberDiff line numberDiff line change
@@ -1965,12 +1965,55 @@ def get_vulnerabilities_risks_by_scan_id(self, scan_id, is_exploitable_path_enab
19651965
"cvss3 { attackComplexity, attackVector, availability, availabilityRequirement, baseScore, "
19661966
"confidentiality, confidentialityRequirement, exploitCodeMaturity, integrity, integrityRequirement, "
19671967
"privilegesRequired, remediationLevel, reportConfidence, scope, userInteraction }, "
1968+
"vulnerabilityFixResolutionText,"
19681969
"pendingState, pendingChanges, packageState { type, value }, pendingScore, pendingSeverity,"
19691970
" isScoreOverridden } }"
19701971
" }")
19711972
response = self.gql_request(relative_url=self.gql_relative_url, data=query)
19721973
return response
19731974

1975+
def get_one_vulnerability(self, scan_id, vulnerability_id, package_id):
1976+
"""
1977+
This is a GraphQL API
1978+
Args:
1979+
scan_id (str):
1980+
vulnerability_id (str):
1981+
package_id (str):
1982+
1983+
Returns:
1984+
1985+
"""
1986+
query = ("query { "
1987+
"vulnerability ("
1988+
f"scanId: \"{scan_id}\", "
1989+
f"vulnerabilityId: \"{vulnerability_id}\", "
1990+
f"packageId: \"{package_id}\""
1991+
")"
1992+
"{ packageState { type, value }, assignedPolicies, violatedPolicies, pendingChanges, pendingState, "
1993+
"state, score, pendingScore, pendingSeverity, isScoreOverridden, morEntityProfilesApplied, credit, "
1994+
"notes, isIgnored, cve, cwe, description, packageId, severity, type, published, isKevDataExists, "
1995+
"isExploitDbDataExists, isVulnerabilityNew, detectionDate, relation, vulnerabilityFixResolutionText, "
1996+
"cweInfo { title }, packageInfo { name, packageRepository, version }, isExploitable, exploitablePath "
1997+
"{ methodMatch { fullName, line, namespace, shortName, sourceFile }, methodSourceCall { fullName, "
1998+
"line, namespace, shortName, sourceFile } }, "
1999+
"vulnerablePackagePath { id, isDevelopment, isResolved, "
2000+
"name, version, vulnerabilityRiskLevel }, "
2001+
"references { comment, type, url }, "
2002+
"cvss2 { attackComplexity, attackVector, authentication, availability, availabilityRequirement,"
2003+
" baseScore, collateralDamagePotential, confidentiality, confidentialityRequirement,"
2004+
" exploitCodeMaturity, integrityImpact, integrityRequirement, remediationLevel, reportConfidence, "
2005+
"targetDistribution, severity }, cvss3 { attackComplexity, attackVector, availability,"
2006+
" availabilityRequirement, baseScore, confidentiality, confidentialityRequirement, "
2007+
"exploitCodeMaturity, integrity, integrityRequirement, privilegesRequired, remediationLevel, "
2008+
"reportConfidence, scope, userInteraction, severity }, "
2009+
"cvss4 { attackComplexity, attackVector, attackRequirements, privilegesRequired, userInteraction, "
2010+
"vulnerableSystemConfidentiality, vulnerableSystemIntegrity, vulnerableSystemAvailability, "
2011+
"subsequentSystemConfidentiality, subsequentSystemIntegrity, subsequentSystemAvailability, "
2012+
"baseScore, severity }, isEpssDataExists, epssData { cve, date, epss, percentile } }"
2013+
" }")
2014+
response = self.gql_request(relative_url=self.gql_relative_url, data=query)
2015+
return response
2016+
19742017
def get_supply_chain_risks_by_scan_id(self, scan_id, take=10, skip=0):
19752018
"""
19762019
This is a GraphQL API
@@ -2667,6 +2710,10 @@ def get_vulnerabilities_risks_by_scan_id(scan_id, is_exploitable_path_enabled=Fa
26672710
take=take, skip=skip)
26682711

26692712

2713+
def get_one_vulnerability(scan_id, vulnerability_id, package_id):
2714+
return Sca().get_one_vulnerability(scan_id=scan_id, vulnerability_id=vulnerability_id, package_id=package_id)
2715+
2716+
26702717
def get_supply_chain_risks_by_scan_id(scan_id, take=10, skip=0):
26712718
return Sca().get_supply_chain_risks_by_scan_id(scan_id, take=take, skip=skip)
26722719

tests/CxOne/test_sca_api.py

+7
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@ def test_get_vulnerabilities_risks_by_scan_id():
3636
assert second_result is not None
3737

3838

39+
def test_get_one_vulnerability():
40+
result = ScaAPI().get_one_vulnerability(scan_id="fd129816-5ef0-4111-959b-11f118e286fa",
41+
vulnerability_id="CVE-2019-19919",
42+
package_id="Npm-handlebars-4.0.5")
43+
assert result is not None
44+
45+
3946
def test_get_supply_chain_risks_by_scan_id():
4047
result = ScaAPI().get_supply_chain_risks_by_scan_id(scan_id="d201a795-e2f0-44bf-8f5a-d6a5eb1c28b7",
4148
take=10, skip=0)

0 commit comments

Comments
 (0)