
TPM Genie는 개별 Trusted Platform Module용 I2C 버스 인터포저입니다.
TPM Genie는 Trusted Platform Module의 취약점 연구를 지원하기 위해 설계되었습니다. 직렬 버스 인터포저로서 TPM Genie는 호스트 머신과 개별 TPM 칩 사이의 I2C 채널을 통해 전송되는 모든 트래픽을 가로채고 수정할 수 있습니다.
연구 외적으로, TPM Genie가 보여주는 위협 모델은 공격자가 인터포저 장치를 이식하기 위해 영향을 받는 머신에 일시적인 물리적 접근 권한을 가져야 합니다. 이러한 공격은 "에빌 메이드" 시나리오, TPM이 활성화된 엔터프라이즈 서버가 포함된 데이터센터의 악의적인 직원, 또는 NSA ANT 카탈로그의 하드웨어 이식 장치 스타일의 공급망 차단 공격을 통해 수행될 수 있습니다.
많은 개별 TPM은 간단한 헤더나 소켓을 통해 메인 보드에 연결된 도터 카드로 분리됩니다. 결과적으로, 인터포저를 이식하는 과정은 회로 수정 공격을 수행할 필요가 없기 때문에 상당히 간단합니다. 이식 장치는 단 몇 초 만에 설치될 수 있습니다.
TPM Genie는 TPM v1.2 프로토콜 사양을 준수하는 Infineon SLB9645 I2C TPM으로 광범위하게 테스트되었습니다.
이 도구는 주로 호스트 측 TPM 드라이버의 파싱 버그를 유발하기 위해 TPM 응답 패킷을 조작하기 위해 개발되었습니다. 이러한 버그는 Linux 커널뿐만 아니라 Tboot 및 Tianocore EDKII와 같은 다양한 부트로더에서 발견될 수 있습니다. 이러한 취약점을 활용하여 공격자는 완전히 측정되고 증명된 상태로 성공적으로 부팅된 후 호스트 머신을 손상시킬 수 있습니다.
TPM Genie는 또한 PCR Extend 작업에 중간자 공격을 수행할 수 있어, TPM의 명시된 목적(측정 부팅, 원격 증명, 밀봉 저장) 대부분을 무력화할 수 있습니다. 일반적으로 공격자가 측정 부팅 프로세스의 구성 요소를 수정하면 증명 또는 밀봉 해제가 실패해야 합니다. 그러나 인터포저는 버스를 통해 전송되는 PCR Extend 오디널과 관련된 페이로드를 대체하여 이러한 측정값을 위조할 수 있게 합니다.
또한 TPM Genie는 Linux 하드웨어 난수 생성기를 약화시킬 수 있습니다. 일부 시스템에서는 /dev/hwrng가 Trusted Platform Module에 연결되어 있어, 캐릭터 디바이스에 대한 모든 읽기가 실제로 TPM 칩이 난수 바이트를 제공하게 됩니다. 이러한 방식으로 인터포저는 플랫폼의 RNG를 미묘하게 변경하여 호스트의 암호화 작업을 손상시킬 수 있습니다.
마지막으로, TPM Genie는 단순히 버스를 스니핑하여 OIAP 및 OSAP 명령과 관련된 세션 데이터와 같은 비밀을 캡처하는 데 사용될 수 있습니다. 그리고 약간의 추가 엔지니어링 노력으로 TPM Genie는 Endorsement Key를 위조하고, AuthData를 제어하며, Authorization Session HMAC을 재계산할 수 있습니다. (자세한 내용은 제 백서에 있습니다. 곧 구현하겠습니다.)