보안 제품정보


램 스크래퍼 멀웨어와 PCI DSS의 상관관계 2014.07.24

업계 표준인 PCI DSS를 잘 지켜도 유출사고로부터 자유롭지 못해

POS 보안에서 제일 중요한 건 ‘분리’와 ‘공인’


[보안뉴스 문가용] 타깃(Target). 니만 마커스(Neiman Marcus). 마이클스(Michael┖s). P.F 챙스(P.F. Chang┖s). 유명 해외 사업체들이라는 것 외에 어떤 공통점이 있을까? 산업 보안 표준을 잘 지키고 있던 신뢰받는 기업들이라는 점, 그리고 전부 최근 POS 단말기를 노리는 램 스크래퍼(RAM Scraper)라는 멀웨어에 당했다는 것이다.

 ▲ 더 이상 추억(memory)을 공유하지 않는 사이가 좋겠어.

위 업체들 중 타깃의 경우, 최소 1백2십억 달러에 달하는 손실을 입었다는 분석이 지배적인 상황이다. 게다가 손실은 계속해서 발생 중이다. 타깃의 CEO인 그렉 스타인하펠(Gregg Steinhafel) 씨는 모든 책임을 안고 그 자리에서 물러서 정보유출 사고로 인해 최초로 퇴진한 CEO로 기록됐다. 이제 단순히 보안 표준절차를 지킨 것만으로는 부족한 게 현실이다. 특히 POS 단말기를 노린 멀웨어 공격에 노출되어 있는 업체는 더 그렇다.


표준이라고 불리는 PCI DSS는 왜 무용지물인가?

POS 단말기는 대부분 카드 리더기를 장착한 컴퓨터다. 그리고 대부분의 컴퓨터에는 영구 저장소(하드드라이브나 플래시 메모리)와 임시 저장소(RAM)가 있다. 신용카드의 보안표준이라고 불리는 PCI DSS(Payment Card Industry Data Security Standard : 지불카드 산업 정보보안 표준)에 따르자면 판매자들은 신용카드 정보를 영구 저장소에 저장할 때 혹은 공공 네트워크를 통해 전송할 때 꼭 암호화시켜야 하지만 RAM에 대해서는 별다른 규제사항이 없다.


램 스크래퍼라고 불리는 멀웨어는 메모리 파서(memory parser)라고도 불리는데 바로 이 점을 파고들기 때문이다. 물건을 구매하기 위해 신용카드를 긁을 때 POS 단말기는 해당 정보를 RAM을 통해 암호화하지 않은 채로 처리한다. 만약 그 단말기에 램 스크래퍼가 있다면 정보가 램 스크래퍼에게도 전달된다.


램 스크래퍼가 신종 멀웨어는 아니다. 첫 발견은 2009년에까지 거슬러 올라가며 대중들 사이에 이슈가 된 것은 2013년의 일이다. 그러니 하나도 놀랄 일이 아니다. 오히려 놀라야 하는 건 이렇게 오래된 공격방식이 버젓이 존재하는데도 하나도 변하지 않은 PCI DSS의 지침이다. 막연히 “메모리 스크래핑과 같은 새로운 위협이나 공격에 대비해 개발자의 훈련도 늘 최신화해야 한다”는 문구만 들어있을 뿐이다.


물론 없는 것보다야 낫다. PCI DSS를 지키지 않는 사업장은 지키는 사업장보다 훨씬 취약한 것이 사실이다. 현재 PCI DSS만으로는 충분치 않다는 것이다. 그렇다면 US CERT는 어떤가? 하지만 US CERT가 제시하는 많은 솔루션들도 결국엔 PCI DSS로 귀결된다. 즉 실질적인 도움이 되지는 않는다는 것이다.


해결책 찾기

이를 해결하기 위해 사업주들은 POS 시스템을 도입할 때 두 가지 의문을 가지고 있어야 한다.

