보안 제품정보


스펙터 등 부채널 취약점 연구한 구글, “소프트웨어 패치 불가능” 2019.02.21

CPU의 추측 실행 기능, 퍼포먼스를 높이기 위해 고안된 개념
속도를 제일 높은 가치로 여기는 이상 스펙터류 취약점은 항상 있을 것


[보안뉴스 문가용 기자] 스펙터(Spectre)나 멜트다운(Meltdown)과 같은 취약점을 이용한 부채널 공격에 대해 대부분의 전문가들은 ‘이론상 가능한 공격’이라고 말해왔다. 사실상 발생하기 어려운 공격이라는 것이다. 하지만 이 위협이 만연한 것만은 사실이다. 추측 실행을 통해 시스템 퍼포먼스를 높이는 기능을 가진 모든 마이크로프로세서에 존재하는 취약점이기 때문이다. 게다가 최근 구글의 발표에 의하면 ‘소프트웨어 기반 패치’로는 해결이 불가능하기까지 하단다.

[이미지 = iclickart]


지난 주 구글이 발표한 보고서에 의하면 “스펙터 취약점은 당분간 우리 곁에 계속 머물러 있을 가능성이 높다.” 구글의 컴퓨터 과학자 다섯 명이 부채널 및 추측 실행에 관해 분석한 후, 현대 컴퓨터 프로세서들에서 사용되고 있는 마이크로아키텍처의 추상적 모델을 구축했는데, 그 결과 “(부채널 추측 실행을 통한) 최적화 기능이 어디서나 발견되고 있고, 따라서 부채널 공격의 가능성은 항상 열려 있는 상태”라는 데에 도달했다.

이 결론을 증명하기 위해 구글의 전문가들은 ‘범용 읽기 도구(universal read gadget)’를 만들어냈다. 거의 아무런 제약을 받지 않고 데이터를 읽어내는 툴로, 자바스크립트, C++, 웹어셈블리(WebAssembly)로 구현했다. 데이터를 보호된 메모리로부터 읽어내는 속도는 최소 초당 10 바이트, 최대 초당 1천 바이트였다.

“연구 결과, 현대 하드웨어 장비들에 있는 추측 실행과 관련된 부채널 취약점들은 프로그래밍 언어로 보장되는 기밀성으로 완화되지 않으며, 아직까지 이 취약점을 해결해줄 소프트웨어 단계의 패치 방법은 존재하지 않는 것으로 파악됩니다.”

멜트다운은 인텔 x86 프로세서들에 존재하는 하드웨어 설계 취약점으로, 공격자들이 이를 악용해 OS 커널에 배정된 메모리 영역을 읽을 수 있게 된다. 스펙터는 추측 실행 기능을 가진 모든 프로세서에 존재하는 설계 취약점으로, 이를 악용할 경우 공격자가 애플리케이션으로 보호된 메모리 영역을 읽을 수 있게 된다.

추측 실행이란 실행 가능성이 있는 선택지가 두 개 있으면, 사용자가 결정을 하기 전에 두 가지 코드를 모두 미리 로딩시켜 놓는 것을 말한다. 거의 모든 현대 프로세서들에 존재하는 기능으로, CPU의 퍼포먼스를 올리기 위해 도입됐다. 구글은 “스펙터 취약점은 생각했던 것보다 훨씬 광범위하게 퍼져 있다”며 “수백억 개의 CPU들이 이 취약점을 가지고 있다”고 밝혔다.

최초로 스펙터 관련 논문을 발표한 폴 코처(Paul Kocher)는 소프트웨어 기반 패치가 있을 수 없다는 구글의 결론이 당연하다고 말한다. “CPU 시장은 지난 40년 동안 단 한 가지 목표만을 추구해왔습니다. 바로 ‘퍼포먼스’죠. 퍼포먼스가 최고의 가치이자 덕목이며, 이상이었습니다. 추측 실행이라는 것도 누구보다 더 빠르기 위해 고안된 개념이고요. 스펙터는 단순 하드웨어 문제라기보다, 이렇게 빠르기만 추구해온 산업의 성장 방향 자체에서 오는 문제입니다. 이걸 어떻게 소프트웨어로 해결할 수 있을까요.”

