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

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

VirtualBox와 같은 가상 머신에 보안 취약점 "스펙터"가 있을 가능성이 있습니까? 내 생각에는 VM이 ​​잘못된 순서로 실행되는 것 같지만 결과를 읽기 위해 캐시를 엿보는 것은 불가능하다고 생각합니다.

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

답변1

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

인터넷에 있는 대부분의 뉴스 기사는 가상화된 대규모 시스템 클러스터를 보유하고 잠재적으로 악용되어 민감한 정보를 유출할 수 있는 클라우드 제공업체가 이로 인해 최악의 타격을 입는다고 말합니다.

대부분의 대규모 제공업체는 지금쯤 가능한 한 최선을 다해 결함에 대한 패치를 적용했어야 하지만 이는 한동안 우리와 함께 살아가는 문제가 될 것입니다.

Security.SE에는정식 Q&A이에 관해 VM에 대해 언급합니다.

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

에 따라Steffen Ullrich의 답변

  • 멜트다운 공격은 VM을 교차하지 않으며 커널 메모리를 로컬 프로세스로 유출할 뿐입니다.
  • Spectre는 여러 VM에서 작동할 수 있습니다.

또한,다시 스테펜, Meltdown 및 Spectre는 컨테이너가 호스트 커널에 의존하므로 컨테이너와 함께 작동합니다.

VM은 일부 권한 있는 명령이 트랩되어 리디렉션될 수 있는 시스템의 실제 CPU를 사용합니다. 호스트와 동일한 캐시 및 지침을 사용합니다. 이는 본질적으로 시스템의 물리적 CPU 내의 또 다른 계층입니다.

가상화는 가능한 추상화를 최소화한 물리적 CPU를 사용하고 격리를 제공하기 위해 CPU 하드웨어에 의존하기 때문에 속도가 빠릅니다. qemu와 같은 일을 할 수 있습니다에뮬레이션하드웨어 CPU가 아니기 때문에 더 안전하겠지만,많이속도가 느리고 가상화와 다릅니다.

로부터Security.se 표준 게시물다시:

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

따라서 VM은 실제 CPU 하드웨어에서 실행되기 때문에 VM이 해야 할 일은 특정 루프를 실행하여 추측 실행 엔진을 "훈련"하는 것뿐입니다. 그런 다음 정확한 타이밍을 사용하여 이용하려는 호스트나 게스트(또는 다른 VM) 프로세스를 나타내는 특정 액세스 패턴에 대한 캐시를 관찰할 수 있습니다.

이런 식으로 이는 기계가 모든 방향으로 활용될 수 있음을 의미합니다. 호스트에서 VM으로, VM에서 호스트로, VM에서 VM으로.

예, VM CPU 코어는 호스트의 변덕에 따라 변경될 수 있고 호스트는 다른 코어에서도 작업을 즐겁게 예약할 수 있으므로 결코 쉬운 일이 아니며 실행하기 어려운 일입니다. 하지만 오랜 시간이 지나면 충분한 정보가 제공됩니다. 중요한 시스템이나 계정에 대한 비밀 키를 제공하기 위해 유출될 수 있습니다. 충분한 시간과 적절하게 은밀한 소프트웨어가 주어지면 모든 것이 잠재적으로 열려 있습니다.

"보안" VM을 원한다면 해당 코어가 격리되어 있음을 보장해야 합니다. 이 공격을 차단하는 유일한 실제 방법은 호스트와 VM이 특정 코어만 사용하도록 "강제"하여 동일한 하드웨어에서 실행되지 않도록 하는 것입니다. 그러나 이렇게 하면 비용이 효과적으로 증가할 수 없습니다. 특정 호스트에 가능한 만큼의 VM이 있습니다. 사용 가능한 코어 수보다 더 많은 VM을 실행할 수는 없습니다. 이는 많은 시스템이 수명의 90% 동안 유휴 상태로 있기 때문에 "저부하" 서버에서 수행할 것으로 예상되는 작업입니다.

답변2

gem5 시뮬레이터는 CPU 마이크로아키텍처를 시뮬레이션하고 Spectre를 연구하는 데 사용할 수 있습니다.

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

보석5그러나 연구 및 개발에서 시스템 성능을 추정하는 데 사용되며 완전히 깨끗하고 통제된 환경에서 Spectre를 관찰할 수 있도록 충분한 CPU 내부를 시뮬레이션합니다.

시각화가 포함된 멋진 x86_64 데모가 다음 위치에 게시되었습니다.http://www.lowepower.com/jason/visualizing-spectre-with-gem5.html

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

관련 정보