Security Vulnerability Report
中文
CVE-2025-46774 CVSS 7.5 HIGH

CVE-2025-46774

Published: 2025-10-14 16:15:39
Last Modified: 2025-10-22 16:47:22

Description

An Improper Verification of Cryptographic Signature vulnerability [CWE-347] in FortiClient MacOS installer version 7.4.2 and below, version 7.2.9 and below, 7.0 all versions may allow a local user to escalate their privileges via FortiClient related executables.

CVSS Details

CVSS Score
7.5
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H

Configurations (Affected Products)

cpe:2.3:a:fortinet:forticlient:*:*:*:*:*:macos:*:* - VULNERABLE
cpe:2.3:a:fortinet:forticlient:*:*:*:*:*:macos:*:* - VULNERABLE
FortiClient MacOS 7.0(所有版本)
FortiClient MacOS 7.2.9及以下
FortiClient MacOS 7.4.2及以下

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-46774 PoC Concept - FortiClient MacOS Privilege Escalation # Note: This is a conceptual proof-of-concept based on the vulnerability description. # The vulnerability exists in FortiClient MacOS installer due to improper # verification of cryptographic signatures (CWE-347). import os import subprocess import sys # Step 1: Identify FortiClient installation paths FORTICLIENT_PATHS = [ "/Library/Application Support/Fortinet/FortiClient/", "/Applications/FortiClient.app/Contents/Resources/", "/usr/local/bin/fctupdate" ] def find_forticlient_executables(): """Locate FortiClient-related executables on the system.""" found_executables = [] for path in FORTICLIENT_PATHS: if os.path.exists(path): for root, dirs, files in os.walk(path): for file in files: full_path = os.path.join(root, file) if os.access(full_path, os.X_OK): found_executables.append(full_path) return found_executables def check_signature(executable_path): """Check the code signature of an executable.""" try: result = subprocess.run( ["codesign", "-dv", "--verbose=4", executable_path], capture_output=True, text=True ) return result.returncode == 0 except Exception as e: return False def exploit_concept(): """ Conceptual exploitation flow: 1. Locate FortiClient executables 2. Identify those with weak signature verification 3. Replace or symlink with malicious payload 4. Trigger execution via FortiClient installer mechanism 5. Achieve privilege escalation """ executables = find_forticlient_executables() print(f"[*] Found {len(executables)} FortiClient executables") for exe in executables: signed = check_signature(exe) if not signed: print(f"[!] Unsigned executable found: {exe}") # In a real exploit, attacker would replace this with # a malicious binary that gets executed with elevated privileges print("[*] PoC concept demonstration complete") print("[*] Refer to Fortinet PSIRT FG-IR-25-126 for official guidance") if __name__ == "__main__": if os.geteuid() == 0: print("[!] Already running as root") else: print(f"[*] Current UID: {os.geteuid()}") exploit_concept()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-46774", "sourceIdentifier": "[email protected]", "published": "2025-10-14T16:15:38.500", "lastModified": "2025-10-22T16:47:22.450", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "An Improper Verification of Cryptographic Signature vulnerability [CWE-347] in FortiClient MacOS installer version 7.4.2 and below, version 7.2.9 and below, 7.0 all versions may allow a local user to escalate their privileges via FortiClient related executables."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:H", "baseScore": 7.5, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 0.8, "impactScore": 6.0}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H", "baseScore": 7.8, "baseSeverity": "HIGH", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "HIGH"}, "exploitabilityScore": 1.8, "impactScore": 5.9}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-347"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:fortinet:forticlient:*:*:*:*:*:macos:*:*", "versionStartIncluding": "7.0.0", "versionEndExcluding": "7.2.10", "matchCriteriaId": "1557746B-A90F-4626-A5DA-9B68D6A3CA3C"}, {"vulnerable": true, "criteria": "cpe:2.3:a:fortinet:forticlient:*:*:*:*:*:macos:*:*", "versionStartIncluding": "7.4.0", "versionEndExcluding": "7.4.4", "matchCriteriaId": "35B10AC0-1B23-47AF-B176-1FAB17A32C3C"}]}]}], "references": [{"url": "https://fortiguard.fortinet.com/psirt/FG-IR-25-126", "source": "[email protected]", "tags": ["Vendor Advisory"]}]}}