🇰🇷 한글 설명
Linux 커널의 x86/coco 아키텍처에서 CoCo(Confidential Computing) 시스템이 난수 생성기(RNG)를 초기화할 때 RDRAND 명령어를 사용하여 엔트로피를 확보하도록 요구하는 취약점이 해결되었습니다. CoCo 환경에서는 호스트를 신뢰할 수 없으므로 RDRAND가 유일한 엔트로피 소스이며, 이것이 실패할 경우 시스템 보안이 무너질 수 있습니다.
💡 쉬운 설명
보안이 중요한 가상 환경에서 암호화에 필요한 '무작위 숫자'를 만드는 과정에 문제가 생길 수 있는 결함입니다. 이를 방지하기 위해 CPU의 특수 기능을 사용하여 안전한 무작위 숫자를 반드시 생성하도록 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
x86/coco: Require seeding RNG with RDRAND on CoCo systems
There are few uses of CoCo that don't rely on working cryptography and
hence a working RNG. Unfortunately, the CoCo threat model means that the
VM host cannot be trusted and may actively work against guests to
extract secrets or manipulate computation. Since a malicious host can
modify or observe nearly all inputs to guests, the only remaining source
of entropy for CoCo guests is RDRAND.
If RDRAND is broken -- due to CPU hardware fault -- the RNG as a whole
is meant to gracefully continue on gathering entropy from other sources,
but since there aren't other sources on CoCo, this is catastrophic.
This is mostly a concern at boot time when initially seeding the RNG, as
after that the consequences of a broken RDRAND are much more
theoretical.
So, try at boot to seed the RNG using 256 bits of RDRAND output. If this
fails, panic(). This will also trigger if the system is booted without
RDRAND, as RDRAND is essential for a safe CoCo boot.
Add this deliberately to be "just a CoCo x86 driver feature" and not
part of the RNG itself. Many device drivers and platforms have some
desire to contribute something to the RNG, and add_device_randomness()
is specifically meant for this purpose.
Any driver can call it with seed data of any quality, or even garbage
quality, and it can only possibly make the quality of the RNG better or
have no effect, but can never make it worse.
Rather than trying to build something into the core of the RNG, consider
the particular CoCo issue just a CoCo issue, and therefore separate it
all out into driver (well, arch/platform) code.
[ bp: Massage commit message. ]
📍 영향받는 시스템
RDRAND 기반 엔트로피 시딩이 누락된 CoCo 환경의 Linux 커널 (x86/coco)
⚔️ 공격 벡터
악의적인 호스트가 가상 머신의 엔트로피 소스를 조작하거나 관찰하여 암호화 키를 탈취하는 방식
🛡️ 대응 방법
RDRAND 시딩 로직이 포함된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 패치가 적용된 최신 버전인지 확인합니다.