스펙터 보안 취약점이 가상 머신에있을 수 있습니까? 것으로 생각되지만 결과를 읽기 위해

VirtualBox와 같은 가상 시스템에 “스펙트럼”보안 취약점이있을 수 있습니까? VM이 비 순차적으로 실행되는 것으로 생각되지만 결과를 읽기 위해 캐시를 들여다 볼 수는 없습니다.

가상 CPU의 캐시를 읽는 방법에 대한 설명이 있습니까?



답변

예 스펙터는 CPU / 레벨 결함이기 때문에 호스트 / 게스트, 게스트 / 호스트 및 게스트 / 게스트 경계를 넘을 수 있습니다. 이는 잠재적으로 민감한 정보가 CPU 코어에서 실행되는 모든 항목에서 유출 될 수 있음을 의미합니다.

인터넷 뉴스의 대부분은 가상화 된 클라우드 시스템을 보유하고 있으며 민감한 정보를 유출하기 위해 악용 될 수있는 클라우드 공급 업체에 의해 클라우드 제공 업체가 최악의 피해를 입었다 고합니다.

대부분의 대형 제공 업체는 가능한 한 결함에 대해 패치를 해왔어야했지만 이것은 한동안 우리와 함께하는 문제가 될 것입니다.

Security.SE는 이에 관한 정식 Q & A 를 가지고 있으며 VM을 언급합니다.

가상 머신 / 컨테이너를 실행하고 있는데 어느 정도 취약합니까?

스테 울리히의 대답

  • 멜트 다운 공격은 VM을 교차하지 않고 로컬 프로세스에 커널 메모리 만 누출시킵니다.
  • Spectre는 여러 VM에서 작동 할 수 있습니다.

또한 컨테이너가 호스트 커널에 의존하기 때문에 Steffen 에서 Meltdown 및 Specter는 컨테이너와 함께 작동합니다.

VM은 시스템에서 실제 CPU를 사용하여 일부 권한있는 명령이 갇히고 리디렉션 될 수 있습니다. 호스트와 동일한 캐시 및 명령을 사용합니다. 본질적으로 시스템의 물리적 CPU 내의 다른 계층 일뿐입니다.

가상화는 가능한 한 적은 추상화로 실제 CPU를 사용하고 격리를 제공하기 위해 CPU 하드웨어에 의존하기 때문에 빠릅니다. qemu와 같은 것은 하드웨어 CPU가 아니기 때문에 더 안전한 에뮬레이션 을 수행 할 수 있지만 훨씬 느리고 가상화와 다릅니다.

로부터 Security.se 게시 정식 다시 :

스펙터는 다른 레벨에서 작동하며 사용자 공간에서 커널 공간 데이터에 액세스 할 수 없습니다. 이 공격에서 공격자는 추측 실행을 예측하여 명령을 잘못 실행합니다. 간단히 말해서 예측자는 특정 분기 결과 (예 :-> true)를 예측하도록 강요되며, 이로 인해 대상 프로세스가 일반적으로 요청하지 않은 범위를 벗어난 메모리 액세스를 요구하여 잘못된 추측 실행이 발생합니다. 그런 다음 사이드 채널에서이 메모리의 값을 검색합니다. 이러한 방식으로, 대상 프로세스에 속하는 메모리가 악성 프로세스로 유출됩니다.

따라서 VM은 실제 CPU 하드웨어에서 실행되며 추측 실행 엔진을 “트레이닝”하기 위해 특정 루프를 실행하기 만하면됩니다. 그런 다음 정확한 타이밍을 사용하여 악용하려는 호스트 또는 게스트 (또는 다른 VM) 프로세스를 나타내는 특정 액세스 패턴의 캐시를 감시 할 수 있습니다.

이러한 방식으로 모든 방향에서 기계를 활용할 수 있습니다. 호스트에서 VM으로, VM에서 호스트로, VM에서 VM으로.

예, VM CPU 코어가 호스트에 따라 변경 될 수 있고 호스트가 다른 코어에서 작업을 행복하게 예약 할 수 있지만 장기간에 걸쳐 충분한 정보를 얻을 수 있기 때문에 결코 쉽지 않으며 쉽게 풀기가 어렵습니다. 중요한 시스템이나 계정에 비밀 키를 제공하기 위해 유출 될 수 있습니다. 충분한 시간과 적절하게 은밀한 소프트웨어가 주어지면 모든 것이 잠재적으로 열려 있습니다.

“안전한”VM을 원한다면 코어가 분리되어 있는지 확인해야합니다. 이 공격을 막는 유일한 방법은 호스트와 VM이 특정 코어 만 사용하도록 “강제”하여 동일한 하드웨어에서 실행되지 않도록하는 것입니다. 그러나이를 통해 비용을 효과적으로 증가시킬 수는 없습니다. 지정된 호스트에 많은 VM이 있습니다. 사용 가능한 코어가있는 것보다 더 많은 VM을 실행할 수는 없습니다. 이는 많은 시스템이 수명의 90 % 동안 유휴 상태이므로 “낮은로드”서버에서 수행 될 것으로 예상됩니다.


답변

gem5

호스트 CPU를 사용하지 않고 순수하게 에뮬레이션으로 취약점을 연구 / 재생하는 데 관심이 있다면 QEMU가 CPU 파이프 라인을 시뮬레이션하지 않기 때문에이를 관찰하기에 충분히 상세하다고 생각하지 않습니다.

그러나 gem5는 연구 개발에서 시스템 성능을 추정하는 데 사용되며 완전히 깨끗하고 통제 된 환경에서 스펙터를 관찰하기에 충분한 CPU 내부를 시뮬레이션합니다.

시각화 기능이있는 멋진 x86_64 데모는 http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html 에 게시되었습니다.

gem5의 단점은 QEMU보다 속도가 훨씬 느리다는 것입니다. 시뮬레이션이 더 자세합니다.