{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-35875","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-05-17T13:50:33.110Z","datePublished":"2024-05-19T08:34:32.767Z","dateUpdated":"2026-08-05T11:30:35.909Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:30:35.909Z"},"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nx86/coco: Require seeding RNG with RDRAND on CoCo systems\n\nThere are few uses of CoCo that don't rely on working cryptography and\nhence a working RNG. Unfortunately, the CoCo threat model means that the\nVM host cannot be trusted and may actively work against guests to\nextract secrets or manipulate computation. Since a malicious host can\nmodify or observe nearly all inputs to guests, the only remaining source\nof entropy for CoCo guests is RDRAND.\n\nIf RDRAND is broken -- due to CPU hardware fault -- the RNG as a whole\nis meant to gracefully continue on gathering entropy from other sources,\nbut since there aren't other sources on CoCo, this is catastrophic.\nThis is mostly a concern at boot time when initially seeding the RNG, as\nafter that the consequences of a broken RDRAND are much more\ntheoretical.\n\nSo, try at boot to seed the RNG using 256 bits of RDRAND output. If this\nfails, panic(). This will also trigger if the system is booted without\nRDRAND, as RDRAND is essential for a safe CoCo boot.\n\nAdd this deliberately to be \"just a CoCo x86 driver feature\" and not\npart of the RNG itself. Many device drivers and platforms have some\ndesire to contribute something to the RNG, and add_device_randomness()\nis specifically meant for this purpose.\n\nAny driver can call it with seed data of any quality, or even garbage\nquality, and it can only possibly make the quality of the RNG better or\nhave no effect, but can never make it worse.\n\nRather than trying to build something into the core of the RNG, consider\nthe particular CoCo issue just a CoCo issue, and therefore separate it\nall out into driver (well, arch/platform) code.\n\n  [ bp: Massage commit message. ]"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.4,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The adversary defined by the CoCo threat model is the untrusted hypervisor/host, which attacks the guest through the virtual platform it controls (CPUID, boot cmdline, TSC, interrupt and device inputs) rather than through the guest's network stack. This is read/write access to the vulnerable component's platform, i.e. local.\nAC:L - The attacker directly creates the vulnerable condition — the host supplies guest CPUID and can simply not advertise X86_FEATURE_RDRAND, after which arch_get_random_longs() returns 0 and every remaining entropy input (cmdline, TSC, bootloader seed, interrupt/device timings) is host-supplied or host-observable. No unpredictable precondition is required; the same state also arises unaided when x86_init_rdrand() disables faulty RDRAND.\nPR:N - Privileges are measured against the vulnerable component — the CoCo guest kernel — and the host holds no account, credential, or privilege inside the guest at all. The weak seeding happens unconditionally during guest boot with no guest-side authentication.\nUI:N - The defective seeding occurs automatically in setup_arch() on every guest boot; no action by any guest user or administrator is needed.\nS:U - The vulnerable component (guest kernel RNG seeding) and the impacted component (that same guest's kernel and userspace secrets) sit in the same security authority. No guest-to-host escape or IOMMU boundary is crossed.\nC:H - With RDRAND absent the entire input pool consists of values the host chose or can observe, so the host can reconstruct the CRNG state and predict all get_random_bytes()/getrandom()/urandom output — disk-encryption keys, TLS/SSH private keys, session keys and IVs generated in the guest. That is a complete, total loss of the confidentiality guarantee CoCo exists to provide.\nI:H - Predictable nonces and keys let the attacker forge signatures, authentication tokens and MACs produced inside the guest, and predictable net_secret/ts_secret enable off-path TCP sequence and syncookie forgery for data injection. Predictable stack canaries (boot_init_stack_canary runs straight off the unseeded pool) and predictable randomization secrets additionally hand the attacker reliable control-flow-hijack primitives.\nA:H - Knowledge of the boot stack canary and other kernel randomization secrets converts otherwise-unreliable memory-corruption bugs into dependable code execution and full guest takeover, and predictable TCP ISN/syncookie secrets permit off-path RST injection that tears down the guest's connections."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["arch/x86/coco/core.c","arch/x86/include/asm/coco.h","arch/x86/kernel/setup.c"],"versions":[{"version":"d8aa7eea78a1401cce39b3bb61ead0150044a3df","lessThan":"22943e4fe4b3a2dcbadc3d38d5bf840bbdbfe374","status":"affected","versionType":"git"},{"version":"d8aa7eea78a1401cce39b3bb61ead0150044a3df","lessThan":"453b5f2dec276c1bb4ea078bf8c0da57ee4627e5","status":"affected","versionType":"git"},{"version":"d8aa7eea78a1401cce39b3bb61ead0150044a3df","lessThan":"08044b08b37528b82f70a87576c692b4e4b7716e","status":"affected","versionType":"git"},{"version":"d8aa7eea78a1401cce39b3bb61ead0150044a3df","lessThan":"99485c4c026f024e7cb82da84c7951dbe3deb584","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["arch/x86/coco/core.c","arch/x86/include/asm/coco.h","arch/x86/kernel/setup.c"],"versions":[{"version":"4.15","status":"affected"},{"version":"0","lessThan":"4.15","status":"unaffected","versionType":"semver"},{"version":"6.1.85","lessThanOrEqual":"6.1.*","status":"unaffected","versionType":"semver"},{"version":"6.6.26","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.8.5","lessThanOrEqual":"6.8.*","status":"unaffected","versionType":"semver"},{"version":"6.9","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.15","versionEndExcluding":"6.1.85"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.15","versionEndExcluding":"6.6.26"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.15","versionEndExcluding":"6.8.5"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.15","versionEndExcluding":"6.9"}]}]}],"references":[{"url":"https://git.kernel.org/stable/c/22943e4fe4b3a2dcbadc3d38d5bf840bbdbfe374"},{"url":"https://git.kernel.org/stable/c/453b5f2dec276c1bb4ea078bf8c0da57ee4627e5"},{"url":"https://git.kernel.org/stable/c/08044b08b37528b82f70a87576c692b4e4b7716e"},{"url":"https://git.kernel.org/stable/c/99485c4c026f024e7cb82da84c7951dbe3deb584"}],"title":"x86/coco: Require seeding RNG with RDRAND on CoCo systems","x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2024-06-17T17:38:48.795160Z","id":"CVE-2024-35875","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2024-06-17T17:41:42.620Z"}},{"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2024-08-02T03:21:49.026Z"},"title":"CVE Program Container","references":[{"url":"https://git.kernel.org/stable/c/22943e4fe4b3a2dcbadc3d38d5bf840bbdbfe374","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/453b5f2dec276c1bb4ea078bf8c0da57ee4627e5","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/08044b08b37528b82f70a87576c692b4e4b7716e","tags":["x_transferred"]},{"url":"https://git.kernel.org/stable/c/99485c4c026f024e7cb82da84c7951dbe3deb584","tags":["x_transferred"]}]}]}}