regscale-cli 6.20.1.1__py3-none-any.whl → 6.20.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of regscale-cli might be problematic. Click here for more details.
- regscale/__init__.py +1 -1
- regscale/core/app/utils/variables.py +5 -3
- regscale/integrations/commercial/__init__.py +15 -0
- regscale/integrations/commercial/axonius/__init__.py +0 -0
- regscale/integrations/commercial/axonius/axonius_integration.py +70 -0
- regscale/integrations/commercial/burp.py +14 -0
- regscale/integrations/commercial/grype/commands.py +8 -1
- regscale/integrations/commercial/grype/scanner.py +2 -1
- regscale/integrations/commercial/jira.py +288 -137
- regscale/integrations/commercial/opentext/commands.py +14 -5
- regscale/integrations/commercial/opentext/scanner.py +3 -2
- regscale/integrations/commercial/qualys/__init__.py +3 -3
- regscale/integrations/commercial/stigv2/click_commands.py +6 -37
- regscale/integrations/commercial/synqly/assets.py +10 -0
- regscale/integrations/commercial/tenablev2/commands.py +12 -4
- regscale/integrations/commercial/tenablev2/sc_scanner.py +21 -1
- regscale/integrations/commercial/tenablev2/sync_compliance.py +3 -0
- regscale/integrations/commercial/trivy/commands.py +11 -4
- regscale/integrations/commercial/trivy/scanner.py +2 -1
- regscale/integrations/commercial/wizv2/constants.py +4 -0
- regscale/integrations/commercial/wizv2/scanner.py +67 -14
- regscale/integrations/commercial/wizv2/utils.py +24 -10
- regscale/integrations/commercial/wizv2/variables.py +7 -0
- regscale/integrations/jsonl_scanner_integration.py +8 -1
- regscale/integrations/public/cisa.py +58 -63
- regscale/integrations/public/fedramp/fedramp_cis_crm.py +153 -104
- regscale/integrations/scanner_integration.py +30 -8
- regscale/integrations/variables.py +1 -0
- regscale/models/app_models/click.py +49 -1
- regscale/models/app_models/import_validater.py +3 -1
- regscale/models/integration_models/axonius_models/__init__.py +0 -0
- regscale/models/integration_models/axonius_models/connectors/__init__.py +3 -0
- regscale/models/integration_models/axonius_models/connectors/assets.py +111 -0
- regscale/models/integration_models/burp.py +11 -8
- regscale/models/integration_models/cisa_kev_data.json +204 -23
- regscale/models/integration_models/flat_file_importer/__init__.py +36 -176
- regscale/models/integration_models/jira_task_sync.py +27 -0
- regscale/models/integration_models/qualys.py +6 -7
- regscale/models/integration_models/synqly_models/capabilities.json +1 -1
- regscale/models/regscale_models/__init__.py +2 -1
- regscale/models/regscale_models/control_implementation.py +39 -2
- regscale/models/regscale_models/issue.py +1 -0
- regscale/models/regscale_models/regscale_model.py +49 -1
- regscale/models/regscale_models/risk_issue_mapping.py +61 -0
- regscale/models/regscale_models/task.py +1 -0
- regscale/regscale.py +1 -4
- regscale/utils/graphql_client.py +4 -4
- regscale/utils/string.py +13 -0
- {regscale_cli-6.20.1.1.dist-info → regscale_cli-6.20.3.0.dist-info}/METADATA +1 -1
- {regscale_cli-6.20.1.1.dist-info → regscale_cli-6.20.3.0.dist-info}/RECORD +54 -48
- regscale/integrations/commercial/synqly_jira.py +0 -840
- {regscale_cli-6.20.1.1.dist-info → regscale_cli-6.20.3.0.dist-info}/LICENSE +0 -0
- {regscale_cli-6.20.1.1.dist-info → regscale_cli-6.20.3.0.dist-info}/WHEEL +0 -0
- {regscale_cli-6.20.1.1.dist-info → regscale_cli-6.20.3.0.dist-info}/entry_points.txt +0 -0
- {regscale_cli-6.20.1.1.dist-info → regscale_cli-6.20.3.0.dist-info}/top_level.txt +0 -0
|
@@ -1,9 +1,205 @@
|
|
|
1
1
|
{
|
|
2
2
|
"title": "CISA Catalog of Known Exploited Vulnerabilities",
|
|
3
|
-
"catalogVersion": "2025.
|
|
4
|
-
"dateReleased": "2025-
|
|
5
|
-
"count":
|
|
3
|
+
"catalogVersion": "2025.06.13",
|
|
4
|
+
"dateReleased": "2025-06-13T16:08:40.4237Z",
|
|
5
|
+
"count": 1364,
|
|
6
6
|
"vulnerabilities": [
|
|
7
|
+
{
|
|
8
|
+
"cveID": "CVE-2025-33053",
|
|
9
|
+
"vendorProject": "Web Distributed Authoring and Versioning",
|
|
10
|
+
"product": "Web Distributed Authoring and Versioning (WebDAV)",
|
|
11
|
+
"vulnerabilityName": "Web Distributed Authoring and Versioning (WebDAV) External Control of File Name or Path Vulnerability",
|
|
12
|
+
"dateAdded": "2025-06-10",
|
|
13
|
+
"shortDescription": "Web Distributed Authoring and Versioning (WebDAV) contains an external control of file name or path vulnerability. This vulnerability could allow an unauthorized attacker to execute code over a network. This vulnerability could affect various products that implement WebDAV, including but not limited to Microsoft Windows.",
|
|
14
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
15
|
+
"dueDate": "2025-07-01",
|
|
16
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
17
|
+
"notes": "This vulnerability affects a common open-source project, third-party library, or a protocol used by different products. For more information, please see: https:\/\/msrc.microsoft.com\/update-guide\/en-US\/vulnerability\/CVE-2025-33053 ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-33053",
|
|
18
|
+
"cwes": [
|
|
19
|
+
"CWE-73"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"cveID": "CVE-2025-24016",
|
|
24
|
+
"vendorProject": "Wazuh",
|
|
25
|
+
"product": "Wazuh Server",
|
|
26
|
+
"vulnerabilityName": "Wazuh Server Deserialization of Untrusted Data Vulnerability",
|
|
27
|
+
"dateAdded": "2025-06-10",
|
|
28
|
+
"shortDescription": "Wazuh contains a deserialization of untrusted data vulnerability that allows for remote code execution on Wazuh servers.",
|
|
29
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
30
|
+
"dueDate": "2025-07-01",
|
|
31
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
32
|
+
"notes": "https:\/\/github.com\/wazuh\/wazuh\/security\/advisories\/GHSA-hcrc-79hj-m3qh ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-24016",
|
|
33
|
+
"cwes": [
|
|
34
|
+
"CWE-502"
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"cveID": "CVE-2024-42009",
|
|
39
|
+
"vendorProject": "Roundcube",
|
|
40
|
+
"product": "Webmail",
|
|
41
|
+
"vulnerabilityName": "RoundCube Webmail Cross-Site Scripting Vulnerability",
|
|
42
|
+
"dateAdded": "2025-06-09",
|
|
43
|
+
"shortDescription": "RoundCube Webmail contains a cross-site scripting vulnerability. This vulnerability could allow a remote attacker to steal and send emails of a victim via a crafted e-mail message that abuses a Desanitization issue in message_body() in program\/actions\/mail\/show.php.",
|
|
44
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
45
|
+
"dueDate": "2025-06-30",
|
|
46
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
47
|
+
"notes": "https:\/\/roundcube.net\/news\/2024\/08\/04\/security-updates-1.6.8-and-1.5.8 ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2024-42009",
|
|
48
|
+
"cwes": [
|
|
49
|
+
"CWE-79"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"cveID": "CVE-2025-32433",
|
|
54
|
+
"vendorProject": "Erlang",
|
|
55
|
+
"product": "Erlang\/OTP",
|
|
56
|
+
"vulnerabilityName": "Erlang Erlang\/OTP SSH Server Missing Authentication for Critical Function Vulnerability",
|
|
57
|
+
"dateAdded": "2025-06-09",
|
|
58
|
+
"shortDescription": "Erlang Erlang\/OTP SSH server contains a missing authentication for critical function vulnerability. This could allow an attacker to execute arbitrary commands without valid credentials, potentially leading to unauthenticated remote code execution (RCE). By exploiting a flaw in how SSH protocol messages are handled, a malicious actor could gain unauthorized access to affected systems. This vulnerability could affect various products that implement Erlang\/OTP SSH server, including\u2014but not limited to\u2014Cisco, NetApp, and SUSE.",
|
|
59
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
60
|
+
"dueDate": "2025-06-30",
|
|
61
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
62
|
+
"notes": "This vulnerability affects a common open-source project, third-party library, or a protocol used by different products. For more information, please see: https:\/\/github.com\/erlang\/otp\/security\/advisories\/GHSA-37cp-fgq5-7wc2 ; https:\/\/sec.cloudapps.cisco.com\/security\/center\/content\/CiscoSecurityAdvisory\/cisco-sa-erlang-otp-ssh-xyZZy ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-32433",
|
|
63
|
+
"cwes": [
|
|
64
|
+
"CWE-306"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"cveID": "CVE-2025-5419",
|
|
69
|
+
"vendorProject": "Google",
|
|
70
|
+
"product": "Chromium V8",
|
|
71
|
+
"vulnerabilityName": "Google Chromium V8 Out-of-Bounds Read and Write Vulnerability",
|
|
72
|
+
"dateAdded": "2025-06-05",
|
|
73
|
+
"shortDescription": "Google Chromium V8 contains an out-of-bounds read and write vulnerability that could allow a remote attacker to potentially exploit heap corruption via a crafted HTML page. This vulnerability could affect multiple web browsers that utilize Chromium, including, but not limited to, Google Chrome, Microsoft Edge, and Opera.",
|
|
74
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
75
|
+
"dueDate": "2025-06-26",
|
|
76
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
77
|
+
"notes": "https:\/\/chromereleases.googleblog.com\/2025\/06\/stable-channel-update-for-desktop.html; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-5419\",",
|
|
78
|
+
"cwes": [
|
|
79
|
+
"CWE-125",
|
|
80
|
+
"CWE-787"
|
|
81
|
+
]
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"cveID": "CVE-2025-21479",
|
|
85
|
+
"vendorProject": "Qualcomm",
|
|
86
|
+
"product": "Multiple Chipsets",
|
|
87
|
+
"vulnerabilityName": "Qualcomm Multiple Chipsets Incorrect Authorization Vulnerability",
|
|
88
|
+
"dateAdded": "2025-06-03",
|
|
89
|
+
"shortDescription": "Multiple Qualcomm chipsets contain an incorrect authorization vulnerability. This vulnerability allows for memory corruption due to unauthorized command execution in GPU micronode while executing specific sequence of commands.",
|
|
90
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
91
|
+
"dueDate": "2025-06-24",
|
|
92
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
93
|
+
"notes": "Please check with specific vendors (OEMs,) for information on patching status. For more information, please see: https:\/\/docs.qualcomm.com\/product\/publicresources\/securitybulletin\/june-2025-bulletin.html ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-21479",
|
|
94
|
+
"cwes": [
|
|
95
|
+
"CWE-863"
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"cveID": "CVE-2025-21480",
|
|
100
|
+
"vendorProject": "Qualcomm",
|
|
101
|
+
"product": "Multiple Chipsets",
|
|
102
|
+
"vulnerabilityName": "Qualcomm Multiple Chipsets Incorrect Authorization Vulnerability",
|
|
103
|
+
"dateAdded": "2025-06-03",
|
|
104
|
+
"shortDescription": "Multiple Qualcomm chipsets contain an incorrect authorization vulnerability. This vulnerability allows for memory corruption due to unauthorized command execution in GPU micronode while executing specific sequence of commands.",
|
|
105
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
106
|
+
"dueDate": "2025-06-24",
|
|
107
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
108
|
+
"notes": "Please check with specific vendors (OEMs,) for information on patching status. For more information, please see: https:\/\/docs.qualcomm.com\/product\/publicresources\/securitybulletin\/june-2025-bulletin.html ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-21480",
|
|
109
|
+
"cwes": [
|
|
110
|
+
"CWE-863"
|
|
111
|
+
]
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
"cveID": "CVE-2025-27038",
|
|
115
|
+
"vendorProject": "Qualcomm",
|
|
116
|
+
"product": "Multiple Chipsets",
|
|
117
|
+
"vulnerabilityName": "Qualcomm Multiple Chipsets Use-After-Free Vulnerability",
|
|
118
|
+
"dateAdded": "2025-06-03",
|
|
119
|
+
"shortDescription": "Multiple Qualcomm chipsets contain a use-after-free vulnerability. This vulnerability allows for memory corruption while rendering graphics using Adreno GPU drivers in Chrome.",
|
|
120
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
121
|
+
"dueDate": "2025-06-24",
|
|
122
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
123
|
+
"notes": "Please check with specific vendors (OEMs,) for information on patching status. For more information, please see: https:\/\/docs.qualcomm.com\/product\/publicresources\/securitybulletin\/june-2025-bulletin.html ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-27038",
|
|
124
|
+
"cwes": [
|
|
125
|
+
"CWE-416"
|
|
126
|
+
]
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"cveID": "CVE-2021-32030",
|
|
130
|
+
"vendorProject": "ASUS",
|
|
131
|
+
"product": "Routers",
|
|
132
|
+
"vulnerabilityName": "ASUS Routers Improper Authentication Vulnerability",
|
|
133
|
+
"dateAdded": "2025-06-02",
|
|
134
|
+
"shortDescription": "ASUS Lyra Mini and ASUS GT-AC2900 devices contain an improper authentication vulnerability that allows an attacker to gain unauthorized access to the administrative interface. The impacted products could be end-of-life (EoL) and\/or end-of-service (EoS). Users should discontinue product utilization.",
|
|
135
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
136
|
+
"dueDate": "2025-06-23",
|
|
137
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
138
|
+
"notes": "https:\/\/www.asus.com\/us\/supportonly\/lyra%20mini\/helpdesk_bios\/ ; https:\/\/www.asus.com\/us\/supportonly\/rog%20rapture%20gt-ac2900\/helpdesk_bios\/; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2021-32030",
|
|
139
|
+
"cwes": [
|
|
140
|
+
"CWE-287"
|
|
141
|
+
]
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"cveID": "CVE-2025-3935",
|
|
145
|
+
"vendorProject": "ConnectWise",
|
|
146
|
+
"product": "ScreenConnect",
|
|
147
|
+
"vulnerabilityName": "ConnectWise ScreenConnect Improper Authentication Vulnerability",
|
|
148
|
+
"dateAdded": "2025-06-02",
|
|
149
|
+
"shortDescription": "ConnectWise ScreenConnect contains an improper authentication vulnerability. This vulnerability could allow a ViewState code injection attack, which could allow remote code execution if machine keys are compromised.",
|
|
150
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
151
|
+
"dueDate": "2025-06-23",
|
|
152
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
153
|
+
"notes": "https:\/\/www.connectwise.com\/company\/trust\/security-bulletins\/screenconnect-security-patch-2025.4 ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-3935",
|
|
154
|
+
"cwes": [
|
|
155
|
+
"CWE-287"
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"cveID": "CVE-2025-35939",
|
|
160
|
+
"vendorProject": "Craft CMS",
|
|
161
|
+
"product": "Craft CMS",
|
|
162
|
+
"vulnerabilityName": "Craft CMS External Control of Assumed-Immutable Web Parameter Vulnerability",
|
|
163
|
+
"dateAdded": "2025-06-02",
|
|
164
|
+
"shortDescription": "Craft CMS contains an external control of assumed-immutable web parameter vulnerability. This vulnerability could allow an unauthenticated client to introduce arbitrary values, such as PHP code, to a known local file location on the server. This vulnerability could be chained with CVE-2024-58136 as represented by CVE-2025-32432.",
|
|
165
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
166
|
+
"dueDate": "2025-06-23",
|
|
167
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
168
|
+
"notes": "https:\/\/github.com\/craftcms\/cms\/pull\/17220 ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-35939",
|
|
169
|
+
"cwes": [
|
|
170
|
+
"CWE-472"
|
|
171
|
+
]
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"cveID": "CVE-2024-56145",
|
|
175
|
+
"vendorProject": "Craft CMS",
|
|
176
|
+
"product": "Craft CMS",
|
|
177
|
+
"vulnerabilityName": "Craft CMS Code Injection Vulnerability",
|
|
178
|
+
"dateAdded": "2025-06-02",
|
|
179
|
+
"shortDescription": "Craft CMS contains a code injection vulnerability. Users with affected versions are vulnerable to remote code execution if their php.ini configuration has `register_argc_argv` enabled.",
|
|
180
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
181
|
+
"dueDate": "2025-06-23",
|
|
182
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
183
|
+
"notes": "https:\/\/github.com\/craftcms\/cms\/security\/advisories\/GHSA-2p6p-9rc9-62j9 ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2024-56145",
|
|
184
|
+
"cwes": [
|
|
185
|
+
"CWE-94"
|
|
186
|
+
]
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"cveID": "CVE-2023-39780",
|
|
190
|
+
"vendorProject": "ASUS",
|
|
191
|
+
"product": "RT-AX55 Routers",
|
|
192
|
+
"vulnerabilityName": "ASUS RT-AX55 Routers OS Command Injection Vulnerability",
|
|
193
|
+
"dateAdded": "2025-06-02",
|
|
194
|
+
"shortDescription": "ASUS RT-AX55 devices contain an OS command injection vulnerability that could allow a remote, authenticated attacker to execute arbitrary commands. As represented by CVE-2023-41346.",
|
|
195
|
+
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
196
|
+
"dueDate": "2025-06-23",
|
|
197
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
198
|
+
"notes": "https:\/\/www.asus.com\/networking-iot-servers\/wifi-6\/all-series\/rt-ax55\/helpdesk_bios\/?model2Name=RT-AX55 ; https:\/\/www.asus.com\/content\/asus-product-security-advisory\/ ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2023-39780",
|
|
199
|
+
"cwes": [
|
|
200
|
+
"CWE-78"
|
|
201
|
+
]
|
|
202
|
+
},
|
|
7
203
|
{
|
|
8
204
|
"cveID": "CVE-2025-4632",
|
|
9
205
|
"vendorProject": "Samsung",
|
|
@@ -85,7 +281,7 @@
|
|
|
85
281
|
"product": "Endpoint Manager Mobile (EPMM)",
|
|
86
282
|
"vulnerabilityName": "Ivanti Endpoint Manager Mobile (EPMM) Code Injection Vulnerability",
|
|
87
283
|
"dateAdded": "2025-05-19",
|
|
88
|
-
"shortDescription": "Ivanti Endpoint Manager Mobile (EPMM) contains a code injection vulnerability in the API component that allows an authenticated attacker to remotely execute arbitrary code via crafted API requests. This vulnerability results from an insecure implementation of the Hibernate Validator open-source library.",
|
|
284
|
+
"shortDescription": "Ivanti Endpoint Manager Mobile (EPMM) contains a code injection vulnerability in the API component that allows an authenticated attacker to remotely execute arbitrary code via crafted API requests. This vulnerability results from an insecure implementation of the Hibernate Validator open-source library, as represented by CVE-2025-35036.",
|
|
89
285
|
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
90
286
|
"dueDate": "2025-06-09",
|
|
91
287
|
"knownRansomwareCampaignUse": "Unknown",
|
|
@@ -139,21 +335,6 @@
|
|
|
139
335
|
"CWE-78"
|
|
140
336
|
]
|
|
141
337
|
},
|
|
142
|
-
{
|
|
143
|
-
"cveID": "CVE-2025-4664",
|
|
144
|
-
"vendorProject": "Google",
|
|
145
|
-
"product": "Chromium",
|
|
146
|
-
"vulnerabilityName": "Google Chromium Loader Insufficient Policy Enforcement Vulnerability",
|
|
147
|
-
"dateAdded": "2025-05-15",
|
|
148
|
-
"shortDescription": "Google Chromium contains an insufficient policy enforcement vulnerability that allows a remote attacker to leak cross-origin data via a crafted HTML page.",
|
|
149
|
-
"requiredAction": "Apply mitigations per vendor instructions, follow applicable BOD 22-01 guidance for cloud services, or discontinue use of the product if mitigations are unavailable.",
|
|
150
|
-
"dueDate": "2025-06-05",
|
|
151
|
-
"knownRansomwareCampaignUse": "Unknown",
|
|
152
|
-
"notes": "https:\/\/chromereleases.googleblog.com\/2025\/05\/stable-channel-update-for-desktop_14.html ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-4664",
|
|
153
|
-
"cwes": [
|
|
154
|
-
"CWE-346"
|
|
155
|
-
]
|
|
156
|
-
},
|
|
157
338
|
{
|
|
158
339
|
"cveID": "CVE-2025-32756",
|
|
159
340
|
"vendorProject": "Fortinet",
|
|
@@ -1223,7 +1404,7 @@
|
|
|
1223
1404
|
"requiredAction": "Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.",
|
|
1224
1405
|
"dueDate": "2025-03-06",
|
|
1225
1406
|
"knownRansomwareCampaignUse": "Known",
|
|
1226
|
-
"notes": "https:\/\/simple-help.com\/kb---security-vulnerabilities-01-2025 ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2024-57727",
|
|
1407
|
+
"notes": "https:\/\/simple-help.com\/kb---security-vulnerabilities-01-2025 ; Additional CISA Mitigation Instructions: https:\/\/www.cisa.gov\/news-events\/cybersecurity-advisories\/aa25-163a ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2024-57727",
|
|
1227
1408
|
"cwes": [
|
|
1228
1409
|
"CWE-22"
|
|
1229
1410
|
]
|
|
@@ -3608,7 +3789,7 @@
|
|
|
3608
3789
|
"shortDescription": "NextGen Healthcare Mirth Connect contains a deserialization of untrusted data vulnerability that allows for unauthenticated remote code execution via a specially crafted request.",
|
|
3609
3790
|
"requiredAction": "Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.",
|
|
3610
3791
|
"dueDate": "2024-06-10",
|
|
3611
|
-
"knownRansomwareCampaignUse": "
|
|
3792
|
+
"knownRansomwareCampaignUse": "Known",
|
|
3612
3793
|
"notes": "This vulnerability affects a common open-source component, third-party library, or a protocol used by different products. Please check with specific vendors for information on patching status. For more information, please see: https:\/\/github.com\/nextgenhealthcare\/connect\/wiki\/4.4.1---What%27s-New ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2023-43208",
|
|
3613
3794
|
"cwes": [
|
|
3614
3795
|
"CWE-502"
|
|
@@ -3907,7 +4088,7 @@
|
|
|
3907
4088
|
"shortDescription": "Ivanti Endpoint Manager Cloud Service Appliance (EPM CSA) contains a code injection vulnerability that allows an unauthenticated user to execute malicious code with limited permissions (nobody).",
|
|
3908
4089
|
"requiredAction": "Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.",
|
|
3909
4090
|
"dueDate": "2024-04-15",
|
|
3910
|
-
"knownRansomwareCampaignUse": "
|
|
4091
|
+
"knownRansomwareCampaignUse": "Known",
|
|
3911
4092
|
"notes": "https:\/\/forums.ivanti.com\/s\/article\/SA-2021-12-02?language=en_US; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2021-44529",
|
|
3912
4093
|
"cwes": [
|
|
3913
4094
|
"CWE-94"
|
|
@@ -4132,7 +4313,7 @@
|
|
|
4132
4313
|
"shortDescription": "Fortinet FortiOS contains an out-of-bound write vulnerability that allows a remote unauthenticated attacker to execute code or commands via specially crafted HTTP requests.",
|
|
4133
4314
|
"requiredAction": "Apply mitigations per vendor instructions or discontinue use of the product if mitigations are unavailable.",
|
|
4134
4315
|
"dueDate": "2024-02-16",
|
|
4135
|
-
"knownRansomwareCampaignUse": "
|
|
4316
|
+
"knownRansomwareCampaignUse": "Known",
|
|
4136
4317
|
"notes": "https:\/\/fortiguard.fortinet.com\/psirt\/FG-IR-24-015 ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2024-21762",
|
|
4137
4318
|
"cwes": [
|
|
4138
4319
|
"CWE-787"
|
|
@@ -288,6 +288,7 @@ class FlatFileImporter(ABC):
|
|
|
288
288
|
plugin_name=plugin_name,
|
|
289
289
|
date_created=vuln.firstSeen,
|
|
290
290
|
date_last_updated=vuln.lastSeen,
|
|
291
|
+
due_date="", # Override the default factory, we want ScannerIntegration to handle this
|
|
291
292
|
)
|
|
292
293
|
except (KeyError, TypeError, ValueError) as e:
|
|
293
294
|
self.attributes.logger.error("Error parsing Wiz finding: %s", str(e), exc_info=True)
|
|
@@ -391,7 +392,8 @@ class FlatFileImporter(ABC):
|
|
|
391
392
|
for _ in range(start_line_number):
|
|
392
393
|
next(file)
|
|
393
394
|
if file.name.endswith(".csv"):
|
|
394
|
-
data
|
|
395
|
+
data = self.validater.data.to_dict("records")
|
|
396
|
+
header = list(self.validater.parsed_headers)
|
|
395
397
|
elif file.name.endswith(".xlsx"):
|
|
396
398
|
data, header = self.convert_xlsx_to_dict(file, start_line_number)
|
|
397
399
|
elif file.name.endswith(".json"):
|
|
@@ -432,33 +434,6 @@ class FlatFileImporter(ABC):
|
|
|
432
434
|
", ".join(extra_headers),
|
|
433
435
|
)
|
|
434
436
|
|
|
435
|
-
def convert_csv_to_dict(self, file: TextIO) -> tuple:
|
|
436
|
-
"""
|
|
437
|
-
Converts a csv file to a list of dictionaries
|
|
438
|
-
|
|
439
|
-
:param TextIO file: The csv file to convert
|
|
440
|
-
:return: Tuple of header and data from csv file
|
|
441
|
-
:rtype: tuple
|
|
442
|
-
"""
|
|
443
|
-
logger.debug("flatfileimporter: Converting csv to dict")
|
|
444
|
-
# if file is empty, error and exit
|
|
445
|
-
if not file.read(1):
|
|
446
|
-
error_and_exit("File is empty")
|
|
447
|
-
# Rewind file and skip lines until the start line is reached
|
|
448
|
-
file.seek(0)
|
|
449
|
-
for _ in range(getattr(self.attributes, "header_line_number", 0) or 0):
|
|
450
|
-
next(file)
|
|
451
|
-
reader = csv.DictReader(file)
|
|
452
|
-
|
|
453
|
-
header = [head for head in list(reader.fieldnames) if head]
|
|
454
|
-
|
|
455
|
-
if self.extra_headers_allowed:
|
|
456
|
-
self.handle_extra_headers(header=header)
|
|
457
|
-
|
|
458
|
-
data = list(reader)
|
|
459
|
-
logger.debug("flatfileimporter: Done converting csv to dict.")
|
|
460
|
-
return data, header
|
|
461
|
-
|
|
462
437
|
def convert_xlsx_to_dict(self, file: TextIO, start_line_number: int = 0) -> tuple:
|
|
463
438
|
"""
|
|
464
439
|
Converts a xlsx file to a list of dictionaries
|
|
@@ -561,145 +536,6 @@ class FlatFileImporter(ABC):
|
|
|
561
536
|
if asset not in self.data["assets"]:
|
|
562
537
|
self.data["assets"].append(asset)
|
|
563
538
|
|
|
564
|
-
@staticmethod
|
|
565
|
-
def check_status_codes(response_list: list) -> None:
|
|
566
|
-
"""
|
|
567
|
-
Check if any of the responses are not 200
|
|
568
|
-
|
|
569
|
-
:param list response_list: List of responses
|
|
570
|
-
:raises AssertionError: If any of the responses are not 200
|
|
571
|
-
:rtype: None
|
|
572
|
-
"""
|
|
573
|
-
for response in response_list:
|
|
574
|
-
if isinstance(response, requests.Response) and response.status_code != 200:
|
|
575
|
-
raise AssertionError(
|
|
576
|
-
f"Unable to {response.request.method} asset to RegScale.\n"
|
|
577
|
-
f"Code: {response.status_code}\nReason: {response.reason}"
|
|
578
|
-
f"\nPayload: {response.text}"
|
|
579
|
-
)
|
|
580
|
-
|
|
581
|
-
def update_due_dt(self, iss: Issue, kev_due_date: Optional[str], scanner: str, severity: str) -> Issue:
|
|
582
|
-
"""
|
|
583
|
-
Find the due date for the issue
|
|
584
|
-
|
|
585
|
-
:param Issue iss: RegScale Issue object
|
|
586
|
-
:param Optional[str] kev_due_date: The KEV due date
|
|
587
|
-
:param str scanner: The scanner
|
|
588
|
-
:param str severity: The severity of the issue
|
|
589
|
-
:return: RegScale Issue object
|
|
590
|
-
:rtype: Issue
|
|
591
|
-
"""
|
|
592
|
-
fmt = "%Y-%m-%d %H:%M:%S"
|
|
593
|
-
days = 30
|
|
594
|
-
if severity == "medium":
|
|
595
|
-
severity = "moderate"
|
|
596
|
-
if severity == "important":
|
|
597
|
-
severity = "high"
|
|
598
|
-
if severity not in ["low", "moderate", "high", "critical"]:
|
|
599
|
-
# An odd severity should be treated as low.
|
|
600
|
-
severity = "low"
|
|
601
|
-
try:
|
|
602
|
-
days = self.attributes.app.config["issues"][scanner][severity]
|
|
603
|
-
except KeyError:
|
|
604
|
-
self.attributes.logger.error(
|
|
605
|
-
"Unable to find severity '%s'\n defaulting to %i days\nPlease add %s to the init.yaml configuration",
|
|
606
|
-
severity,
|
|
607
|
-
days,
|
|
608
|
-
severity,
|
|
609
|
-
)
|
|
610
|
-
if kev_due_date and (datetime.strptime(kev_due_date, fmt) > datetime.now()):
|
|
611
|
-
iss.dueDate = kev_due_date
|
|
612
|
-
else:
|
|
613
|
-
iss.dueDate = datetime.strftime(
|
|
614
|
-
datetime.now() + timedelta(days=days),
|
|
615
|
-
fmt,
|
|
616
|
-
)
|
|
617
|
-
return iss
|
|
618
|
-
|
|
619
|
-
def _check_issue(self, issue: Issue) -> None:
|
|
620
|
-
"""
|
|
621
|
-
Check if the issue is in the data
|
|
622
|
-
|
|
623
|
-
:param Issue issue: The issue to check to prevent duplicates
|
|
624
|
-
:rtype: None
|
|
625
|
-
"""
|
|
626
|
-
if issue and issue not in self.data["issues"]:
|
|
627
|
-
self.data["issues"].append(issue)
|
|
628
|
-
|
|
629
|
-
def _check_issues(self, issues: List[Issue]) -> None:
|
|
630
|
-
"""
|
|
631
|
-
Check if the issues are in the data
|
|
632
|
-
|
|
633
|
-
:param List[Issue] issues: The issues to check to prevent duplicates
|
|
634
|
-
"""
|
|
635
|
-
for issue in issues:
|
|
636
|
-
self._check_issue(issue)
|
|
637
|
-
|
|
638
|
-
def check_and_close_issues(self, existing_issues: list[Issue]) -> None:
|
|
639
|
-
"""
|
|
640
|
-
Function to close issues that are no longer being reported in the export file
|
|
641
|
-
|
|
642
|
-
:param list[Issue] existing_issues: List of existing issues in RegScale
|
|
643
|
-
:rtype: None
|
|
644
|
-
"""
|
|
645
|
-
existing_cves = self.group_issues_by_cve_id(existing_issues)
|
|
646
|
-
parsed_cves = {issue.cve for issue in self.data["issues"] if issue.cve}
|
|
647
|
-
closed_issues = []
|
|
648
|
-
with create_progress_object() as close_issue_progress:
|
|
649
|
-
closing_issues = close_issue_progress.add_task(
|
|
650
|
-
"Comparing parsed issue(s) and existing issue(s)...",
|
|
651
|
-
total=len(existing_cves),
|
|
652
|
-
)
|
|
653
|
-
for cve, issues in existing_cves.items():
|
|
654
|
-
if cve not in parsed_cves:
|
|
655
|
-
for issue in issues:
|
|
656
|
-
if issue.status == "Closed":
|
|
657
|
-
continue
|
|
658
|
-
self.attributes.logger.debug("Closing issue #%s", issue.id)
|
|
659
|
-
issue.status = "Closed"
|
|
660
|
-
issue.dateCompleted = self.scan_date.strftime("%Y-%m-%d %H:%M:%S")
|
|
661
|
-
if issue.save():
|
|
662
|
-
self.attributes.logger.debug("Issue #%s closed", issue.id)
|
|
663
|
-
closed_issues.append(issue)
|
|
664
|
-
close_issue_progress.advance(closing_issues, advance=1)
|
|
665
|
-
self.log_and_save_closed_issues(closed_issues)
|
|
666
|
-
|
|
667
|
-
@staticmethod
|
|
668
|
-
def group_issues_by_cve_id(existing_issues: list[Issue]) -> dict[str, list[Issue]]:
|
|
669
|
-
"""
|
|
670
|
-
Function to group existing issues from RegScale by cve and returns a dictionary of cveId and issues
|
|
671
|
-
|
|
672
|
-
:param list[Issue] existing_issues: List of existing issues in RegScale
|
|
673
|
-
:returns: A dictionary of cveId and list of issues with the same cveId
|
|
674
|
-
:rtype: dict[str, list[Issue]]
|
|
675
|
-
"""
|
|
676
|
-
from collections import defaultdict
|
|
677
|
-
|
|
678
|
-
# create a dict with an empty list for each cve, so we can close issues that have duplicate CVEs
|
|
679
|
-
existing_cves = defaultdict(list)
|
|
680
|
-
# group issues by cve
|
|
681
|
-
for issue in existing_issues:
|
|
682
|
-
if issue.cve:
|
|
683
|
-
existing_cves[issue.cve].append(issue)
|
|
684
|
-
return existing_cves
|
|
685
|
-
|
|
686
|
-
def log_and_save_closed_issues(self, closed_issues: list[Issue]) -> None:
|
|
687
|
-
"""
|
|
688
|
-
Log and save the closed issues if any
|
|
689
|
-
|
|
690
|
-
:param list[Issue] closed_issues: List of closed issues to log and save
|
|
691
|
-
:rtype: None
|
|
692
|
-
"""
|
|
693
|
-
if len(closed_issues) > 0:
|
|
694
|
-
self.attributes.logger.info("Closed %i issue(s) in RegScale.", len(closed_issues))
|
|
695
|
-
ReportGenerator(
|
|
696
|
-
objects=closed_issues,
|
|
697
|
-
to_file=True,
|
|
698
|
-
report_name=f"{self.attributes.name}_closed_issues",
|
|
699
|
-
regscale_id=self.attributes.parent_id,
|
|
700
|
-
regscale_module=self.attributes.parent_module,
|
|
701
|
-
)
|
|
702
|
-
|
|
703
539
|
def _check_vuln(self, vuln_to_check: Union[Vulnerability, "IntegrationFinding"]) -> None:
|
|
704
540
|
"""
|
|
705
541
|
Check if the vuln is in the data
|
|
@@ -883,13 +719,16 @@ class FlatFileImporter(ABC):
|
|
|
883
719
|
continue
|
|
884
720
|
|
|
885
721
|
@classmethod
|
|
886
|
-
def common_scanner_options(
|
|
722
|
+
def common_scanner_options(
|
|
723
|
+
cls, message: str, prompt: str, import_name: str, support_component: bool = False
|
|
724
|
+
) -> Callable[[Callable], click.option]:
|
|
887
725
|
"""
|
|
888
726
|
Common options for container scanner integrations
|
|
889
727
|
|
|
890
728
|
:param str message: The message to display to the user
|
|
891
729
|
:param str prompt: The prompt to display to the user
|
|
892
730
|
:param str import_name: The name of the import function
|
|
731
|
+
:param bool support_component: Whether to support importing data to a component
|
|
893
732
|
:return: The decorated function
|
|
894
733
|
:rtype: Callable[[Callable], click.option]
|
|
895
734
|
"""
|
|
@@ -936,14 +775,35 @@ class FlatFileImporter(ABC):
|
|
|
936
775
|
cls=NotRequiredIf,
|
|
937
776
|
not_required_if=["s3_bucket", "s3_prefix"],
|
|
938
777
|
)(this_func)
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
778
|
+
if support_component:
|
|
779
|
+
# This will be the normal behavior for the imports in the future, but for now we will support it for Trivy, Grype, and OpenText
|
|
780
|
+
this_func = click.option(
|
|
781
|
+
"-id",
|
|
782
|
+
"-p",
|
|
783
|
+
"--regscale_ssp_id",
|
|
784
|
+
"--plan_id",
|
|
785
|
+
type=click.INT,
|
|
786
|
+
help="The ID number from RegScale of the System Security Plan.",
|
|
787
|
+
cls=NotRequiredIf,
|
|
788
|
+
not_required_if=["component_id"],
|
|
789
|
+
)(this_func)
|
|
790
|
+
this_func = click.option(
|
|
791
|
+
"-c",
|
|
792
|
+
"--component_id",
|
|
793
|
+
type=click.INT,
|
|
794
|
+
help="The ID number from RegScale of the Component.",
|
|
795
|
+
cls=NotRequiredIf,
|
|
796
|
+
not_required_if=["regscale_ssp_id"],
|
|
797
|
+
)(this_func)
|
|
798
|
+
else:
|
|
799
|
+
this_func = click.option(
|
|
800
|
+
"--regscale_ssp_id",
|
|
801
|
+
"-id",
|
|
802
|
+
type=click.INT,
|
|
803
|
+
help="The ID number from RegScale of the System Security Plan.",
|
|
804
|
+
prompt="Enter RegScale System Security Plan ID",
|
|
805
|
+
required=True,
|
|
806
|
+
)(this_func)
|
|
947
807
|
this_func = click.option(
|
|
948
808
|
"--scan_date",
|
|
949
809
|
"-sd",
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"""
|
|
2
|
+
This module contains the TaskSync class, which is used to sync tasks between RegScale and Jira.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
from typing import Literal
|
|
6
|
+
|
|
7
|
+
from regscale.models import Task
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class TaskSync:
|
|
11
|
+
"""
|
|
12
|
+
This class is used to sync tasks between RegScale and Jira.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
tasks: list[Task] = []
|
|
16
|
+
operation: Literal["create", "update", "close"] = ""
|
|
17
|
+
progress_message: str = ""
|
|
18
|
+
|
|
19
|
+
def __init__(self, tasks: list[Task], operation: Literal["create", "update", "close"]):
|
|
20
|
+
self.tasks = tasks
|
|
21
|
+
self.operation = operation
|
|
22
|
+
if operation == "create":
|
|
23
|
+
self.progress_message = f"[#f8b737]Creating {len(tasks)} task(s) in RegScale..."
|
|
24
|
+
elif operation == "update":
|
|
25
|
+
self.progress_message = f"[#f8b737]Updating {len(tasks)} task(s) in RegScale..."
|
|
26
|
+
elif operation == "close":
|
|
27
|
+
self.progress_message = f"[#f8b737]Closing {len(tasks)} task(s) in RegScale..."
|
|
@@ -8,7 +8,7 @@ import logging
|
|
|
8
8
|
# pylint: disable=C0415
|
|
9
9
|
import re
|
|
10
10
|
from datetime import datetime
|
|
11
|
-
from typing import Any, Iterator, Optional, TypeVar, TextIO
|
|
11
|
+
from typing import Any, Iterator, Optional, TypeVar, TextIO, Union
|
|
12
12
|
|
|
13
13
|
from openpyxl.reader.excel import load_workbook
|
|
14
14
|
|
|
@@ -63,14 +63,12 @@ class Qualys(FlatFileImporter):
|
|
|
63
63
|
self.required_headers = [
|
|
64
64
|
SEVERITY,
|
|
65
65
|
self.vuln_title,
|
|
66
|
-
EXPLOITABILITY,
|
|
67
66
|
CVE_ID,
|
|
68
67
|
SOLUTION,
|
|
69
68
|
DNS,
|
|
70
69
|
IP,
|
|
71
70
|
QG_HOST_ID,
|
|
72
71
|
OS,
|
|
73
|
-
NETBIOS,
|
|
74
72
|
FQDN,
|
|
75
73
|
]
|
|
76
74
|
logger = create_logger()
|
|
@@ -110,7 +108,7 @@ class Qualys(FlatFileImporter):
|
|
|
110
108
|
"isPublic": True,
|
|
111
109
|
"status": "Active (On Network)",
|
|
112
110
|
"assetCategory": "Hardware",
|
|
113
|
-
"qualysId": self.mapping.get_value(dat, QG_HOST_ID), # UUID from Nessus HostProperties tag
|
|
111
|
+
"qualysId": str(self.mapping.get_value(dat, QG_HOST_ID)), # UUID from Nessus HostProperties tag
|
|
114
112
|
"bLatestScan": True,
|
|
115
113
|
"bAuthenticatedScan": True,
|
|
116
114
|
"scanningTool": "Qualys",
|
|
@@ -177,7 +175,7 @@ class Qualys(FlatFileImporter):
|
|
|
177
175
|
return regscale_vuln
|
|
178
176
|
|
|
179
177
|
@staticmethod
|
|
180
|
-
def extract_float(s: str) ->
|
|
178
|
+
def extract_float(s: Union[str, float, int]) -> Optional[float]:
|
|
181
179
|
"""
|
|
182
180
|
Extract a float from a string
|
|
183
181
|
|
|
@@ -185,8 +183,9 @@ class Qualys(FlatFileImporter):
|
|
|
185
183
|
:return: Float extracted from string or None
|
|
186
184
|
:rtype: Any
|
|
187
185
|
"""
|
|
188
|
-
|
|
189
|
-
|
|
186
|
+
if isinstance(s, (float, int)):
|
|
187
|
+
return float(s)
|
|
188
|
+
if matches := re.findall(r"[-+]?[0-9]*\.?[0-9]+", s):
|
|
190
189
|
return float(matches[0])
|
|
191
190
|
else:
|
|
192
191
|
return None
|