MDAC (Microsoft Data Access Component)이란?

Microsoft 관련 제품을 사용하다 보면, 간혹 MDAC이란 이름을 접하게 된다.
MDAC은 Windows NT4 Service Pack 4 또는 Internet Explorer 4.0 이후 출시된 대부분의 Microsoft 제품 (Windows, Office, Visual Studio, Internet Explorer 및 모든 서버 제품군)에 포함되어있으며, 사용자도 인지하지 못하는 사이에 (아니 자세히 관찰하면 제품설치 시 MDAC 설치 화면을 볼 수 있다.) 항상 상위 버전으로 자동 설치 될 뿐, 제거되거나 하위 버전으로 변경되는 경우는 거의 없다. 그럼 이 MDAC이란 무엇일까? 
Web 또는 LAN 이용하여 데이터를 주고받는 클라이언트/서버 형태의 응용프로그램에서 관계형(SQL) 또는 비관계형에 상관없이 다양한 데이터 소스로부터 쉽게 정보(Information)을 통합-공유할 수 있는 ADO, OLE DB, ODBC 등의 컴포넌트들을 제공하여 준다.


MDAC의 버전


그 동안 배포된 MDAC의 버전을 살펴보면, MDAC 1.5, 2.0, 2.1, 2.5, 2.6, 2.7, 2.8등 다양한 버전이 존재하며, 또한 각 버전별 Service Pack도 존재한다. 이 많은 버전들의 MDAC을 설치하는 원칙은 매우 단순하다. 데이터를 공급 받는 클라이언트(데이터 소비자)의 MDAC 버전은 데이터를 제공하는 서버(데이터 소스)의 MDAC 버전보다 높거나 최소한 같아야 한다. 이렇게 하여야지만 데이터 소스에서 제공하는 모든 기능 및 기존 문제점들을 수용할 수 있게 된다. 일례로 자신의 장비에 MDAC 버전을 최소 어느 버전 이상으로 설치하여야 하는가는 자신의 장비에서 연결하는 최신 SQL Server 버전 및 서버에 설치된 최신 SQL Server Service Pack 버전이 포함한 MDAC 보다 같거나 높으면 된다. 추가로 요즈음 제공되는 MDAC관련 Tool의 경우 설치된 MDAC 버전을 제거하거나, 하위 버전으로 회귀하는 기능들을 제공하기도하지만 절대적인 원칙은 항상 MDAC은 상위 버전으로 변경될 뿐 하위버전으로 변경하는 것을 권장하지 않는다. (일부 클러스터 환경에서는 서버 환경에 특정 버전 이상의 MDAC 설치를 권장하지 않는 경우도 있지만..) 

SQL Server의 제품 CD 및 SQL Server Service Pack CD를 살펴 보면 "x86\other\sqlredis.exe"라는 파일을 공통적으로 발견할 수 있다. 이 sqlredis.exe의 경우 최신 MDAC과 완전하게 동일하지는 않지만, 현재 설치된 SQL Server 버전에 문제없이 연결이 가능하도록 구성되었으며, 재배포 가능한 형태의 MDAC 대부분 컴포넌트를 포함하고, Remote에서 설치가 가능한 무인실행 설치 파일이다. 따라서 방화벽 클라이언트 응용프로그램들이 방화벽 또는 프락시 서버에서 공유되도록 하듯이, SQL Server 관리자들은 sqlredis.exe를 SQL Server 상에서 파일 공유하여 해당 SQL Server를 연결하고자 하는 모든 클라이언트는 이 파일(sqlredis.exe) 설치에 의해 SQL Server연결에 관련된 기본 요건을 쉽게 구성할 수 있도록 하는 것도 하나의 유용한 팁이 될 수 있다. 

SQL Server를 사용하는 웹서버 및 기타 응용프로그램 서버 관리자의 경우, 잊지 말고 SQL Server Service Pack 적용 시 항상 각각의 웹서버에 이 sqlredis.exe를 수행하여 클라이언트의 MDAC 버전을 서버와 일치 시켜준다면, 향후 겪게 될 많은 문제점들을 피해 갈 수 있을 것이다. 


MS MDAC(MS Data Access Components) Heap 오버플로 취약점 

-- 해당 시스템 -------- 
MDAC 2.7 이전버전 
Internet Explorer 버전 6 
Internet Explorer 버전 5.5 
Internet Explorer 버전 5.1 

--영향----------------- 
원격공격자가 Request에 대한 실행권한으로 임의의 명령어를 실행할 수 있다. 
웹서버인 경우 권한은 SYSTEM 권한일 수 있으며, 클라이언트 프로그램인 경우 웹페이지를 볼 수 있는 사용자계정의 권한일 수 있다. 

-- 설명--------------- 
MDAC는 데이터베이스와 네트웍 어플리케이션간의 프로세스 상호연동에 필요한 유틸리티의 집합체이다. 그런데, MDAC의 Remote Data Service(RDS) 콤포넌트에 버퍼오버플로 취약점이 존재한다. RDS는 클라이언트가 웹상에서 데이터 베이스에 연동하는데 필요한 프로세스의 한 단계 역할을 한다. 

이 취약점을 이용한 공격법은 두가지 경우를 생각할 수 있다. 

첫째, 공격자는 취약한 서비스에 마치 자신의 시스템이 IIS 서버인 것처럼 악성의 HTTP Request를 보내는 방법이 있다. 만약 RDS가 enable된 상태라면 공격자는 IIS 서버인 것처럼 임의의 명령어를 실행할 수 있다. RDS는 윈도우 2000과 XP 시스템에서는 기본적으로 설정되어 있지 않다. 다른 윈도우 시스템은 마이크로 소프트 보안 권고문에 따라 RDS를 disable시킬 수 있다. 

둘째, 클라이언트 프로그램(예: 인터넷 익스플로러)을 통해 MDAC RDS의 버퍼오버플로를 웹페이지를 이용하여 공격하는 방법이 있다. 윈도우 XP를 제외한 대부분의 인터넷 익스플로러를 실행하고 있는 운영체제는 이 공격에 취약하다고 볼 수 있다. 

-- 해결책--------------- 
MS사의 패치적용(MS사 권고문 MS02-065의 Q329414 패치) 
패치다운로드 위치: 
http://www.microsoft.com/security/security_bulletins/ms02- 
065.asp. 

MS사의 권고문에 따르면, 패치가 적용되었다 할 지라도 취약한 버전에 대한 공격 시나리오는 존재한다고 밝혔다. 이는 취약한 ActiveX 컨트롤이 MS사에 의해 사인이 되어 있기 때문에 패치가 MDAC 컨트롤 프로세스를 Kill할 수 없는 것이다. 

------- 참조 사이트 -------------------------- 
http://www.cert.org/advisories/CA-2002-33.html 
http://www.microsoft.com/security/security_bulletins/ms02- 
065.asp. 
--------------------------------------------


출처 : Tong - sunkencity님의 어라 뭐였더라???통


(N20091202)



본 블로그를 찾은 분들에게 오늘도 축복 있으시길...

+ Recent posts