regscale-cli 6.20.3.0__py3-none-any.whl → 6.20.4.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/integrations/commercial/__init__.py +1 -0
- regscale/integrations/commercial/jira.py +35 -16
- regscale/integrations/commercial/qualys/__init__.py +298 -28
- regscale/integrations/commercial/qualys/qualys_error_handler.py +519 -0
- regscale/integrations/commercial/qualys/scanner.py +222 -97
- regscale/integrations/commercial/synqly/assets.py +11 -1
- regscale/integrations/commercial/synqly/edr.py +4 -4
- regscale/integrations/commercial/synqly/ticketing.py +1 -1
- regscale/integrations/commercial/synqly/vulnerabilities.py +2 -2
- regscale/integrations/public/fedramp/fedramp_cis_crm.py +72 -42
- regscale/models/app_models/import_validater.py +20 -2
- regscale/models/integration_models/cisa_kev_data.json +97 -9
- regscale/models/integration_models/synqly_models/capabilities.json +1 -1
- regscale/models/integration_models/synqly_models/param.py +1 -1
- regscale/models/regscale_models/task.py +0 -1
- {regscale_cli-6.20.3.0.dist-info → regscale_cli-6.20.4.0.dist-info}/METADATA +13 -9
- {regscale_cli-6.20.3.0.dist-info → regscale_cli-6.20.4.0.dist-info}/RECORD +22 -21
- {regscale_cli-6.20.3.0.dist-info → regscale_cli-6.20.4.0.dist-info}/LICENSE +0 -0
- {regscale_cli-6.20.3.0.dist-info → regscale_cli-6.20.4.0.dist-info}/WHEEL +0 -0
- {regscale_cli-6.20.3.0.dist-info → regscale_cli-6.20.4.0.dist-info}/entry_points.txt +0 -0
- {regscale_cli-6.20.3.0.dist-info → regscale_cli-6.20.4.0.dist-info}/top_level.txt +0 -0
|
@@ -33,6 +33,7 @@ from regscale.models.regscale_models import (
|
|
|
33
33
|
from regscale.models.regscale_models.compliance_settings import ComplianceSettings
|
|
34
34
|
from regscale.models.regscale_models.control_implementation import ControlImplementationStatus
|
|
35
35
|
from regscale.utils.threading import ThreadSafeDict, ThreadSafeSet
|
|
36
|
+
from regscale.utils.version import RegscaleVersion
|
|
36
37
|
|
|
37
38
|
# For type annotations only
|
|
38
39
|
if TYPE_CHECKING:
|
|
@@ -62,6 +63,7 @@ NOT_IMPLEMENTED = ControlImplementationStatus.NotImplemented.value
|
|
|
62
63
|
PARTIALLY_IMPLEMENTED = ControlImplementationStatus.PartiallyImplemented.value
|
|
63
64
|
CONTROL_ID = "Control ID"
|
|
64
65
|
ALT_IMPLEMENTATION = "Alternate Implementation"
|
|
66
|
+
ALTERNATIVE_IMPLEMENTATION = "Alternative Implementation"
|
|
65
67
|
CAN_BE_INHERITED_CSP = "Can Be Inherited from CSP"
|
|
66
68
|
IMPACT_LEVEL = "Impact Level"
|
|
67
69
|
SYSTEM_NAME = "System Name"
|
|
@@ -75,7 +77,7 @@ STATUS_MAPPING = {
|
|
|
75
77
|
PARTIALLY_IMPLEMENTED: ControlImplementationStatus.PartiallyImplemented,
|
|
76
78
|
ControlImplementationStatus.Planned.value: ControlImplementationStatus.Planned,
|
|
77
79
|
"N/A": ControlImplementationStatus.NA,
|
|
78
|
-
|
|
80
|
+
ALTERNATIVE_IMPLEMENTATION: ControlImplementationStatus.Alternative,
|
|
79
81
|
ALT_IMPLEMENTATION: ControlImplementationStatus.Alternative,
|
|
80
82
|
}
|
|
81
83
|
|
|
@@ -98,6 +100,7 @@ RESPONSIBILITY_MAP = {
|
|
|
98
100
|
"bInherited": "Inherited",
|
|
99
101
|
}
|
|
100
102
|
REGSCALE_SSP_ID: int = 0
|
|
103
|
+
INITIAL_IMPORT = True
|
|
101
104
|
|
|
102
105
|
|
|
103
106
|
@lru_cache(maxsize=1)
|
|
@@ -227,7 +230,7 @@ def map_implementation_status(control_id: str, cis_data: dict) -> str:
|
|
|
227
230
|
return STATUS_MAPPING.get(status, ControlImplementationStatus.NotImplemented)
|
|
228
231
|
|
|
229
232
|
# Priority-based status determination
|
|
230
|
-
if any(status in ["N/A",
|
|
233
|
+
if any(status in ["N/A", ALTERNATIVE_IMPLEMENTATION] for status in status_counts):
|
|
231
234
|
status_ret = ControlImplementationStatus.NA
|
|
232
235
|
|
|
233
236
|
implemented_count = status_counts.get("Implemented", 0)
|
|
@@ -301,6 +304,43 @@ def clean_customer_responsibility(value: str):
|
|
|
301
304
|
return str(value)
|
|
302
305
|
|
|
303
306
|
|
|
307
|
+
def get_multi_status(record: dict) -> str:
|
|
308
|
+
"""
|
|
309
|
+
Function to get the multi-select status from the record
|
|
310
|
+
"""
|
|
311
|
+
status_list = []
|
|
312
|
+
status_map = {
|
|
313
|
+
"Implemented": ControlImplementationStatus.Implemented.value,
|
|
314
|
+
"Planned": ControlImplementationStatus.Implemented.Planned.value,
|
|
315
|
+
PARTIALLY_IMPLEMENTED: PARTIALLY_IMPLEMENTED,
|
|
316
|
+
"N/A": ControlImplementationStatus.NA.value,
|
|
317
|
+
NOT_IMPLEMENTED: NOT_IMPLEMENTED,
|
|
318
|
+
"Not Applicable": ControlImplementationStatus.NA.value,
|
|
319
|
+
ALTERNATIVE_IMPLEMENTATION: ControlImplementationStatus.Alternative.value,
|
|
320
|
+
ALT_IMPLEMENTATION: ControlImplementationStatus.Alternative.value,
|
|
321
|
+
}
|
|
322
|
+
# Get implementation status with default value
|
|
323
|
+
implementation_status = record.get("implementation_status", NOT_IMPLEMENTED)
|
|
324
|
+
|
|
325
|
+
# Handle empty or None status
|
|
326
|
+
if not implementation_status:
|
|
327
|
+
return NOT_IMPLEMENTED
|
|
328
|
+
|
|
329
|
+
if RegscaleVersion.meets_minimum_version("6.20.17.0"):
|
|
330
|
+
# Process multiple statuses
|
|
331
|
+
status_list = []
|
|
332
|
+
for status in implementation_status.split(","):
|
|
333
|
+
status = status.strip()
|
|
334
|
+
if status not in status_map:
|
|
335
|
+
logger.warning(f"Unknown implementation status: {status}")
|
|
336
|
+
continue
|
|
337
|
+
status_list.append(status_map[status])
|
|
338
|
+
return ",".join(status_list) if status_list else NOT_IMPLEMENTED
|
|
339
|
+
else:
|
|
340
|
+
# Legacy method - single status
|
|
341
|
+
return status_map.get(implementation_status, NOT_IMPLEMENTED)
|
|
342
|
+
|
|
343
|
+
|
|
304
344
|
def update_imp_objective(
|
|
305
345
|
leverage_auth_id: int,
|
|
306
346
|
existing_imp_obj: List[ImplementationObjective],
|
|
@@ -319,13 +359,6 @@ def update_imp_objective(
|
|
|
319
359
|
:rtype: None
|
|
320
360
|
:return: None
|
|
321
361
|
"""
|
|
322
|
-
status_map = {
|
|
323
|
-
"Implemented": ControlImplementationStatus.Implemented.value,
|
|
324
|
-
"Planned": ControlImplementationStatus.Implemented.Planned.value,
|
|
325
|
-
PARTIALLY_IMPLEMENTED: PARTIALLY_IMPLEMENTED,
|
|
326
|
-
"N/A": ControlImplementationStatus.NA.value,
|
|
327
|
-
NOT_IMPLEMENTED: NOT_IMPLEMENTED,
|
|
328
|
-
}
|
|
329
362
|
|
|
330
363
|
cis_record = record.get("cis", {})
|
|
331
364
|
crm_record = record.get("crm", {})
|
|
@@ -335,7 +368,10 @@ def update_imp_objective(
|
|
|
335
368
|
control_originations[ix] = control_origination.strip()
|
|
336
369
|
|
|
337
370
|
try:
|
|
338
|
-
|
|
371
|
+
if RegscaleVersion.meets_minimum_version("6.20.17.0"):
|
|
372
|
+
responsibility = ",".join(control_originations)
|
|
373
|
+
else:
|
|
374
|
+
responsibility = next(origin for origin in control_originations)
|
|
339
375
|
|
|
340
376
|
except StopIteration:
|
|
341
377
|
if imp.responsibility:
|
|
@@ -349,25 +385,28 @@ def update_imp_objective(
|
|
|
349
385
|
existing_pairs = {(obj.objectiveId, obj.implementationId) for obj in existing_imp_obj}
|
|
350
386
|
logger.debug(f"CRM Record: {crm_record}")
|
|
351
387
|
can_be_inherited_from_csp: str = crm_record.get("can_be_inherited_from_csp") or ""
|
|
388
|
+
cloud_responsibility = customer_responsibility if can_be_inherited_from_csp.lower() == "yes" else ""
|
|
389
|
+
customer_responsibility = customer_responsibility if can_be_inherited_from_csp.lower() != "yes" else ""
|
|
352
390
|
for objective in objectives:
|
|
353
391
|
current_pair = (objective.id, imp.id)
|
|
354
392
|
if current_pair not in existing_pairs:
|
|
355
393
|
if objective.securityControlId != imp.controlID:
|
|
356
394
|
# This is a bad match, do not save.
|
|
357
395
|
continue
|
|
396
|
+
|
|
358
397
|
imp_obj = ImplementationObjective(
|
|
359
398
|
id=0,
|
|
360
399
|
uuid="",
|
|
361
400
|
inherited=can_be_inherited_from_csp in ["Yes", "Partial"],
|
|
362
401
|
implementationId=imp.id,
|
|
363
|
-
status=
|
|
402
|
+
status=get_multi_status(cis_record),
|
|
364
403
|
objectiveId=objective.id,
|
|
365
404
|
notes=objective.name,
|
|
366
405
|
securityControlId=objective.securityControlId,
|
|
367
406
|
securityPlanId=REGSCALE_SSP_ID,
|
|
368
407
|
responsibility=responsibility,
|
|
369
|
-
cloudResponsibility=
|
|
370
|
-
customerResponsibility=
|
|
408
|
+
cloudResponsibility=cloud_responsibility,
|
|
409
|
+
customerResponsibility=customer_responsibility,
|
|
371
410
|
authorizationId=leverage_auth_id,
|
|
372
411
|
parentObjectiveId=objective.parentObjectiveId,
|
|
373
412
|
)
|
|
@@ -379,34 +418,20 @@ def update_imp_objective(
|
|
|
379
418
|
)
|
|
380
419
|
UPDATED_IMPLEMENTATION_OBJECTIVES.add(imp_obj)
|
|
381
420
|
else:
|
|
382
|
-
# NOTE: Don't overwrite the responsibility text and only append.
|
|
383
421
|
ex_obj = next((obj for obj in existing_imp_obj if obj.objectiveId == objective.id), None)
|
|
384
422
|
if ex_obj:
|
|
385
|
-
ex_obj.status =
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
ex_obj.cloudResponsibility = (
|
|
398
|
-
seperator.join([ex_obj.cloudResponsibility, customer_responsibility])
|
|
399
|
-
if ex_obj.cloudResponsibility != responsibility
|
|
400
|
-
else ex_obj.cloudResponsibility
|
|
401
|
-
)
|
|
402
|
-
if ex_obj.customerResponsibility:
|
|
403
|
-
ex_obj.customerResponsibility = (
|
|
404
|
-
seperator.join([ex_obj.customerResponsibility, customer_responsibility])
|
|
405
|
-
if ex_obj.cloudResponsibility != responsibility
|
|
406
|
-
else ex_obj.customerResponsibility
|
|
407
|
-
)
|
|
408
|
-
except TypeError:
|
|
409
|
-
logger.warning(f"Failed to update responsibility on Implementation Objective #{ex_obj.id}")
|
|
423
|
+
ex_obj.status = get_multi_status(cis_record)
|
|
424
|
+
if cloud_responsibility.strip():
|
|
425
|
+
logger.debug(
|
|
426
|
+
f"Updating Implementation Objective #{ex_obj.id} with responsibility: {responsibility}"
|
|
427
|
+
)
|
|
428
|
+
ex_obj.cloudResponsibility = cloud_responsibility
|
|
429
|
+
if customer_responsibility.strip():
|
|
430
|
+
logger.debug(
|
|
431
|
+
f"Updating Implementation Objective #{ex_obj.id} with cloud responsibility: {cloud_responsibility}"
|
|
432
|
+
)
|
|
433
|
+
ex_obj.customerResponsibility = customer_responsibility
|
|
434
|
+
|
|
410
435
|
UPDATED_IMPLEMENTATION_OBJECTIVES.add(ex_obj)
|
|
411
436
|
|
|
412
437
|
|
|
@@ -995,6 +1020,7 @@ def parse_cis_worksheet(file_path: click.Path, cis_sheet_name: str) -> dict:
|
|
|
995
1020
|
:return: The implementation status
|
|
996
1021
|
:rtype: str
|
|
997
1022
|
"""
|
|
1023
|
+
selected_status = []
|
|
998
1024
|
for col in [
|
|
999
1025
|
"Implemented",
|
|
1000
1026
|
ControlImplementationStatus.PartiallyImplemented,
|
|
@@ -1003,8 +1029,8 @@ def parse_cis_worksheet(file_path: click.Path, cis_sheet_name: str) -> dict:
|
|
|
1003
1029
|
ControlImplementationStatus.NA,
|
|
1004
1030
|
]:
|
|
1005
1031
|
if data_row[col]:
|
|
1006
|
-
|
|
1007
|
-
return ""
|
|
1032
|
+
selected_status.append(col)
|
|
1033
|
+
return ", ".join(selected_status) if selected_status else ""
|
|
1008
1034
|
|
|
1009
1035
|
# Function to extract the first non-empty control origination
|
|
1010
1036
|
def _extract_origination(data_row: pd.Series) -> str:
|
|
@@ -1227,7 +1253,8 @@ def _save_implementation_text(imp: ControlImplementation, customer_text: str, cl
|
|
|
1227
1253
|
imp.cloudImplementation = cloud_text
|
|
1228
1254
|
|
|
1229
1255
|
# Update parameters in background thread
|
|
1230
|
-
|
|
1256
|
+
if INITIAL_IMPORT:
|
|
1257
|
+
_spin_off_thread(parameter_merge, imp.id, imp.controlID)
|
|
1231
1258
|
|
|
1232
1259
|
# Save implementation changes
|
|
1233
1260
|
imp.save()
|
|
@@ -1255,6 +1282,7 @@ def parse_and_map_data(
|
|
|
1255
1282
|
crm_data=crm_data,
|
|
1256
1283
|
version=version,
|
|
1257
1284
|
)
|
|
1285
|
+
# Don't call this on re-import
|
|
1258
1286
|
update_customer_text()
|
|
1259
1287
|
|
|
1260
1288
|
report(error_set)
|
|
@@ -1330,6 +1358,7 @@ def create_new_security_plan(profile_id: int, system_name: str):
|
|
|
1330
1358
|
:rtype: SecurityPlan
|
|
1331
1359
|
:return: The created security plan
|
|
1332
1360
|
"""
|
|
1361
|
+
global INITIAL_IMPORT
|
|
1333
1362
|
compliance_settings = ComplianceSettings.get_by_current_tenant()
|
|
1334
1363
|
try:
|
|
1335
1364
|
compliance_setting = next(
|
|
@@ -1386,6 +1415,7 @@ def create_new_security_plan(profile_id: int, system_name: str):
|
|
|
1386
1415
|
build_implementations_dict(security_plan_id=ret.id)
|
|
1387
1416
|
|
|
1388
1417
|
else:
|
|
1418
|
+
INITIAL_IMPORT = False
|
|
1389
1419
|
ret = next((plan for plan in existing_plan), None)
|
|
1390
1420
|
logger.info(f"Found existing SSP# {ret.id}")
|
|
1391
1421
|
existing_imps = ControlImplementation.get_list_by_plan(ret.id)
|
|
@@ -185,10 +185,28 @@ class ImportValidater:
|
|
|
185
185
|
df = pandas.read_csv(file_path, skiprows=self.skip_rows - 1, on_bad_lines="warn")
|
|
186
186
|
else:
|
|
187
187
|
df = pandas.read_csv(file_path, on_bad_lines="warn")
|
|
188
|
+
|
|
189
|
+
# Check if the DataFrame is empty or has no columns
|
|
190
|
+
if df.empty or len(df.columns) == 0:
|
|
191
|
+
raise ValidationException(
|
|
192
|
+
f"The CSV file '{file_path}' appears to be empty or has no parseable columns. "
|
|
193
|
+
f"Please check that:\n"
|
|
194
|
+
f"1. The file contains data\n"
|
|
195
|
+
f"2. The file has proper column headers\n"
|
|
196
|
+
f"3. The skip_rows parameter ({self.skip_rows}) is correct for this file format"
|
|
197
|
+
)
|
|
198
|
+
|
|
188
199
|
if self.ignore_unnamed:
|
|
189
200
|
df = df.loc[:, ~df.columns.str.contains("^Unnamed")]
|
|
190
|
-
except pandas.errors.
|
|
191
|
-
raise ValidationException(
|
|
201
|
+
except pandas.errors.EmptyDataError as e:
|
|
202
|
+
raise ValidationException(
|
|
203
|
+
f"The CSV file '{file_path}' is empty or contains no data. "
|
|
204
|
+
f"Please verify the file contains valid CSV data with headers. "
|
|
205
|
+
f"If using skip_rows ({self.skip_rows}), ensure there are enough rows in the file."
|
|
206
|
+
) from e
|
|
207
|
+
except pandas.errors.ParserError as e:
|
|
208
|
+
raise ValidationException(f"Unable to parse the {CSV} file: {file_path}. Error: {e}") from e
|
|
209
|
+
|
|
192
210
|
self.validate_headers(df.columns)
|
|
193
211
|
df = df.fillna("")
|
|
194
212
|
return df
|
|
@@ -1,20 +1,108 @@
|
|
|
1
1
|
{
|
|
2
2
|
"title": "CISA Catalog of Known Exploited Vulnerabilities",
|
|
3
|
-
"catalogVersion": "2025.06.
|
|
4
|
-
"dateReleased": "2025-06-
|
|
5
|
-
"count":
|
|
3
|
+
"catalogVersion": "2025.06.25",
|
|
4
|
+
"dateReleased": "2025-06-25T16:52:26.9744Z",
|
|
5
|
+
"count": 1370,
|
|
6
6
|
"vulnerabilities": [
|
|
7
|
+
{
|
|
8
|
+
"cveID": "CVE-2019-6693",
|
|
9
|
+
"vendorProject": "Fortinet",
|
|
10
|
+
"product": "FortiOS",
|
|
11
|
+
"vulnerabilityName": "Fortinet FortiOS Use of Hard-Coded Credentials Vulnerability",
|
|
12
|
+
"dateAdded": "2025-06-25",
|
|
13
|
+
"shortDescription": "Fortinet FortiOS contains a use of hard-coded credentials vulnerability that could allow an attacker to cipher sensitive data in FortiOS configuration backup file via knowledge of the hard-coded key. ",
|
|
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-16",
|
|
16
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
17
|
+
"notes": "https:\/\/fortiguard.com\/advisory\/FG-IR-19-007 ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2019-6693",
|
|
18
|
+
"cwes": [
|
|
19
|
+
"CWE-798"
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"cveID": "CVE-2024-0769",
|
|
24
|
+
"vendorProject": "D-Link",
|
|
25
|
+
"product": "DIR-859 Router",
|
|
26
|
+
"vulnerabilityName": " D-Link DIR-859 Router Path Traversal Vulnerability",
|
|
27
|
+
"dateAdded": "2025-06-25",
|
|
28
|
+
"shortDescription": "D-Link DIR-859 routers contain a path traversal vulnerability in the file \/hedwig.cgi of the component HTTP POST Request Handler. Manipulation of the argument service with the input ..\/..\/..\/..\/htdocs\/webinc\/getcfg\/DHCPS6.BRIDGE-1.xml allows for the leakage of session data potentially enabling privilege escalation and unauthorized control of the device. This vulnerability affects legacy D-Link products. All associated hardware revisions have reached their end-of-life (EOL) or end-of-service (EOS) life cycle and should be retired and replaced per vendor instructions.",
|
|
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-16",
|
|
31
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
32
|
+
"notes": "https:\/\/supportannouncement.us.dlink.com\/announcement\/publication.aspx?name=SAP10371 ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2024-0769",
|
|
33
|
+
"cwes": [
|
|
34
|
+
"CWE-22"
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"cveID": "CVE-2024-54085",
|
|
39
|
+
"vendorProject": "AMI",
|
|
40
|
+
"product": "MegaRAC SPx",
|
|
41
|
+
"vulnerabilityName": "AMI MegaRAC SPx Authentication Bypass by Spoofing Vulnerability",
|
|
42
|
+
"dateAdded": "2025-06-25",
|
|
43
|
+
"shortDescription": "AMI MegaRAC SPx contains an authentication bypass by spoofing vulnerability in the Redfish Host Interface. A successful exploitation of this vulnerability may lead to a loss of confidentiality, integrity, and\/or availability.",
|
|
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-07-16",
|
|
46
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
47
|
+
"notes": "This vulnerability could affect an open-source component, third-party library, protocol, or proprietary implementation that could be used by different products. For more information, please see: https:\/\/go.ami.com\/hubfs\/Security%20Advisories\/2025\/AMI-SA-2025003.pdf ; https:\/\/security.netapp.com\/advisory\/ntap-20250328-0003\/ ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2024-54085",
|
|
48
|
+
"cwes": [
|
|
49
|
+
"CWE-290"
|
|
50
|
+
]
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"cveID": "CVE-2023-0386",
|
|
54
|
+
"vendorProject": "Linux",
|
|
55
|
+
"product": "Kernel",
|
|
56
|
+
"vulnerabilityName": "Linux Kernel Improper Ownership Management Vulnerability",
|
|
57
|
+
"dateAdded": "2025-06-17",
|
|
58
|
+
"shortDescription": "Linux Kernel contains an improper ownership management vulnerability, where unauthorized access to the execution of the setuid file with capabilities was found in the Linux kernel\u2019s OverlayFS subsystem in how a user copies a capable file from a nosuid mount into another mount. This uid mapping bug allows a local user to escalate their privileges on the system.",
|
|
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-07-08",
|
|
61
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
62
|
+
"notes": "This vulnerability affects a common open-source component, third-party library, or a protocol used by different products. For more information, please see: https:\/\/git.kernel.org\/pub\/scm\/linux\/kernel\/git\/torvalds\/linux.git\/commit\/?id=4f11ada10d0a ; https:\/\/access.redhat.com\/security\/cve\/cve-2023-0386 ; https:\/\/security.netapp.com\/advisory\/ntap-20230420-0004\/ ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2023-0386",
|
|
63
|
+
"cwes": [
|
|
64
|
+
"CWE-282"
|
|
65
|
+
]
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"cveID": "CVE-2023-33538",
|
|
69
|
+
"vendorProject": "TP-Link",
|
|
70
|
+
"product": "Multiple Routers",
|
|
71
|
+
"vulnerabilityName": "TP-Link Multiple Routers Command Injection Vulnerability",
|
|
72
|
+
"dateAdded": "2025-06-16",
|
|
73
|
+
"shortDescription": "TP-Link TL-WR940N V2\/V4, TL-WR841N V8\/V10, and TL-WR740N V1\/V2 contain a command injection vulnerability via the component \/userRpm\/WlanNetworkRpm. The impacted products could be end-of-life (EoL) and\/or end-of-service (EoS). Users should discontinue product utilization.",
|
|
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-07-07",
|
|
76
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
77
|
+
"notes": "https:\/\/www.tp-link.com\/nordic\/support\/faq\/3562\/ ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2023-33538",
|
|
78
|
+
"cwes": [
|
|
79
|
+
"CWE-77"
|
|
80
|
+
]
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
"cveID": "CVE-2025-43200",
|
|
84
|
+
"vendorProject": "Apple",
|
|
85
|
+
"product": "Multiple Products",
|
|
86
|
+
"vulnerabilityName": "Apple Multiple Products Unspecified Vulnerability",
|
|
87
|
+
"dateAdded": "2025-06-16",
|
|
88
|
+
"shortDescription": "Apple iOS, iPadOS, macOS, watchOS, and visionOS, contain an unspecified vulnerability when processing a maliciously crafted photo or video shared via an iCloud Link.",
|
|
89
|
+
"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
|
+
"dueDate": "2025-07-07",
|
|
91
|
+
"knownRansomwareCampaignUse": "Unknown",
|
|
92
|
+
"notes": "https:\/\/support.apple.com\/en-us\/122174 ; https:\/\/support.apple.com\/en-us\/122173 ; https:\/\/support.apple.com\/en-us\/122900 ; https:\/\/support.apple.com\/en-us\/122901 ; https:\/\/support.apple.com\/en-us\/122902 ; https:\/\/support.apple.com\/en-us\/122903 ; https:\/\/support.apple.com\/en-us\/122904 ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-43200",
|
|
93
|
+
"cwes": []
|
|
94
|
+
},
|
|
7
95
|
{
|
|
8
96
|
"cveID": "CVE-2025-33053",
|
|
9
|
-
"vendorProject": "
|
|
10
|
-
"product": "
|
|
11
|
-
"vulnerabilityName": "
|
|
97
|
+
"vendorProject": "Microsoft",
|
|
98
|
+
"product": "Windows",
|
|
99
|
+
"vulnerabilityName": " Microsoft Windows External Control of File Name or Path Vulnerability",
|
|
12
100
|
"dateAdded": "2025-06-10",
|
|
13
|
-
"shortDescription": "
|
|
101
|
+
"shortDescription": "Microsoft Windows contains an external control of file name or path vulnerability that could allow an attacker to execute code from a remote WebDAV location specified by the WorkingDirectory attribute of Internet Shortcut files.",
|
|
14
102
|
"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
103
|
"dueDate": "2025-07-01",
|
|
16
104
|
"knownRansomwareCampaignUse": "Unknown",
|
|
17
|
-
"notes": "
|
|
105
|
+
"notes": "https:\/\/msrc.microsoft.com\/update-guide\/en-US\/vulnerability\/CVE-2025-33053 ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-33053",
|
|
18
106
|
"cwes": [
|
|
19
107
|
"CWE-73"
|
|
20
108
|
]
|
|
@@ -29,7 +117,7 @@
|
|
|
29
117
|
"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
118
|
"dueDate": "2025-07-01",
|
|
31
119
|
"knownRansomwareCampaignUse": "Unknown",
|
|
32
|
-
"notes": "https:\/\/github.com\/wazuh\/wazuh\/security\/advisories\/GHSA-hcrc-79hj-m3qh ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-24016",
|
|
120
|
+
"notes": "https:\/\/wazuh.com\/blog\/addressing-the-cve-2025-24016-vulnerability\/ ; https:\/\/github.com\/wazuh\/wazuh\/security\/advisories\/GHSA-hcrc-79hj-m3qh ; https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2025-24016",
|
|
33
121
|
"cwes": [
|
|
34
122
|
"CWE-502"
|
|
35
123
|
]
|