2018.01.05

IDG 블로그 | 인텔 CPU 버그가 불러온 가상화의 악몽

Andy Patrizio | Network World
CPU 설계 결함은 가상화에 사용하는 프로세스가 가장 큰 영향을 미친다. 가상머신 성능이 20~30%까지 떨어질 수 있다.

인텔은 2018년을 악몽으로 시작하고 있다. 멜트다운이 공개되면서 인텔은 일반 소비자에게는 별다른 영향이 없을 것이라고 밝혔지만, 걱정해야 할 사람은 따로 있다.

이번 문제는 인텔 프로세서가 가상 메모리를 처리하기 위해 페이지 테이블을 다루는 방법에서 발견됐다. 이번 취약점 공격은 예측 실행(speculative execution)이란 기법을 악용해 특권이 부여된 메모리의 내용을 살펴볼 수 있는 것으로 알려졌다.



예측 실행 취약점 공격
예측 실행은 비순차적 명령어 처리(out-of-order execution)란 방법론의 일부로, CPU가 보유한 데이터를 기반으로 다음에 일어날 일을 경험을 기반으로 추측한다. 이를 통해 CPU는 전체 사이클을 다 거치지 않고 좀 더 빨리 명령을 처리할 수 있다. CPU가 최대한 효율적으로 동작하도록 하는 기술이다.

인텔은 이번 문제가 얼마나 오래된 것인지를 밝히지 않았지만, 2006년 64비트 프로세서 펜린 제품군을 출시하던 때로 거슬러 올라가는 것으로 알려져 있다. 2017년 6월 구글 연구원이 처음 이 문제를 인텔에 알렸고, 구글은 인텔과 운영체제 업체들이 문제를 해결할 때까지 이를 공개하지 않았다. 구글 프로젝트 제로팀은 1월 3일 자신들의 조사 결과를 공개했다.

예측 실행의 결함을 해결하는 방법
잘 알려진 것처럼 문제는 세 가지 변형된 버전이 있으며, 모두가 인텔이 예측 실행을 처리하는 방법과 관련되어 있다. 모두 해결할 수 있지만, 운영체제를 통해서만 가능하다. CPU 자체에 새겨진 것이기 때문에 교체할 수도 없고 BIOS 업데이트로도 해결할 수 없다. 운영체제 차원의 패치만 효과가 있는데, 리눅스 배포판은 이미 패치를 배포하고 있으며, 마이크로소프트도 다음 주 화요일 패치에서 이 문제를 해결할 것으로 보인다.

근원적인 해결책은 CPU 아키텍처를 재설계하는 것인데, 시간이 얼마나 걸릴지는 논쟁거리다. 티리아스 리서치의 짐 매그리거는 설계 수정을 인텔 로드맵에 반영하는 데 6~9개월이 걸릴 것이라고 말하고, 인사이트64의 네이선 브룩우드는 2~4년이 걸릴 것이라고 말한다. 인텔이 문제를 알게 된 것이 지난 해 6월이지만, 올해 로드맵에서 칩의 설계를 변경할 수 있었는지는 알 수 없다.

가장 나쁜 점은 이 문제가 인터럽트가 있을 때마다 발생한다는 것이다. 인터럽트를 유발하는 것은 디스크 읽기나 네트워크 접속 같은 입출력이 대표적이다. 이제 CPU는 운영체제 커널과 애플리케이션을 메모리에 보존하는 대신 메모리에 올리고 내리기를 반복해야 한다. 물론 이런 작업은 CPU의 속도로 극히 빠르게 이루어지지만, 그래도 성능에 영향을 미칠 수밖에 없다.

또한, 운영체제와 앱이 서로 간에 인터랙션하는 환경에도 영향을 미친다. 생각해 보자. 수십 대의 가상머신을 구동하는 가상화된 서버보다 더 인터럽트가 많이 발생하는 환경이 있는가? 가상머신은 각각의 운영체제 인스턴스를 가지고 있으며, 하이퍼바이저를 통해 각각 하드웨어와 인터랙션한다. 가상화 환경은 이번 문제의 영향을 가장 크게 받는 영역이다.

