EntrySign: AMD Zen 프로세서에 영향을 미치는 취약점

EntrySign 취약점 로고

최근에는 Google 엔지니어가 발표했습니다. 심각한 취약점으로 식별된 것에 대한 세부 정보 CVE-2024-56161. 이름으로 세례를 받다 엔트리 사인, 이 실패 디지털 서명 검증 메커니즘을 회피할 수 있습니다. Zen 마이크로아키텍처의 첫 4세대를 사용하는 AMD 프로세서에서 마이크로코드를 업데이트하는 중입니다.

엔트리 사인 광범위한 프로세서에 영향을 미칩니다. 공격자가 마이크로코드의 무결성을 보장하는 보안 제어를 우회하여 하드웨어 동작을 악의적으로 수정할 수 있는 가능성이 있습니다.

취약성에 대해

이 취약점의 원인은 AES-CMAC 알고리즘 사용에 있습니다. 디지털 서명 검증 시 신뢰할 수 있는 해시 함수 대신 사용됩니다. AMD는 이 알고리즘을 사용하여 개인 RSA 키를 사용하고 패치에 공개 키를 추가하여 마이크로코드에 서명했습니다.

검증 과정 제조 과정에서 내장된 공개 키의 해시값과 패치에 지정된 키의 해시값을 프로세서가 비교하는 과정이 포함됩니다. 하지만, 실제로 해시 함수가 아니라 인증 코드인 CMAC가 사용되었기 때문에 메시지 전송 시 보안 침해가 발생했습니다.

CMAC은 AES 알고리즘을 기반으로 합니다 XOR 연산을 사용하여 데이터 블록을 결합합니다.하지만 충돌 방지 기능이 설계되지 않았기 때문에 암호화 키를 알고 있는 공격자는 입력의 변화를 보상하는 중간값을 계산할 수 있고, 연산의 결과는 변경되지 않습니다.

인텔과 AMD는 모두 고유한 RISC 기반 마이크로코드 명령어 세트를 설계했는데, 둘 다 문서화되지는 않았지만 개념적으로는 ARM이나 RISC-V와 같은 다른 RISC 명령어 세트와 유사했습니다. 소프트웨어와 마찬가지로 복잡한 하드웨어를 올바르게 구현하는 것은 어려운 일입니다. 역사적으로, 이로 인해 1994년 펜티엄의 인텔 FDIV 버그 등 여러 가지 잘 알려진 버그가 발생했습니다.

AMD는 단일 암호화 키를 제공합니다 AES-CMAC에 대한 Zen 1부터 Zen 4까지 모든 프로세서에서즉, 누군가가 한 CPU에서 이 키를 추출하면 다른 모든 CPU에 이를 적용할 수 있다는 의미입니다. 실제로 연구자들은 이러한 프로세서가 NIST SP 800-38B 지침의 예에서 가져온 알려진 키를 사용한다는 것을 발견했습니다.

이론적으로 이를 통해 잘못된 패치를 생성할 수 있습니다. 패치의 공개 키를 동일한 해시를 생성하는 키로 교체하여 디지털 서명에 대한 충돌을 선택합니다. 이러한 충돌은 마이크로코드에 무작위적인 것처럼 보이는 추가 데이터 블록을 추가하여 수정된 패치가 AMD의 원래 디지털 서명을 유지하도록 함으로써 실현됩니다.

EntrySign, 공격자가 보안 제어를 우회할 수 있는 CVE-2024-56161 취약점

이 문제를 해결하려면AMD 프로세서에서 마이크로코드를 조작하는 새로운 방법을 탐색하기 위해 Google 엔지니어는 그들은 Zentool을 개발했습니다., 마이크로코드 패치 검사를 위한 결합된 도구 모음으로, 제한된 분해 및 제한된 양의 역엔지니어링 어셈블리를 사용하여 마이크로코드 패치를 생성합니다.

Zentool은 마이크로코드의 분석 및 수정을 용이하게 하기 위해 설계되었습니다.매개변수를 편집하고 명령을 교체하는 것부터 수정된 마이크로코드를 CPU에 로드하고 패치의 디지털 서명을 수정하는 것까지 가능한 일련의 명령을 제공합니다.

예를 들어, "zentool edit" 명령은 마이크로코드 파일의 매개변수를 편집할 수 있게 하고, "zentool print" 명령은 마이크로코드의 내부 구조에 대한 자세한 정보를 표시합니다. 또한, «zentool load»는 마이크로코드를 CPU에 로드하고, «zentool resign»은 변경 사항을 고려하여 디지털 서명을 다시 계산합니다. 또한 이 패키지에는 마이크로코드에서 직접 작업할 수 있는 어셈블러 및 디스어셈블러 기능을 제공하는 mcas와 mcop와 같은 유틸리티가 포함되어 있습니다.

의 능력 Zentool을 사용하면 개발자가 자체 패치를 준비하고 적용할 수 있습니다. AMD Zen 프로세서에서. 설명적인 예로, RDRAND 명령어의 논리를 수정하는 패치가 준비되었습니다. 이 패치를 적용한 후, RDRAND 명령어는 의사난수 시퀀스를 생성하는 것을 멈추고 숫자 4를 지속적으로 반환하기 시작합니다. 이는 마이크로코드를 수정하고 프로세서의 예상 동작을 변경할 수 있는 힘을 보여줍니다.

언급 할 가치가 있습니다. Zentool에는 자세한 가이드가 함께 제공됩니다. AMD 마이크로코드에 사용된 RISC86 마이크로아키텍처에 대한 정보와 사용자 정의 마이크로코드를 만드는 방법을 설명하는 지침서입니다. 이 가이드에서는 새로운 프로세서 명령어를 설계하는 방법, 기존 명령어의 동작을 수정하는 방법, 해당 변경 사항을 CPU에 직접 로드하는 방법 등을 보여줍니다.

마지막으로, 그것에 대해 더 알고 싶다면 자세한 내용을 참조할 수 있습니다. 다음 링크.