Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
1135ef8
Fix: send action as dict in UserManagement.perform_action
Matth3wW Aug 1, 2025
aea935a
Resolve search_id keyword path interpolation issue with GetSearchStat…
jshcodes Aug 6, 2025
fce9d9f
Add Cloud Security Compliance service collection
jshcodes Aug 7, 2025
6229f2c
Resolve body payload generation issue with the userActionV1 operation
jshcodes Aug 7, 2025
4ae463c
Adjust unit testing to temporarily allow 500 from userActionV1
jshcodes Aug 7, 2025
f3b65df
Bump version -> 1.5.5
jshcodes Aug 7, 2025
c291e7e
Resolve issue with FDR service collection endpoints. Closes #1371.
jshcodes Aug 13, 2025
24593bf
added `GetSensorUsageHourly` as this allows you to pull hourly for Cl…
Sep 5, 2025
a06a256
Add sane boundaries to the random_string generator
jshcodes Nov 6, 2025
ab8c3fb
Add @Matth3ww, @dweissbacher, @atav928 and @subbu-cs
jshcodes Nov 6, 2025
4644bf2
Update parameter descriptions (Container Alerts)
jshcodes Nov 8, 2025
d345a13
Update operation and parameter descriptions (Container Images)
jshcodes Nov 8, 2025
a4aca39
Update operation and parameter descriptions (Container Packages)
jshcodes Nov 8, 2025
68a4e96
Update operation and parameter descriptions (Container Vulnerabilities)
jshcodes Nov 8, 2025
50fea4e
Deprecate Detects service collection and all related endpoints. Close…
jshcodes Nov 8, 2025
f3b9344
Add cloud_registration_azure_trigger_health_check operation
jshcodes Nov 16, 2025
83a8837
Cosmetic updates to parameter descriptions within the cloud_security_…
jshcodes Nov 16, 2025
716587e
Add control.extension.status as an allowed filter option to the _clou…
jshcodes Nov 16, 2025
87a2b1e
Update filter options for the _clodu_security_assets_queries_ operation
jshcodes Nov 16, 2025
eddc374
Add CombinedDetections operation
jshcodes Nov 16, 2025
1693520
Update filter argument description for several operations wtihin the …
jshcodes Nov 16, 2025
d15b1db
Update limit and offset descriptions for several operations within th…
jshcodes Nov 16, 2025
4a340f6
Add dspm_host_account_id, dspm_host_integration_role_name and dspm_ho…
jshcodes Nov 16, 2025
6fdef00
Add facet argument to combined_applications operation within the Disc…
jshcodes Nov 16, 2025
6c85524
Add scan_details.scan_id, scan_details.schedule_id, scan_details.scan…
jshcodes Nov 16, 2025
74248ba
Add FetchFilesDownloadInfo operation to the Downloads service collection
jshcodes Nov 16, 2025
0e2af89
Cosmetic updates to the limit and offset argument descriptions in the…
jshcodes Nov 16, 2025
8e93c38
Cosmetic updates to the sort enum a filter argument description in th…
jshcodes Nov 16, 2025
115926a
Remove unnecessary authorization headers from all operations within t…
jshcodes Nov 16, 2025
60fe3aa
Add reports.slug as an allowed value for the filter argument in the Q…
jshcodes Nov 16, 2025
de2c577
Add summary as an allowed value for the filter argument in the QueryI…
jshcodes Nov 16, 2025
bc26a84
Update limit and offset argument descriptions in the SearchAndRReadUn…
jshcodes Nov 16, 2025
ace1fab
Add uuid as an allowed filter value to queryUserV1 within the User Ma…
jshcodes Nov 16, 2025
0bfeacf
Add entitiesRolesGETV2 and deprecate entitiesRolesV1 operations withi…
jshcodes Nov 16, 2025
5630962
Add new operations to the ASPM service collection
jshcodes Nov 17, 2025
466339f
Add SPL, AI translated and __all__ language argument values to GetArc…
jshcodes Nov 17, 2025
c0e0013
Cosmetic updates to GetIntelligenceQueries and SearchIntelligenceQuer…
jshcodes Nov 17, 2025
617b4d9
Add include_translated_content argument to the GetIntelligenceQueries…
jshcodes Nov 17, 2025
6d2bd87
Add PolicyChecks, GetReportByReference and GetReportByScanID operations
jshcodes Nov 17, 2025
06c7167
Add "any" as an allowed feed_interval value to the QueryFeedArchives …
jshcodes Nov 17, 2025
3744f6a
Add file_name argument to UploadFileQuickScanPro
jshcodes Nov 17, 2025
08a3e08
Convert offset datatype to integer from string within QueryActivityBy…
jshcodes Nov 17, 2025
0d04b60
Add sort argument values to the CombinedHiddenDevicesByFilter and Com…
jshcodes Nov 17, 2025
8c576d3
Add limit, from and to arguments to the QueryDeviceLoginHistoryV2 ope…
jshcodes Nov 17, 2025
05abf71
Add WorkflowDefinitionsAction endpoint and corresponding method in Wo…
dweissbacher Sep 4, 2025
8a6be54
Argument and operation description updates to multiple Workflows oper…
jshcodes Nov 18, 2025
69be9be
Add cancel as an allowed value for action_name within WorkflowExecuti…
jshcodes Nov 18, 2025
344aca9
Add ignore_activity_mock_references and skip_validation arguments to …
jshcodes Nov 18, 2025
759f70a
Update ITAutomationStartExecutionResultsSearch and ITAutomationGetExe…
jshcodes Nov 18, 2025
a2e019b
Add new operations to the IT Automation service collection
jshcodes Nov 18, 2025
a744b05
Add namespace and pod_name as an allowed filter value to 5 cluster op…
jshcodes Nov 18, 2025
ac170de
Update limit and offset argument descriptions in 10 operations within…
jshcodes Nov 18, 2025
1388189
Update descriptions for the ReadClusterCombinedV2, SearchAndReadKuber…
jshcodes Nov 18, 2025
adc46f8
Add PostSearchKubernetesIOMEntities operation to the Kubernetes Prote…
jshcodes Nov 18, 2025
88d7af5
Add 22 new operations to the NGSIEM service collection
jshcodes Nov 19, 2025
dd12ebc
Add child_login and logout helper methods to the authentication objec…
jshcodes Nov 19, 2025
e3ae1a0
Update CHANGELOG.md
jshcodes Sep 11, 2025
0203ee9
Fix JSONDecodeError import in functions util
subbu-cs Nov 19, 2025
b94b41f
Add Case Management service collection
alhumaw Nov 19, 2025
dc4532b
Add SaaS Security service collection
alhumaw Nov 19, 2025
594aab9
Add Spotlight Vulnerability Metadat service collection
alhumaw Nov 19, 2025
9147f61
Add Data Protection Configuration service collection
alhumaw Nov 19, 2025
c0f998b
Add Correlation Rules Admin service collection
alhumaw Nov 19, 2025
f465a86
Add Cloud Security Detections service collection
alhumaw Nov 19, 2025
136b22f
Add Cloud Policies service collection
alhumaw Nov 19, 2025
d19144c
Fix cloud security detections typo
jshcodes Nov 20, 2025
eb5001f
Update SaaS unit testing
jshcodes Nov 20, 2025
8f4dec5
Allow for string and list values to be removed in IOC metadata
jshcodes Dec 10, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add Spotlight Vulnerability Metadat service collection
  • Loading branch information