성능에 미치는 영향
그렇다면, 성능은 얼마나 큰 영향을 받는가? 더레지스터는 작업에 따라 5~30%로 추정했는데, 오픈소스 사이트인 포로닉스는 패치된 리눅스 시스템으로 테스트해 데이터베이스 같은 작업에서는 7~20%의 영향을 받는다고 밝혔다. 게임 같은 일반 소비자 애플리케이션은 실질적으로 영향이 없는 것으로 나타났다. 한 애널리스트는 AWS가 지난 주 패치를 적용하면서 성능이 떨어졌다는 확인되지 않은 이야기를 전하기도 했지만, 이를 뒷받침할 근거는 없다.

인텔은 아직 현장에서 취약점 공격이 일어난 적은 없으며, 공격 역시 메모리의 내용을 읽을 뿐 변조하지는 않는다고 설명했다. 하지만 이것만으로 위험은 충분하다. 가장 큰 위협은 멀티테넌트 환경에서 여러 곳의 AWS나 애저 고객이 동일한 CPU 상에 여러 대의 가상머신을 가동하는 것으로, 한 사용자가 다른 사용자의 VM을 엿볼 수도 있다.

이는 어떤 고객도 허용할 수 없는 일이다. 따라서 가상머신이 20~30% 느려지는 것을 받아들일 수밖에 없다. 인텔은 이제 막 지옥문을 들어섰으며, 기업 사용자는 3일 뒤면 현실에 직면할 것이다.

뜻밖의 결말도 있다. 인텔은 AMD 역시 마찬가지라고 하지만, AMD는 그렇지 않으며, 영향을 받는다고 하더라도 최소한이라고 밝혔다. AMD는 인텔로부터 라이선스한 64비트 확장 프로그램을 갖추고 있지만, 64비트 아키텍처를 구현하는 방식은 완전히 다르다.

차이는 AMD의 칩은 만약 메모리 액세스 위반의 가능성이 있을 때는 예측 실행을 하지 않는다는 것이다. 분기점을 넘어서는 데이터를 올리지 않으며, 그래서 에측 역시 이루어지지 않는다. 인텔의 칩은 정반대로 동작한다. 인텔이 분기 예측을 사용하는 데는 좀 더 공격적이었으며, 그 점이 이번에 인텔의 발목을 잡은 것이다.

이번 사태는 하루 만에 정리될 만한 것은 아니다. 앞으로의 추이를 좀 더 지켜봐야 할 것이다.  editor@itworld.co.kr


2018.01.05

IDG 블로그 | 인텔 CPU 버그가 불러온 가상화의 악몽

Andy Patrizio | Network World
CPU 설계 결함은 가상화에 사용하는 프로세스가 가장 큰 영향을 미친다. 가상머신 성능이 20~30%까지 떨어질 수 있다.

인텔은 2018년을 악몽으로 시작하고 있다. 멜트다운이 공개되면서 인텔은 일반 소비자에게는 별다른 영향이 없을 것이라고 밝혔지만, 걱정해야 할 사람은 따로 있다.

이번 문제는 인텔 프로세서가 가상 메모리를 처리하기 위해 페이지 테이블을 다루는 방법에서 발견됐다. 이번 취약점 공격은 예측 실행(speculative execution)이란 기법을 악용해 특권이 부여된 메모리의 내용을 살펴볼 수 있는 것으로 알려졌다.



예측 실행 취약점 공격
예측 실행은 비순차적 명령어 처리(out-of-order execution)란 방법론의 일부로, CPU가 보유한 데이터를 기반으로 다음에 일어날 일을 경험을 기반으로 추측한다. 이를 통해 CPU는 전체 사이클을 다 거치지 않고 좀 더 빨리 명령을 처리할 수 있다. CPU가 최대한 효율적으로 동작하도록 하는 기술이다.

인텔은 이번 문제가 얼마나 오래된 것인지를 밝히지 않았지만, 2006년 64비트 프로세서 펜린 제품군을 출시하던 때로 거슬러 올라가는 것으로 알려져 있다. 2017년 6월 구글 연구원이 처음 이 문제를 인텔에 알렸고, 구글은 인텔과 운영체제 업체들이 문제를 해결할 때까지 이를 공개하지 않았다. 구글 프로젝트 제로팀은 1월 3일 자신들의 조사 결과를 공개했다.

예측 실행의 결함을 해결하는 방법
잘 알려진 것처럼 문제는 세 가지 변형된 버전이 있으며, 모두가 인텔이 예측 실행을 처리하는 방법과 관련되어 있다. 모두 해결할 수 있지만, 운영체제를 통해서만 가능하다. CPU 자체에 새겨진 것이기 때문에 교체할 수도 없고 BIOS 업데이트로도 해결할 수 없다. 운영체제 차원의 패치만 효과가 있는데, 리눅스 배포판은 이미 패치를 배포하고 있으며, 마이크로소프트도 다음 주 화요일 패치에서 이 문제를 해결할 것으로 보인다.

