본문 바로가기
COLLECTING/이슈

INTEL CPU 사태! 새해부터 뭐야 이거?

by Captain Jack 2018. 1. 13.

INTEL CPU 사태! 새해부터 뭐야 이거?



▽ 베그하려고 노트북 산지 얼마 안됐는데 ... 아씨 뭐지 이거?



새해 벽두부터 인텔의 CPU(중앙처리장치)에 치명적인 결함이 있다는 소식에 전 세계가 발칵 뒤집혔습니다.






구글의 ‘프로젝트 제로’팀은 1월 3일 자사 블로그를 통해 ‘오늘날 사용되는 CPU의 취약점’이라는 제목의 보고서를 발표했습니다. 프로젝트 제로 팀은 보고서에서 “CPU들이 성능을 최적화하기 위해 적용하는 ‘추측 실행’(speculative execution) 기술로 인해 발생하는 심각한 보안 결함을 작년에 발견했다”고 발표했습니다. 심각한 보안 결함이란, “허가 받지 않은 프로세스가 시스템 메모리에서 비밀번호나 암호화 열쇠 또는 다른 애플리케이션에 열려 있는 민감한 정보를 읽을 수 있다”는 것입니다.





여기까지의 발표를 보고 혹시 인텔에 무슨 문제가 발생한 건지 이해되셨나요? 사실 저 문장들은 PC의 기본 구조에 대한 지식이 전무한 사람에게는 외계어에 가깝습니다. 이 문제에 대해 관련 업계 종사자들에게 물어보니, 특정 영역의 전문가가 아니면 전말을 모두 이해하기란 매우 힘들다는 이야기를 여러 곳에서 들었습니다. 그러니 못 알아들었다고 해서 실망할 필요는 없습니다. 이제부터 <한겨레> [더(THE)] 친절한 기자들]에서 조금 더 쉽게 인텔 게이트의 모든 걸 풀어 보겠습니다. 한 번씩은 컴퓨터 운영체제인 ‘윈도우’를 사용해봤다는 가정 아래 이야기를 시작해보겠습니다. 윈도우에서 돌아가는 프로세스의 메모리는 두 개의 영역으로 나뉘어 있습니다. ‘커널 영역’과 ‘사용자 영역’입니다. ‘커널 영역’의 프로세스가 사용하는 메모리는 컴퓨터 운영 시스템의 핵심으로 다른 프로세스가 돌아갈 수 있도록 하는 통로입니다. 예를 들면, 소프트웨어와 하드웨어를 연결시켜주는 ‘장치 드라이버’들이 이 영역에 해당합니다. 전체 프로세스를 호텔에 비유하자면, 커널의 역할은 호텔의 프런트라고 볼 수 있습니다. 객실을 찾아온 손님에게 방을 배정하고, 손님이 객실에서 조식을 시키면 종업원을 통해 계란 후라이와 베이컨을 배달해 주는 역할을 하는 셈입니다.


반대로 ‘사용자 영역’의 프로세스가 사용하는 메모리는 객실의 손님이라고 할 수 있습니다. 우리가 이름을 아는 대부분의 소프트웨어가 여기에 해당합니다. 카카오톡, 텔레그램, 마이크로소프트 엑셀 등이 전부 ‘사용자 모드’로 작동하는 ‘사용자 애플리케이션’ 혹은 ‘응용 프로그램’입니다.


커널 프로세스와 사용자 프로세스는 상호 작용합니다. 객실에서 베이컨을 먹고 싶으면 프런트에 전화를 해야 하듯이, 카카오톡을 통해 친구에게 메시지를 보내려면 키보드와 네트워크를 관리하는 커널 영역을 거쳐야 합니다.


지금 이 두 가지 영역의 작동 상황을 보려면, 윈도우에서 ‘컨트롤+알트+딜리트’키를 눌러서 장치 관리자 창을 열고 ‘프로세스’라는 항목을 보면 됩니다. 이 프로세스 항목 중에는 우리와 친숙한 ‘구글 크롬’, ‘마이크로소프트 익스플로러’ 등이 ‘앱’이라는 이름으로 묶여 있는데, 이 프로세스들이 바로 사용자 영역의 프로세스입니다. 반대로 한참 아래로 내려가면 뭘 하는지 잘 모르겠는 ‘시스템’ 등이 메모리와 CPU를 사용하며 실행되고 있습니다. 이 영역의 대부분이 바로 커널입니다.






