2016-08-17 2 views
2

KSM (Kernel Same-page Mapping)을 사용하는 경우 두 개의 완전히 다른 페이지 (예 : 두 대의 가상 컴퓨터)가 완전히 동일한 두 페이지의 메모리를 소유하는 경우 해당 페이지가 병합됩니까? 아니면 각 프로세스가 서로 격리되어 있기 때문에 별도로 남아있을 것입니까? VM이 호스트의 단일 프로세스로 종결되기 때문에 혼란 스럽지만 이러한 페이지가 병합되면 큰 문제가되는 것처럼 보일 것입니다. 따라서 별도로 보관한다고 가정합니다.KSM 관련 보안 문제

VM과 컨테이너를 구별 할 수 있는지 궁금합니다.

의 질문 외에도은 어떤 경우에 발생합니까? 격리되어있는 경우 발생할 수있는 가능성은 무엇입니까? 나는이 과정이 cgroup의 사용을 통해 이루어 지므로 두 프로세스가 완전히 고립 된 메모리를 가지고 있다고 가정한다.

답변

3

특히 다른 VM 인스턴스가 소유하고있는 경우 다른 프로세스의 페이지가 병합됩니다. 다른 VM의 페이지를 병합하면 메모리 페이지를 병합하여 얻을 수있는 효과가 가장 크기 때문에 특히 그렇습니다. VM에서 동일한 많은 라이브러리 및 커널 코드의 복제가 필요하지 않습니다.

그리고이 효과는 이미 GnuPG 1.4.13 암호 라이브러리에 대한 캐시 타이밍 공격에 사용되었습니다. GnuPG 라이브러리의 코드가 포함 된 병합 된 페이지는 두 개의 서로 다른 VM간에 공유되었으며 한 VM은 다른 VM에서 진행중인 암호화 작업에서 사용되는 키를 복구 할 수있었습니다. 이 공격은 정보를 스누핑하는 데 사용 된 프로세서 명령어로 인해 "FLUSH + RELOAD"로 명명되었습니다.

여기에 공격을 설명하는 PDF 파일에 대한 링크입니다 : https://eprint.iacr.org/2013/448.pdf

+0

매우 흥미로운, 전혀 내가 기대했던, 감사합니다! –

+0

버퍼 오버플로는 이러한 방법을 통해 수행 될 수 있습니까? –

+0

@JeffQuick 아니, 공개해서는 안되는 데이터를 나타내는 순수한 사이드 채널 공격입니다. 타이밍을 제외하고 어떤 방식 으로든 공격받은 VM에 영향을 줄 수는 없습니다. – cmaster