지난 3월, Embedi 연구팀원인 Maksim Malyutin는 Intel에서 제공하는 칩셋에서 컴퓨터 원격 관리 기능에 치명적인 취약점을 발견했다.[1][2] 지난 7년 동안 판매해오던 이 인텔 칩셋은 공격자가 원격으로 컴퓨터를 제어할 수 있으며 PC, 노트북 및 서버 등 부품이 들어가는 모든 인텔 시스템에 영향을 미친다. 인텔이 지난 약 10년간 판매해오던 칩셋의 심각한 취약점을 발표함으로써 제조업체들은 이에 대한 보안 패치를 적용하기 위해 노력하고 있다.[3] 특히나 인텔 시스템을 적용한 서비스가 소비자도 소비자지만 기업에 더 큰 영향을 미친다는 것이 더 심각한 문제를 초래한다.[4]
인텔, 누구나 한 번쯤은 들어봤거나 아래에 있는 로고를 봤을 것이다. 인텔은 반도체 설계와 제조로 아주 유명한 미국의 기업으로 세계에서 가장 큰 반도체 제조사다.[5] 인텔의 명칭은 Integrated Electronics의 혼성어로 1968년 고든 무어와 로버트 노이스가 인텔을 설립하였다. 인텔에서는 CPU, 메인보드, 네트워크 카드, 그래픽 프로세서 등 주로 컴퓨터와 관련된 칩을 제작하며 이 외에도 통신과 관련된 장치도 만든다.[6] 이번에 문제가 된 것은 이러한 인텔의 칩을 관리하는 엔진(AME)에서 비롯된 것으로 2010년 이후 펌웨어 6.0이상의 버전에서 해당 취약점이 발견되었다.[7]
CVE-2017-5689로 등록된 이 취약점을 좀 더 자세히 말하자면 인텔의 기술 중 관리 엔진이라는 전용 마이크로 프로세서에서 실행되는 원격 관리 프로그램에 취약점이 존재한다.[8] 그 안에서도 ACT (Active Management Technology), ISM (Standard Manageability), SBT (Small Business Technology) 이 3개의 펌웨어에서 문제가 발생하였으며 이를 통해 권한 상승 문제를 이야기시켜 보안 등급 중에서도 치명적인 등급에 속한다.[9][10]
인텔에서 적용한 AMT 기능은 IT 관리자가 컴퓨터를 관리하는 데 있어 편리함과 능률을 향상하기 위해 만들어진 것으로 원격을 통해 서버를 관리하고 제어하는 인텔 액티브 관리 기술(AMT, Active Management Technology)이다.[11] 관리자는 칩셋에 미리 설치된 포트 16992와 16993로 연결한 후 웹 기반의 제어판을 사용하여 시스템을 원격으로 관리할 수 있다.[12] 더욱이 이 기능은 시스템이 종료된 시점에서도 작동하는데 그 이유는 플랫폼 자체가 전원 및 네트워크 케이블에 연결되어 있고 운영체제와 독립적으로 작동하기 때문에 시스템을 꺼도 AMT 웹 인터페이스가 작동한다.[13] ISM은 AMT 기능의 하위 집합을 지원하는 것으로 이를 통해 원격으로 접근하고 보안 감사 로그를 확인하거나 네트워크 접근을 보호, Agent Presence API에 대한 가상화를 지원한다.[14][15] 마지막으로 SBT 플랫폼은 IT 관리를 강화하지 않고도 보안을 유지하며 생산성을 향상하길 원하는 중소기업 대상으로 만들어졌다. SBT 역시 AMT 기능의 하위 집합을 지원하며 로컬 유지를 관리하는 타이머, 스토리지 관리 및 운영하는 기능을 하고 있다.[16] 이처럼 AMT는 네트워크 접근부터 메모리 및 디스크에 이르기까지 많은 권한이 필요하다.
정리하자면 AMT는 하드웨어이며 시스템에 설치된 모든 운영 체제와 별도로 작동하여 이처럼 많은 권한으로 보호받을 수 있습니다. 이 경우 AMT에 대한 접근은 암호로 보호된다. 하지만 이번에 발견된 취약점을 이용하면 AMT 암호를 가볍게 무시할 수 있다는 것이다.[17] 즉, 제 3자가 권한 상승을 할 수 있는 문제에 빠진다.
이러한 취약점은 인텔의 AMT 웹 인터페이스를 인증되지 않은 사용자로부터 보호하기 위해 HTTP digest와 kerberos 인증을 사용했기 때문이라 추측했다. 더불어, 권한 상승 문제는 인텔 AMT 웹 인터페이스가 ATTP 다이제스트 프로토콜을 통해 사용자 인증을 처리하는 방식이 challenge-response 패러다임에 기반을 두고 있을 것으로 본다.[18]
HTTP Digest 인증은 HTTP 통신에서 작동하는 인증 방식 중 하나로 사용자 이름이나 비밀번호 등을 조합하여 MD5 값으로 인증하는 기본 인증보다 보안이 강화된 인증이다.[19] Digest 인증의 단계는 먼저 클라이언트가 서버에 로그인을 요청하면 서버는 무작위로 생성된 nonce 값을 HTTP 메서드 및 요청된 URI로 반환한다. 그런 다음 사용자의 이름과 암호가 입력이 완료되면 클라이언트 시스템은 입력된 사용자 이름 및 암호를 서버가 제공한 nonce 값과 HTTP 메소드 및 요청된 URI 해시 기능을 적용하여 암호화된 문자열을 생성한다. 생성된 암호화 문자열을 서버에 보내고 서버는 사용자에게 받은 이름과 암호를 데이터베이스에 저장한다. 서버는 데이터베이스와 사용자의 입력을 strncmp()함수를 통해 두 문자열을 비교하고 일치할 경우 사용자가 인텔 AMT 웹 인터페이스에 로그인 접근을 허용한다.[20] 이때 서버가 암호화된 문자열을 비교하는 데 사용하는 strcmp() 함수에 AMT 취약점이 존재한다.[21]
Strcmp()는 비교에 따라 음수, 0, 양의 정수를 반환하고 값이 같으면 0을 반환하는 문자열 비교 함수다. 성공적인 인증을 위해서는 사용자의 입력과 데이터베이스에 저장된 변수가 같아야 한다. 따라서 strncmp() 함수는 모든 길이에 대해 0 값을 반환해야 한다. 하지만 이 취약점은 strcmp() 함수에서 사용자의 입력 값이 아닌 변수의 길이로 사용함으로써 문제가 된 것이다. 아마도 프로그래머의 작은 실수이지 않을까 생각한다.[22]
사실 이 Intel의 취약점에 대해 세부적인 사항은 인텔의 요청으로 공개되지 않았다.[23] 다만, AMT가 인증되지 않은 접근을 허용한다는 점만 알려진 상태다. 더불어, 기업 모드가 사용자 모드에 비해 상대적으로 더 취약하다는 것으로 알려졌다. 즉, 사용자 모드, 엔터프라이즈 모드는 사용자에게 미치는 영향이 미미하다는 것이다. AMT에 인증되지 않은 접근은 연결을 위해 TCP 포트 16992와 16993을 통해 들어올 것으로 추측하고 있다.[24] 이 같은 이야기는 날개 돋친 듯이 퍼져 나가 전체 인터넷을 스캔하여 열려있는 포트를 찾고 있다는 보고도 있었다고 한다.[25]
인텔은 이 버그를 해결하기 위해 펌웨어 패치를 발표했으며 악용 사례는 아직 발견하지 못했다고 전했다.[26] 하지만 이는 단순히 일부분만 고치는 간단한 응급조치일 뿐 위협에 있는 모든 컴퓨터를 방어할 순 없는 노릇이다. 예를 들어 제조사의 제품이 너무 오래되었다면 이 같은 경우 버전마다 맞춤형으로 패치를 적용해줘야 하는 것이 맞는 거지만 사실 이는 현실적으로 힘든 일이다.[27] 더불어, 앞서 말했듯이 기업 같은 경우 이 취약점에 그대로 노출되어 있어 이 같은 경우 중요한 인프라는 사용에서 배제하거나 혹은 새로운 하드웨어를 구입하는 것을 추천한다고 인텔 관계자는 말했다.[28]
다시 한번 말하지만, 이 취약점은 인텔 AMT, ISM, SBT 플랫폼의 펌웨어 버전 6.x, 7.x, 8.x 9.x, 10.x, 11.0, 11.5 및 11.6에 영향을 준다. 하지만 6 또는 11·6 이전 버전은 영향을 받지 않는다.[29] 인텔은 이 취약점을 매우 중요하고 치명적인 취약점으로 보고 있기 때문에 이 글을 보고 있는 인텔 사용자라면 한시바삐 새로운 펌웨어 버전으로 업데이트하길 추천한다. 또한, 이 취약점과 관련하여 탐지 가이드라인 및 완화 가이드라인을 제공하고 있으니 관심있는 분은 확인해주길 바란다.[30]