시스템 콜 남용하는 방법...OS와 앱 제조사들의 개별적 패치로 해결
[보안뉴스 문가용 기자] 특정 칩을 공격할 수 있게 해주는 새로운 부채널 공격 기법이 발견됐다. 현대 운영 시스템의 근본적인 기능을 악용하는 방법으로, 완벽하게 감춰져 있다고 여겨지는 데이터에 접근할 수 있게 해준다.
[이미지 = iclickart]
이 공격에는 페이지 캐시 공격(Page Cache Attack)이라는 이름이 붙었다. 같은 이름의 보고서가 최근 발표되기도 했다. 페이지 캐시 공격은 윈도우와 리눅스 환경에서 잘 통하는 것이기 때문에 다른 종류의 OS에도 적용이 가능할 수 있다. 또한 하드웨어로 전달되는 명령을 비트는 공격이 아니라는 점도 커다란 특징이다. “권한이 낮은 사용자 계정으로도 사용할 수 있는 시스템 콜(system call)을 활용한 공격입니다.”
이 공격 방법을 찾아낸 연구원들 중 한 명인 알렉스 이오네스큐(Alex Ionescu)는 보안 업체 크라우드스트라이크(CrowdStrike)의 부회장으로, 공격 성립을 위해 필요한 것을 다음과 같이 설명한다. “캐시에 뭔가를 강제로 삽입할 수 있어야 하고, 강제로 삽입한 것이 캐시 안에 들어 있는 것을 확인할 수 있어야 합니다. 이번 연구를 통해 깨달은 게 있는데요, 바로 캐시는 하드웨어에만 있는 게 아니라는 겁니다. 캐시는 모든 것에 있더군요.”
이 익스플로잇의 가장 큰 특징은 “공격자들이 캐시 페이지 전체를 살피게 해주고, 그런 다음 필요한 데이터를 빼낼 수 있게 해준다는 것”이다. 캐시 내 데이터가 수 밀리세컨드만 저장된다는 걸 생각하면 꽤나 놀라운 일이다. 그러므로 키스트로크의 수를 읽어내고, 암호화 키와 관련이 있는 어떤 응답의 평문 자료까지도 볼 수 있게 된다.
보안 업체 트립와이어(Tripwire)의 보안 전문가인 크레이그 영(Craig Young)은 이 보고서(https://arxiv.org/pdf/1901.01161.pdf)를 읽고 나서 “현대 OS 아키텍처의 가장 기본적인 개념을 남용함으로써 고립된 프로세스들 사이에 데이터 채널을 만들고, 키스트로크 타이밍을 로깅하고, 무작위 수 생성기를 염탐할 수 있다는 것이 증명됐다”고 말했다. “즉 권한이 낮은 상태에서 다른 프로세스로부터 정보를 훔쳐갈 수 있다는 것입니다.”
또한 영은 “공격을 당한 OS에 있는 정상 시스템 콜에 근거한 취약점”이라고 설명하며, “OS들이 설계 단계에서부터 지나치게 뭐든지 허용해주고 있다는 맹점을 찌른 공격이 가능하다”고 덧붙이기도 했다. “권한이 낮은 프로세스에도 지나치게 높은 권한이 주어집니다. 특히 특정 캐시 관련 시스템 콜에서 이런 부분들이 발견되는데, 이번 연구가 바로 이점을 찌른 것입니다.”
즉 취약점이 정상적인 시스템 콜의 설계 개념 자체에 있다는 것인데, 이는 공격자들에게 희소식이다. “부채널 공격 취약점인 멜트다운(Meltdown)과 스펙터(Spectre)는 수준이 굉장히 높은 해커들만 익스플로잇이 가능했습니다. 사실 불가능에 가까웠고, 멜트다운과 스펙터를 악용한 공격이 실제 발생한 사례도 아직 없죠. 하지만 시스템 콜을 활용해 부채널 공격을 할 수 있게 된다면 이야기가 달라집니다. 공격 난이도가 떨어진 것입니다.”
보안 업체 주니퍼 네트웍스(Juniper Networks)의 위협 연구원인 무니르 하하드(Mounir Hahad)는 “멜트다운과 스펙터는 아무나 건드릴 수 있는 게 아니었다”고 동의한다. “이번 공격은 훨씬 더 간단하고 하드웨어에 의존하는 공격도 아닙니다. 일반적인 해커들도 활용이 가능할 정도입니다.”
게다가 애플리케이션 개발자들이 종종 사용하는 ‘지름길’ 때문에 이 공격은 한층 더 쉬워지기도 한다. 보고서는 PHP 함수인 microtime을 암호화와 관련된 기능을 위한 의사 난수 시드(pseudo-random seed)로서 활용하게 해주는 PHP 프레임워크들을 예로 든다. “이를 통해 공격자들은 microtime 리턴 값과 암호화 생성기로의 호출을 캡처할 수 있게 됩니다. 즉 암호화 기능의 기본 바탕이 되는 정보가 무엇인지 파악할 수 있는 것이죠. 복호화가 훨씬 쉬워지게 됩니다.”
이오네스큐는 “일단 위험을 완화시키는 건 가능하다”고 말한다. 하지만 OS 제조사와 애플리케이션 개발자 모두가 각자의 소스코드를 검사하고 취약점을 발견하고 각각의 패치를 발표해야만 가능하게 된다. 이는 좋은 점과 나쁜 점 모두를 가지고 있다. 하하드는 “좋은 점은 관리자가 특별히 할 수 있는 게 없다는 것”이라고 말한다. “능동적으로 막을 수 있다거나 하는 취약점이 아닙니다. 패치를 기다려야 하죠.”
그렇다면 나쁜 점은 무엇일까? “일반적인 패치 관행을 보세요. 패치가 개발되는 것도 그렇고 그것이 생태계 내에서 최종 사용자까지 내려오는 데 시간이 굉장히 많이 걸리죠. 게다가 최종 사용자가 패치를 하지도 않아요. 그런 상황에서 패치로 해결할 수 있다는 건 좋은 일이기도 하지만, 나쁜 일이기도 합니다.”
3줄 요약
1. 캐시 공간에서 메모리 취득할 수 있게 해주는 부채널 공격 발견됨.
2. 멜트다운과 스펙터와 달리 시스템 콜을 남용하는 것이라 공격 난이도 전혀 안 높음.
3. OS 제조사들과 소프트웨어 개발사들이 각자 이 취약점 공부하고 패치 발표해야만 함.
[국제부 문가용 기자(globoan@boannews.com)]
Copyrighted 2015. UBM-Tech. 117153:0515BC
<저작권자: 보안뉴스(www.boannews.com) 무단전재-재배포금지>