작업관리자에 있는 프로세스 관리 화면.

지금 제가 타이핑을 하고 있는 컴퓨터만 해도 수많은 프로세스가 다양한 작업을 수행하고 있습니다. 이렇게 다양한 프로세스가 동시에 수행되는 환경에서 가장 중요한 건 ‘메모리 격리’입니다. 크롬이 하는 일은 카톡이 알아서는 안 되기 때문입니다. 502호 객실에서 한밤중에 성인들에게만 허락된 영상을 시청했다는 사실을 503호의 손님이 알아서 좋을 일은 없겠죠.


세상의 모든 애플리케이션은 이 ‘메모리 격리’를 바탕으로 만들어집니다. 이번에 발표된 ‘멜트다운’과 ‘스펙터’는 지금까지 분리되어 있다고 생각했던 사용자 영역의 다른 프로세스 메모리의 영역은 물론이거니와 심지어 커널 메모리의 영역까지 ‘읽어낼 수 있더라’라는 내용입니다. 게다가 CPU의 작동 원리를 이용한 결함이라 쉽게 수정도 힘들답니다. 굳건하게 믿었던 만큼 충격은 컸습니다. 한국과학기술원(카이스트) 전산학부의 김동준 교수는 <한겨레>에 “프로그래머는 커널 영역과 응용 영역(사용자 영역)이 확실하게 구분되어 있다고 생각하고 프로그램을 짠다”며 “프로그래머가 이 영역이 분리되어 있다는 걸 믿을 수 없다면 문제가 심각한 것”이라고 말했습니다.


그런데 메모리 벽들은 대체 어떻게 뚫린 걸까요? 일단 <와이어드>의 ‘어떻게 다수의 엔지니어들이 20년도 더 된 CPU의 결함을 동시에 발견했는가’라는 보도를 보면, 올해 갑자기 누군가 송곳으로 CPU에 구멍이라도 뚫은 것은 아닙니다. 예를 들어, 지난해 7월 독일의 한 전문가는 이미 ‘최근의 마이크로프로세서의 추측 실행이라는 구조를 보니 잘하면 허락 안 받고도 커널 메모리를 읽을 수 있겠다는 생각이 들지만, 나는 실패했다’는 내용의 글을 블로그에 올린 바 있습니다. 지금 문제가 된 ‘추측 실행’이라는 구조가 CPU에 적용된 지도 거의 20년이 흘렀으니까요. 그러나 구글의 ‘프로젝트 제로’ 팀을 비롯한 다수의 과학자들은 두 가지 공격 방법을 동원해 의혹으로만 존재했던 이 ‘해킹 실험’에 성공한 겁니다.


이들은 자신들이 발견한 두 가지 방법에 ‘멜트다운’과 ‘스펙터’라는 이름을 붙였습니다. 이 두 허점을 뚫는 자세한 메커니즘은 무척 복잡하고 이해하기도 쉽지 않습니다. 억지로 설명해놓은 예시가 많이 있지만, 연구진이 발표한 논문 수준의 글을 읽어보면 대부분 잘못된 예시입니다. 따라서 이들이 어떤 CPU 동작의 어떤 허점을 파고 들었는지, 그래서 나타난 결과가 무엇인지를 ‘아는 것’이 중요합니다.