alhumaw authored and jshcodes committed Dec 12, 2025
commit 594aab98b5f86650a6e22a4fc5ee1a4271ab6ff5
3 changes: 2 additions & 1 deletion src/falconpy/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,7 @@
from .sensor_visibility_exclusions import SensorVisibilityExclusions
from .serverless_vulnerabilities import ServerlessVulnerabilities
from .spotlight_vulnerabilities import SpotlightVulnerabilities
from .spotlight_vulnerability_metadata import SpotlightVulnerabilityMetadata
from .spotlight_evaluation_logic import SpotlightEvaluationLogic
from .tailored_intelligence import TailoredIntelligence
from .threatgraph import ThreatGraph
Expand Down Expand Up @@ -253,7 +254,7 @@
"IngestPayload", "HTTPEventCollector", "IngestConfig", "SessionManager", "TimeUnit",
"Color", "Indicator", "random_string", "KubernetesContainerCompliance", "find_operation",
"InvalidRoute", "InvalidServiceCollection", "InvalidOperationSearch", "ITAutomation", "F4IT",
"CloudSecurityCompliance", "CaseManagement", "SaasSecurity"
"CloudSecurityCompliance", "CaseManagement", "SaasSecurity", "SpotlightVulnerabilityMetadata"
]
"""
This is free and unencumbered software released into the public domain.
Expand Down
2 changes: 2 additions & 0 deletions src/falconpy/_endpoint/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,7 @@
from ._serverless_vulnerabilities import _serverless_vulnerabilities_endpoints
from ._spotlight_evaluation_logic import _spotlight_evaluation_logic_endpoints
from ._spotlight_vulnerabilities import _spotlight_vulnerabilities_endpoints
from ._spotlight_vulnerability_metadata import _spotlight_vulnerability_metadata_endpoints
from ._tailored_intelligence import _tailored_intelligence_endpoints
from ._threatgraph import _threatgraph_endpoints
from ._unidentified_containers import _unidentified_containers_endpoints
Expand Down Expand Up @@ -239,6 +240,7 @@
api_endpoints.extend(_serverless_vulnerabilities_endpoints)
api_endpoints.extend(_spotlight_evaluation_logic_endpoints)
api_endpoints.extend(_spotlight_vulnerabilities_endpoints)
api_endpoints.extend(_spotlight_vulnerability_metadata_endpoints)
api_endpoints.extend(_tailored_intelligence_endpoints)
api_endpoints.extend(_threatgraph_endpoints)
api_endpoints.extend(_unidentified_containers_endpoints)
Expand Down
98 changes: 98 additions & 0 deletions src/falconpy/_endpoint/_spotlight_vulnerability_metadata.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
"""Internal API endpoint constant library.

