최근 발표된 인텔 중앙처리장치(CPU) 보안결함에 패치 적용시 성능저하가 불가피한 것으로 알려진 가운데, 구글이 자사 클라우드서비스에 인텔CPU 보안패치를 적용하고도 성능 영향을 받지 않았다고 밝혀 주목된다.
구글은 자체 개발한 소프트웨어(SW)로 클라우드서비스에 CPU보안결함을 거의 성능저하 없이 대응했다. 그리고 이를 오픈소스SW로 공개했다. 일반 기업에서도 활용할 수 있다면, 성능 영향을 우려해 인텔CPU 보안패치 적용을 주저하고 있는 IT담당자에게 도움이 될 것으로 보인다.
앞서 지난 3일 구글은 세계 각지 보안전문가들과 함께 보안연구조직 '프로젝트제로' 팀 중심으로 협력해 내놓은 보안취약점 분석 보고서를 통해, 업계서 널리 쓰이는 제조사 CPU에서 컴퓨터 메모리에서 기밀을 노출하는 심각한 보안취약점 3건이 발견됐다고 밝혔다. 2가지는 스펙터(Spectre)라 불렸고, 1가지는 멜트다운(Meltdown)이라고 불렸다.
보고서 내용에 따르면 스펙터와 멜트다운은 접근권한이 없는 운영체제(OS)나 다른 애플리케이션에서, 컴퓨터 메모리에서 처리되고 있는 패스워드를 비롯한 기밀 정보 등 민감한 데이터를 들여다볼 수 있게 만드는 CPU 하드웨어 결함이었다. 개인용 모바일 기기 및 PC부터 기업 전산실 서버와 데이터센터 및 클라우드서비스의 가상머신(VM) 등 광범위한 컴퓨터가 이 취약점을 공격에 노출된 상황이 됐다.
■CPU보안패치 후 성능저하 우려 확산
공식 발표 이전부터 일부 사용자 및 기업용 컴퓨터에 인텔 측이 제공한 보안패치 및 마이크로코드(microcode) 업데이트 기반의 OS 및 펌웨어 업데이트가 적용 중이었다. 리눅스 사용자 커뮤니티 사이에선 서버용 OS로 활용되고 있는 리눅스 시스템을 위한 패치를 적용하라는 정보가 나왔다. 그런데 커뮤니티에선 관련 패치 후 리눅스 서버 시스템 성능이 최대 30%까지 떨어졌다는 문제가 불거졌다. [☞관련기사]
이후 마이크로소프트(MS)는 회사가 배포한 윈도 운영체제(OS) 업데이트 적용 후 소비자용 PC에서도 인텔 CPU 컴퓨터에서 성능저하가 발생했다고 확인했다. [☞관련기사] 이어 인텔도 자사 CPU 보안패치를 적용한 PC에서 성능저하가 발생한다는 점을 인정했다. [☞관련기사] 이에 리눅스 및 윈도 기반 서버 시스템을 구동하는 회사는 자체 서버와 클라우드서비스의 성능 저하를 우려하는 분위기다.
지난 11일 구글은 클라우드 서비스 사용자에게 운영중단시간이나 성능저하 문제 없이 보안 문제를 해결했다고 밝혔다. [☞원문보기] 구글 엔지니어링 담당자 벤 트레이너 슬로스(Ben Treynor Sloss) 부사장은 "포괄적인 성능 튜닝 작업에 힘입어 보호 조치는 우리 클라우드에 사용자가 인지할만한 영향을 주지 않았다"며 "구글 클라우드 플랫폼(GCP) 고객과 내부 팀으로부터 어떤 성능 하락도 보고받지 못했다"고 강조했다.
슬로스 부사장에 따르면 구글은 3가지 취약점에 따른 보안위협에 대응하는 조치를 지난 몇개월에 걸쳐 취해 왔다. 그중 구글이 2번째 스펙터 결함인 '버라이언트2(Variant 2)' 또는 '분기표적 주입(Branch Target Injection)' 취약점을 해결하려다 문제가 발생했다. 이에 구글은 '리트폴린(Retpoline)'이라는 기술을 만들었다. 이후 3가지 취약점을 모두 해결한 뒤 누구도 성능 문제를 체감하지 못했다는 설명이다.
분기표적 주입 취약점은 CPU에 탑재된 '간접분기예측기(indirect branch predictors)'의 허점이다. 간접분기예측기는 CPU가 당장 불필요한 명령을 미리 처리해 전체 성능을 끌어올리는 '투기적실행(speculative execution)' 동작시 처리될 명령을 지시하는 구성요소다. 결함을 해결하기 위해 CPU의 투기적실행 동작이나 다른 기능을 끌 경우 성능에 손실이 발생할 수 있다.
■스펙터 취약점 대응 기법 오픈소스화
구글의 테크니컬인프라스트럭처그룹 소속 SW 엔지니어 폴 터너(Paul Turner)가 만든 리트폴린은, CPU의 투기적실행 동작이나 다른 하드웨어 기능을 끄지 않고 보안결함을 해결한다. 공격자가 대신 분기표적 주입 취약점을 통해 투기적실행 동작을 악용하지 못하도록 SW 바이너리 변형(binary modification) 기법으로 프로그램을 변경한다.
슬로스 부사장은 "리트폴린을 사용하면 소스코드를 변형하지 않고도 컴파일시 인프라를 보호할 수 있다"면서 "또 이 기능을 테스트할 때 특히 SW 분기예측 단서같은 최적화 기법을 결합하면, 거의 성능 손실을 일으키지 않고 이런 보호 효과를 얻을 수 있는 것으로 나타났다"고 주장했다.
이어 "이 솔루션을 우리 인프라에 즉시 배포했다"며 "이를 산업 파트너와 공유하고 모든 사용자를 보호하기 위해 컴파일러 구현을 오픈소스화했다"고 덧붙였다. 제시된 링크를 열면 "OS 또는 하이퍼바이저 구현과 같은 민감한 바이너리를 분기표적 주입 공격으로부터 보호하는 데 적용할 수 있다"는 폴 터너의 설명과 리트폴린 소스코드 및 x86 시스템용 예제를 볼 수 있다. [☞구글 리트폴린 설명 웹페이지 바로가기]
관련기사
- 인텔 CPU보안패치, 돌발 재부팅 결함 확인2018.01.15
- 인텔 "CPU보안패치 PC 성능저하" 인정2018.01.15
- MS, 인텔CPU 보안패치 후 윈도 성능저하 확인2018.01.15
- 최악의 버그, CPU 기본 구조 건드렸다2018.01.15
구글은 프로젝트제로 팀에서 취약점 분석 보고서를 발표하기 직전인 지난달(2017년 12월) 모든 GCP 서비스에 알려진 3가지 취약점에 보호 조치를 마쳤다고 밝혔다. 보안 업데이트 절차를 밟는 동안 해당 업데이트와 관련된 문제를 제기하거나 지원 티켓을 발급받은 고객이 없었다며, 리트폴린 기법이 현실 세계 워크로드에 실제 영향을 주지 않을만큼 성능에 최적화된 업데이트임을 확인해 준다고 주장했다.
하지만 슬로스 부사장은 올초 발표된 취약점 3건에 대해 "너무 많은 SW스택 레이어의 변경을 요구하기 때문에, 지난 10년간 발생한 것중 가장 도전적이고 고치기 어려운 것일 수 있다"며 "취약점은 너무 널리 퍼져 있기 때문에 광범위한 산업계 협력을 필요로 하기도 한다"고 지적했다. 이런 이유에서 "프로젝트제로의 (발견 취약점) 90일 공개 정책의 예외로 대응한 몇 안 되는 사례 중 하나가 됐다"고 덧붙였다.