1. 이 시스템을 사용하면 애플리케이션들이 각각의 메모리를 넘나들 수 있게 되는가?

2. 이 시스템에는 공인된 암호화 알고리즘이 적용되어 있는가?

POS 단말기 대부분은 윈도우 운영체제를 사용한다. 그렇기에 애플리케이션들이 메모리에 접근할 수 있다. 리눅스도 비슷하다. RAM이 좋아하는 취약점이 바로 이 부분이다.


신용카드가 처리되려면 어느 단계에서건 암호를 다시 풀어야 한다. 그런데 비인가 애플리케이션이 깔려 있는 곳에서 암호 해독을 실시하면 어떻게 될까? 차라리 암호화 하지 않느니만 못하게 된다.


그러므로 암호화된 정보를 다시 평문으로 바꾸려면 먼저 시스템 환경이 철저히 보호된 곳이어야 한다. 그렇게 하려면 제일 먼저 ‘분리’가 이루어져야 한다. 즉 하드웨어와 소프트웨어를 사용해 컴퓨터의 물리적 공간을 논리적으로 나누어야 한다는 소리다. RAM에 파티션을 주는 건 굉장히 좋은 방법이다. 이런 목적으로 제작된 운영 시스템으로 분리 커널이라는 것도 있으니 참고하자.


또, 보안에 민감한 개발자라면 애플리케이션들이 각각 할당된 메모리 구역 외에 다른 애플리케이션의 구역에 있는 정보에 접근하게 할 리가 없다. 특별한 목적이 있지 않은 이상에 말이다. 그렇기 때문에 대단히 위험할 수 있는 항공보안 시스템에는 윈도우가 사용되지 않는다. 윈도우에는 이런 철저한 보안 개념이 빠져있기 때문이다. 하지만 윈도우는 사용하기 편하고 인터페이스가 친숙하다는 장점이 있다. 그렇기 때문에 일반 사업체를 대상으로 한 POS 단말기는 대부분 윈도우 체제를 고집하고 있는 것이다.


그래서 윈도우 체제를 사용하는 POS는 가상화를 도입했다. 한 파티션에서 민감한 신용카드 정보를 보호하고 처리하는 동안 다른 파티션에서는 POS의 다른 기능이 실행되는 것이 ‘파티션’ 혹은 ‘분리’라면 가상화는 한 컴퓨터 내에서 한 개 이상의 운영체제를 돌리는 것을 말한다. 그러나 가상화만으로는 안전성이 완벽하게 보장되지 않는다. 가상화의 방법이나 절차 자체도 너무 다양하기 때문이다. 그래서 오히려 가상화 때문에 공격 루트가 더 다양해지기도 한다.


신용카드 정보는 카드가 긁히는 순간 암호화되어야 마땅하다. PCI DSS는 이때 산업에서 공인하고 받아들인 알고리즘을 사용해 암호화할 것을 요구한다. 국가기관이나 국가가 인정한 기구에서 여러 가지로 실험하고 보강한 알고리즘만큼 튼튼한 비인가 알고리즘이 있을 확률이 낮기 때문이다. 그러므로 POS 단말기나 시스템을 도입하려는 사업주는 이 알고리즘의 공인 여부를 철저하게 확인할 필요가 있다.


언제까지 PCI DSS에 기댈 수만은 없다. 역사를 통해 배우는 게 사람이라면, PCI DSS만 믿고 있다가 당한 업체들을 통해 충분히 간접 경험할 수 있어야 한다. 그렇다고 이를 무시하라는 말은 아니다. 표준 절차도 지켜가면서 ‘분리’와 ‘공인’이라는 두 키워드를 가지고 자기만의 방어책도 구축해야 한다는 것이다. RAM에서 정보를 분리하되 공인된 알고리즘을 가지고 하는 안정된 POS를 얼른 찾아보자.

ⓒDARKReading

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


<저작권자: 보안뉴스(http://www.boannews.com/) 무단전재-재배포금지>