_______ __ _______ __ __ __
| _ .----.-----.--.--.--.--| | _ | |_.----|__| |--.-----.
|. 1___| _| _ | | | | _ | 1___| _| _| | <| -__|
|. |___|__| |_____|________|_____|____ |____|__| |__|__|__|_____|
|: 1 | |: 1 |
|::.. . | CROWDSTRIKE FALCON |::.. . | FalconPy
`-------' `-------'

OAuth2 API - Customer SDK

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.

In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

For more information, please refer to <https://unlicense.org>
"""

_spotlight_vulnerability_metadata_endpoints = [
[
"combineVulnMetadataExt",
"GET",
"/spotlight/combined/vulnerability-metadata-external/v1",
"This endpoint allows getting CVEs(vulnerability metadata) entities by specifying their ids",
"spotlight_vulnerability_metadata",
[
{
"type": "string",
"description": "A pagination token used with the limit parameter to manage pagination of results. On "
"your first request, don't provide an after token. On subsequent requests, provide the after token from the "
"previous response to continue from that place in the results.",
"name": "after",
"in": "query"
},
{
"minimum": 0,
"type": "string",
"description": "Starting index of overall result set from which to return ids.",
"name": "offset",
"in": "query"
},
{
"maximum": 10000,
"minimum": 1,
"type": "integer",
"description": "The number of items to return in this response (default: 100, max: 10000). Use with "
"the after parameter to manage pagination of results.",
"name": "limit",
"in": "query"
},
{
"type": "string",
"description": "Sort vulnerabilities by their properties. Available sort options: "
"<ul><li>created_timestamp|asc/desc</li><li>updated_timestamp|asc/desc</li></ul>. Can be used in a format "
"<field>|asc for ascending order or <field>|desc for descending order.",
"name": "sort",
"in": "query"
},
{
"type": "string",
"description": "Filter items using a query in Falcon Query Language (FQL). Wildcards * and empty "
"filter values are unsupported.\n\t\t\t\tAvailable filter fields that supports match (~): "
"N/A\n\t\t\t\tAvailable filter fields that supports exact match: id, provider, cve_ids, cwe_ids, "
"impact.cvss_v2.base_metrics.vector, "
"impact.cvss_v2.temporal_metrics.vector,\n\t\t\t\t\timpact.cvss_v3.base_metrics.integrity_impact, "
"impact.cvss_v3.base_metrics.vector, impact.cvss_v3.temporal_metrics.vector\n\t\t\t\tAvailable filter fields "
"that supports wildcard (*): N/A\n\t\t\t\tAvailable filter fields that supports range comparisons (>, <, >=, "
"<=): created_timestamp, impact.cvss_v2.base_metrics.base_score, "
"impact.cvss_v3.base_metrics.base_score,\n\t\t\t\t\timpact.cvss_v2.temporal_metrics.temporal_score, "
"impact.cvss_v3.temporal_metrics.temporal_score, source_created_timestamp, source_updated_timestamp, "
"updated_timestamp\n\t\t\t\t",
"name": "filter",
"in": "query",
"required": True
}
]
]
]
109 changes: 109 additions & 0 deletions src/falconpy/spotlight_vulnerability_metadata.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
"""CrowdStrike Falcon SpotlightVulnerabilityMetadata API interface class.

_______ __ _______ __ __ __
| _ .----.-----.--.--.--.--| | _ | |_.----|__| |--.-----.
|. 1___| _| _ | | | | _ | 1___| _| _| | <| -__|
|. |___|__| |_____|________|_____|____ |____|__| |__|__|__|_____|
|: 1 | |: 1 |
|::.. . | CROWDSTRIKE FALCON |::.. . | FalconPy
`-------' `-------'

OAuth2 API - Customer SDK

This is free and unencumbered software released into the public domain.