근원적인 해결책은 CPU 아키텍처를 재설계하는 것인데, 시간이 얼마나 걸릴지는 논쟁거리다. 티리아스 리서치의 짐 매그리거는 설계 수정을 인텔 로드맵에 반영하는 데 6~9개월이 걸릴 것이라고 말하고, 인사이트64의 네이선 브룩우드는 2~4년이 걸릴 것이라고 말한다. 인텔이 문제를 알게 된 것이 지난 해 6월이지만, 올해 로드맵에서 칩의 설계를 변경할 수 있었는지는 알 수 없다.

가장 나쁜 점은 이 문제가 인터럽트가 있을 때마다 발생한다는 것이다. 인터럽트를 유발하는 것은 디스크 읽기나 네트워크 접속 같은 입출력이 대표적이다. 이제 CPU는 운영체제 커널과 애플리케이션을 메모리에 보존하는 대신 메모리에 올리고 내리기를 반복해야 한다. 물론 이런 작업은 CPU의 속도로 극히 빠르게 이루어지지만, 그래도 성능에 영향을 미칠 수밖에 없다.

또한, 운영체제와 앱이 서로 간에 인터랙션하는 환경에도 영향을 미친다. 생각해 보자. 수십 대의 가상머신을 구동하는 가상화된 서버보다 더 인터럽트가 많이 발생하는 환경이 있는가? 가상머신은 각각의 운영체제 인스턴스를 가지고 있으며, 하이퍼바이저를 통해 각각 하드웨어와 인터랙션한다. 가상화 환경은 이번 문제의 영향을 가장 크게 받는 영역이다.

성능에 미치는 영향
그렇다면, 성능은 얼마나 큰 영향을 받는가? 더레지스터는 작업에 따라 5~30%로 추정했는데, 오픈소스 사이트인 포로닉스는 패치된 리눅스 시스템으로 테스트해 데이터베이스 같은 작업에서는 7~20%의 영향을 받는다고 밝혔다. 게임 같은 일반 소비자 애플리케이션은 실질적으로 영향이 없는 것으로 나타났다. 한 애널리스트는 AWS가 지난 주 패치를 적용하면서 성능이 떨어졌다는 확인되지 않은 이야기를 전하기도 했지만, 이를 뒷받침할 근거는 없다.

인텔은 아직 현장에서 취약점 공격이 일어난 적은 없으며, 공격 역시 메모리의 내용을 읽을 뿐 변조하지는 않는다고 설명했다. 하지만 이것만으로 위험은 충분하다. 가장 큰 위협은 멀티테넌트 환경에서 여러 곳의 AWS나 애저 고객이 동일한 CPU 상에 여러 대의 가상머신을 가동하는 것으로, 한 사용자가 다른 사용자의 VM을 엿볼 수도 있다.

이는 어떤 고객도 허용할 수 없는 일이다. 따라서 가상머신이 20~30% 느려지는 것을 받아들일 수밖에 없다. 인텔은 이제 막 지옥문을 들어섰으며, 기업 사용자는 3일 뒤면 현실에 직면할 것이다.

뜻밖의 결말도 있다. 인텔은 AMD 역시 마찬가지라고 하지만, AMD는 그렇지 않으며, 영향을 받는다고 하더라도 최소한이라고 밝혔다. AMD는 인텔로부터 라이선스한 64비트 확장 프로그램을 갖추고 있지만, 64비트 아키텍처를 구현하는 방식은 완전히 다르다.

차이는 AMD의 칩은 만약 메모리 액세스 위반의 가능성이 있을 때는 예측 실행을 하지 않는다는 것이다. 분기점을 넘어서는 데이터를 올리지 않으며, 그래서 에측 역시 이루어지지 않는다. 인텔의 칩은 정반대로 동작한다. 인텔이 분기 예측을 사용하는 데는 좀 더 공격적이었으며, 그 점이 이번에 인텔의 발목을 잡은 것이다.

이번 사태는 하루 만에 정리될 만한 것은 아니다. 앞으로의 추이를 좀 더 지켜봐야 할 것이다.  editor@itworld.co.kr


X