‘멜트다운’은 ‘비순차적 명령어 처리’(OoOE, Out of Order Execution)와 ‘추측 실행’(Speculative Execution)의 약점을 파고듭니다. CPU가 성능을 최적화하기 위해 지금 처리하기 어려운 명령어를 잠시 두고 그 다음 명령어를 먼저 처리하는 걸 비순차적 명령어 처리라 합니다. 추측 실행은 CPU 의 성능을 높이기 위해서 다음에 예상되는 명령어를 미리 처리하는 기법입니다. 추측 실행이 이뤄지면서 추측된 명령어가 사용한 데이터가 캐시에 남겨지기도 합니다. ‘멜트다운’은, 이 두 가지 기술의 취약점을 악용하는 프로그램을 짜 봤더니 허가되지 않은 메모리의 데이터를 다 볼 수 있더라는 이야기입니다.


‘스펙터’는 ‘분기 예측’ 그리고 ‘추측 실행’과 관련이 있습니다. CPU는 조건에 따라 분기되는 부분에서 가정을 세워 미리 실행을 해놓는데, 메모리에서 처리된 조건 값이 예상에 맞지 않으면 이를 캐시 메모리(데이터 임시 저장 장치)에 남겨 둡니다. 역시나 이런 CPU의 작동 원리를 악용하면 경계 검사를 우회하거나, 분기 표적을 주입하는 게 가능하더라고 합니다.


그러나 두 기술이 밝혀낸 취약점의 양상은 다릅니다. 둘 가운데 더 심각한 건 그 이름(멜트다운:붕괴, 스펙터:유령)에서 유추할 수 있듯이 멜트다운이지만, 스펙터 버그를 해결하는 게 더 어렵다고 합니다. 김동준 교수는 <한겨레>에 “멜트다운은 권한을 우회하여 메모리에 올라와 있는 보안정보 (예를 들면, 다른 사용자가 가지고 있는 중요 정보) 등을 빼낼 수 있다. 그만큼 심각한 보안 이슈다. 그러나 멜트다운은 패치를 깔면 소프트웨어적으로 막을 수 있다. 멜트다운은 공격자의 입장에서도 쉽게 실행 가능한 공격이고 수비 입장에서도 쉽게 막을 수 있는 공격이다. 스펙터는 다르다. 스펙터에 대한 소프트웨어 패치는 최근 소개되고 있지만, 아직 완벽한 것은 아니며 성능 하락, 부팅 불능 등의 부작용이 있다. 해당 취약점을 100% 막을 수 있을지는 좀 더 연구가 필요하다”고 밝혔습니다.


이런 결함은 휴대전화 기기에도 영향을 끼칩니다. 휴대전화에도 저전력의 CPU가 들어가는데 대표적인 업체가 ARM입니다. 인텔과 ARM의 칩들은 멜트다운 공격에 취약점을 보였습니다. 참고로 AMD는 멜트다운 공격에 대한 취약점이 보고된 바가 없습니다. 스펙터 공격에는 인텔, AMD, AMR 세 업체가 모두 취약점을 드러냈습니다.


그러나 지나친 우려는 금물입니다. 김 교수는 “겁을 먹고 컴퓨터를 켜지 않는다든지 할 필요는 없다. 이런 정도의 공격 위험은 소프트웨어의 취약성을 통해서도 항상 존재해왔다. 일반 소비자로서 할 수 있는 일은 업데이트되는 보안 패치를 꾸준하게 까는 정도”라며 “가장 걱정되는 건 클라우드를 기반으로 하는 업체들이다. 여러 사용자에 의해서 공유되는 시스템이기 때문에 악의를 가진 일반 사용자가 공격자로 돌변할 수 있으므로 패치가 보다 더 시급하다”고 밝혔습니다.






[HOBBY/Info. Knowledge] - 연말정산 서류절차

[HOBBY/Info. Knowledge] - 근로기준법 Q&A (퇴직금, 실업급여, 해고 예고수당 등)

[HOBBY/Info. Interest] - CNBC가 꼽은 2018년도 가상화폐 전망 5가지는?

[HOBBY/Info. Knowledge] - 사람은 어떤 사람과 사랑에 빠지는가?

[HOBBY/Info. Knowledge] - 인간 수명 한계 115년 설(說)에 학계 술렁

[HOBBY/Info. Knowledge] - 햄버거와 흑사병 - 몽골이 만들어 낸 세계



출처 : http://v.kakao.com/v/20180112113622034



댓글