Anyone is free to copy, modify, publish, use, compile, sell, or
distribute this software, either in source code form or as a compiled
binary, for any purpose, commercial or non-commercial, and by any
means.

In jurisdictions that recognize copyright laws, the author or authors
of this software dedicate any and all copyright interest in the
software to the public domain. We make this dedication for the benefit
of the public at large and to the detriment of our heirs and
successors. We intend this dedication to be an overt act of
relinquishment in perpetuity of all present and future rights to this
software under copyright law.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
OTHER DEALINGS IN THE SOFTWARE.

For more information, please refer to <https://unlicense.org>
"""
from typing import Dict, Union
from ._util import force_default, process_service_request
from ._result import Result
from ._service_class import ServiceClass
from ._endpoint._spotlight_vulnerability_metadata import _spotlight_vulnerability_metadata_endpoints as Endpoints


class SpotlightVulnerabilityMetadata(ServiceClass):
"""The only requirement to instantiate an instance of this class is one of the following.

- a valid client_id and client_secret provided as keywords.
- a credential dictionary with client_id and client_secret containing valid API credentials
{
"client_id": "CLIENT_ID_HERE",
"client_secret": "CLIENT_SECRET_HERE"
}
- a previously-authenticated instance of the authentication service class (oauth2.py)
- a valid token provided by the authentication service class (oauth2.py)
"""
@force_default(defaults=["parameters"], default_types=["dict"])
def get_cve_metadata(self: object, parameters: dict = None, **kwargs) -> Union[Dict[str, Union[int, dict]], Result]:
"""This endpoint allows getting CVEs(vulnerability metadata) entities by specifying their ids

Keyword arguments:
after -- A pagination token used with the `limit` parameter to manage pagination of results.
On your first request, don't provide an `after` token.
On subsequent requests, provide the `after` token from the
previous response to continue from that place in the results.
offset -- Starting index of overall result set from which to return ids.
limit -- The number of items to return in this response (default: 100, max: 10000).
Use with the after parameter to manage pagination of results.
sort -- Sort vulnerabilities by their properties.
Available sort options:
created_timestamp|asc/desc
updated_timestamp|asc/desc
Can be used in a format <field>|asc for ascending order or <field>|desc for descending order.
filter -- Filter items using a query in Falcon Query Language (FQL).
Wildcards * and empty filter values are unsupported.
Available filter fields that supports match (~): N/A
Available filter fields that supports exact match:
id provider
cve_ids cwe_ids
impact.cvss_v2.base_metrics.vector impact.cvss_v2.temporal_metrics.vector
impact.cvss_v3.base_metrics.integrity_impact, impact.cvss_v3.base_metrics.vector,
impact.cvss_v3.temporal_metrics.vector
Available filter fields that supports wildcard (*): N/A
Available filter fields that supports range comparisons (>, <, >=, <=):
created_timestamp impact.cvss_v2.base_metrics.base_score
impact.cvss_v3.base_metrics.base_score impact.cvss_v2.temporal_metrics.temporal_score
impact.cvss_v3.temporal_metrics.temporal_score source_created_timestamp
source_updated_timestamp updated_timestamp

parameters -- Full parameters payload dictionary. Not required if using other keywords.

This method only supports keywords for providing arguments.

Returns: dict object containing API response.

HTTP Method: GET

Swagger URL
https://assets.falcon.crowdstrike.com/support/api/swagger.html#/spotlight-vulnerability-metadata/combineVulnMetadataExt
"""
return process_service_request(
calling_object=self,
endpoints=Endpoints,
operation_id="combineVulnMetadataExt",
keywords=kwargs,
params=parameters
)

combineVulnMetadataExt = get_cve_metadata
33 changes: 33 additions & 0 deletions tests/test_spotlight_vulnerability_metadata.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# test_spotlight_vulnerability_metadata.py
# This class tests the SpotlightVulnerabilityMetadata service class

# import json
import os
import sys

# Authentication via the test_authorization.py
from tests import test_authorization as Authorization

# Import our sibling src folder into the path
sys.path.append(os.path.abspath('src'))
# Classes to test - manually imported from sibling folder
from falconpy import SpotlightVulnerabilityMetadata

auth = Authorization.TestAuthorization()
config = auth.getConfigObject()
falcon = SpotlightVulnerabilityMetadata(auth_object=config)
AllowedResponses = [200, 201, 207, 400, 403, 404, 429]


class TestSpotlightVulnerabilityMetadata:
def test_all_code_paths(self):
error_checks = True
tests = {
"combineVulnMetadataExt": falcon.get_cve_metadata(),
}
for key in tests:
if tests[key]["status_code"] not in AllowedResponses:
error_checks = False
# print(key)
# print(tests[key])
assert error_checks