결국 칩 제조사들이 자충수를 둔 격이라고 그는 주장한다. “아마 ‘최고 속도’ 혹은 ‘최고 퍼포먼스’라는 항목을 CPU 홍보에 넣을 필요가 없었다면 스펙터 문제도 없었을 것입니다. 하지만 벤치마크 테스트에서도 속도와 퍼포먼스가 가장 중시되는 것이 현실이죠. 이건 유구한 역사와 전통을 자랑하는 현상이라 쉽게 고쳐지지 않을 겁니다. 앞으로도 이런 풍조가 이어진다면, 스펙터 및 관련 부채널 공격들은 골치 아픈 문제로 남아있을 겁니다.”

크롬 픽스
구글의 컴퓨터 과학자 팀은 추측 실행 공격 시나리오를 총 네 가지로 분류했다. 그리고 세 개의 완화 방법을 조사했다. 1) 추측 실행 기능의 비활성화, 2) 프로세서의 타이머 기능에 노이즈 추가, 3) 추측 실행에 필요한 추가 안전 확인 장치 마련이 바로 그것이다. 그러나 이 세 가지 모두 ‘완벽’과는 거리가 멀었다고 한다.

그래서 구글은 크롬 브라우저를 보호하기 위한 방어 전략을 바꿔야만 했다. 구글은 크롬 64~67 버전을 보호하기 위해 타이머 기능을 추가하는 방법을 사용했었다. 그러나 이번 연구를 통해 그 방법의 제한점을 파악했고, 따라서 보다 광범위한 코드 변경을 실시할 수밖에 없었다고 밝혔다.

“소프트웨어를 통한 취약점 완화 전략이 완전하지 않다는 것과, 크롬을 제대로 보호하려면 수백만 행으로 이뤄진 크롬의 C++ 코드를 전부 수정해야 한다는 결론을 얻었습니다. 그래서 크롬 팀은 사이트 격리(site isolation)으로 전략을 수정했습니다. 즉 출처가 다른 코드를 샌드박스 처리하는 방법을 택한 것이죠.”

코처는 “멀티코어 프로세서를 만들어야 해결될 문제일 수도 있다”는 의견이다. “일부 코어는 퍼포먼스를 위해 구성하고, 일부 코어는 보안을 위해 구성한 멀티코어 프로세서가 진짜 답일 것입니다. 이렇게 하면 스펙터 말고도 다른 취약점들도 해결할 수 있게 되죠. 퍼포먼스와 보안의 균형을 맞추지 못해, 어쩔 수 없이 보안을 희생시키는 경우가 빈번했거든요. 보안 코어 따로, 퍼포먼스 코어 따로 하면 이런 부분이 해결될 수 있습니다. 물론 ‘최대 성능’을 끌어내고 싶은 사람들에게는 그리 만족스러운 해결책이 아닐 수 있습니다. 개인적으로 속도도 최고로 올리고 보안도 최고로 올릴 수는 없다고 봅니다.”

구글 역시 코처와 어느 정도 동의한다. “문제의 근간은 퍼포먼스라는 가치에 집중한 나머지 보안을 간과한 것”이라고 결론을 내린 것이다. “CPU라는 요소에 거는 시장의 기대가 잘못 형성되어 있습니다. 그 기대에 충족시키려는 시장의 방향도 잘못 되어 있고요. 속도만 올릴 수 있다면 안전도 희생시킬 수 있다는 그 생각을 말하는 겁니다. 그 생각이 너무 뿌리 깊어서, 간단한 해결책을 낼 수 없는 게 지금의 상황입니다.”

3줄 요약
1. 구글, 스펙터 취약점에 대한 연구 결과 발표 : 소프트웨어 패치로 해결 불가능.
2. 문제의 근간은 보안과 안전을 희생시켜서라도 속도와 퍼포먼스를 높이면 된다는 생각.
3. CPU 구조의 개념 자체가 바뀌어야 함. 어쩌면 보안 코어와 퍼포먼스 코어가 따로 있는 멀티코어 프로세서?

[국제부 문가용 기자(globoan@boannews.com)]

Copyrighted 2015. UBM-Tech. 117153:0515BC
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>