Wins blog

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

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보윈도우 모든 버전에 영향 미치는 제로데이 취약점
작성일 2018-10-05 조회 1380

 

 

 

 

지난 20일 ZDI 연구원은 Microsoft JET 데이터베이스 엔진 구성 요소에서 범위를 벗어난 쓰기 취약점을 발표했습니다.


이 취약점은 데이터베이스 테이블의 인덱스 필드를 부적절하게 파싱하기 때문에 발생합니다.

 

원격의 인증되지 않은 공격자는 영향을받는 Microsoft Windows 버전을 사용하면서 특수하게 조작 된 JET 데이터베이스 파일을 열도록 유인함으로써 취약점을 악용 할 수 있습니다. 


성공적인 악용으로 인해 프로세스 컨텍스트에서 임의 코드가 실행됩니다.

 

ZDI에서 공개한 취약점 TimeLine은 다음과 같습니다.

 

 


(0Day) Microsoft Windows Jet Database Engine Out-Of-Bounds Write Remote Code Execution Vulnerability

[https://www.zerodayinitiative.com/advisories/ZDI-18-1075/]

 

 

 

이 취약점은 ZDI 120 일 기한에 따라 패치없이 공개됩니다.

05/08/18 - ZDI가 해당 MS의 취약점을 보고했으며 MS는이 보고서에 대해 인정했습니다.
05/14/18 - MS가 ZDI에서 보고 한 문제를 성공적으로 재현했다고 답변했습니다.
09/09/18 - MS가 취약점 패치를 전달했으나 9월 안으로 이루어지지 못할 가능성이 큽니다.
09/10/18 - ZDI는 0-day 취약점 공개를 경고했습니다.
09/11/18 - MS는 취약점을 수정했지만, 패치를 발표하지 않았습니다.
09/12/18 - ZDI는 09/20/18에 0-day 공개를 MS에게 의사 전달했습니다.

 


현재까지도 CVE 코드를 할당 받지 않은 0-day 취약점으로 사용자들의 주의가 필요합니다.

 

 

[ Microsoft JET Database 설명 ]

Microsoft JET (Joint Engine Technology)는 제품 및 타사 제품에서 사용하기 위해 Microsoft Corporation에서 개발 한 데이터베이스 엔진입니다. Microsoft JET을 사용하는 일부 제품은 Microsoft Access, Microsoft Visual Basic, Microsoft C ++ 및 Microsoft Excel입니다. Microsoft JET는 데스크톱 응용 프로그램 데이터 저장 및 검색을 위해 설계되었습니다. 따라서 데스크톱 사용자는 로컬 워크 스테이션에서 데이터베이스를 만들고 조작 할 수 있습니다.

 

Microsoft는 JET 데이터베이스 파일로 알려진 독점적 인 파일 형식을 사용하여 JET 데이터베이스 엔진과 함께 사용합니다. Microsoft는 JET 데이터베이스 파일 형식의 4 가지 버전을 개발했습니다. 최신 버전은 msjet40.dll JET 데이터베이스 엔진 모듈에서 지원하는 JET 데이터베이스 파일의 4.x 버전입니다. 그러나 취약한 msrd3x40.dll JET 데이터베이스 엔진 모듈은 JET 데이터베이스 파일의 3.x 버전 만 구문 분석합니다. JET 데이터베이스 파일의 형식 사양은 공개적으로 사용할 수 없습니다

 

 

 

[ 취약점 발생 원인 ]

msrd3x40.dll은 JET 데이터베이스 엔진에서 입력받은 데이타베이스의 인덱스 포인터를 만듭니다.
이 과정에서 LogicalIndexData 필드의 처음 4 바이트를 사용하여 인덱스 포인터를 저장하는 포인터, 즉 테이블 포인터의 오프셋을 계산합니다.


그러나 오프셋을 계산하기 전 LogicalIndexData 필드의 처음 4 바이트 값을 확인하지 않게 되는데, 테이블 포인터의 크기는 0x778 바이트이고 인덱스 포인터를 저장하기위한 오프셋은 테이블 포인터의 오프셋 0x574에서 시작합니다.

 

이로 인해 LogicalIndexData 필드의 첫 번째 4 바이트 값이 0x80보다 큰 경우 인덱스 포인터를 복사하는 동안 범위를 벗어난 쓰기 조건이 발생합니다.

 

원격의 인증되지 취약한 JET 데이터베이스 파일을 사용자에게 전달해 임의의 코드를 실행 할 수 있습니다.

 

 

 

[그림. 1] 웹을 통해 유포되는 악성 mdb

 

 

 

[그림. 2] 악성 mdb 파일로 유도하는 웹페이지 소스코드

 

 

 

요약하면 다음과 같다.

1. 취약한 msrd3x40.dll JET 데이터베이스 엔진 모듈은 JET 데이터베이스 파일의 3.x 버전 만 구문 분석
2. JETDB_Magic_Number 필드의 값은 0x100이어야합니다. 
3. JETDB_Name 필드의 값은 둘 중 하나
   (1) Standard x20Jetx20DBx00
   (2) Jetx20Systemx20DBx20x20x00

4. LogicalIndexData 필드의 처음 4바이트 값이 0x80보다 크면 악성으로 의심

 

 

 

 

 

 

[그림. 3] LogicalIndexData 취약점 코드 - Case1

 

 

 

 

[그림. 4] LogicalIndexData 취약점 코드 - Case2

 

 

 

 


[ 취약시스템 ]

Microsoft Windows 7
Microsoft Windows 8.1
Microsoft Windows 10
Microsoft Windows RT 8.1
Microsoft Windows Server 2008
Microsoft Windows Server 2012
Microsoft Windows Server 2016
Microsoft Windows Server version 1709 (Server Core Installation)
Microsoft Windows Server version 1803 (Server Core Installation)

 

 

 

 

[ 해결방안 ]

1.신뢰할 수없는 출처의 JET 데이터베이스 파일을 데이터 소스로 열지 않도록 합니다.
2.정책 릴리즈 시점에 0-day 취약점으로 보안 패치를 MS에서 발표하지 않아 사용자 개인의 각별한 주의가 필요합니다.
3.MS가 보안패치를 발표하기 전까지 JET 데이타베이스 파일의 사용을 자제해야 합니다.

 

 

 

 

[ Win Sniper 대응방안 ]

Sniper-IPS

[4501] MS Windows JET DB Engine msrd3x40.dll RCE
[4502] MS Windows JET DB Engine msrd3x40.dll RCE.A
[4503] MS Windows JET DB Engine msrd3x40.dll RCE.B
[4504] MS Windows JET DB Engine msrd3x40.dll RCE.C

Sniper-UTM

[805374685] MS Windows JET DB Engine msrd3x40.dll RCE
[805374686] MS Windows JET DB Engine msrd3x40.dll RCE.A
[805374687] MS Windows JET DB Engine msrd3x40.dll RCE.B
[805374688] MS Windows JET DB Engine msrd3x40.dll RCE.C

Sniper-APTX

[3752] MS Windows JET DB Engine msrd3x40.dll RCE
[3753] MS Windows JET DB Engine msrd3x40.dll RCE.A
[3754] MS Windows JET DB Engine msrd3x40.dll RCE.B
[3755] MS Windows JET DB Engine msrd3x40.dll RCE.C

 

 

 


[ 참조 ]

https://www.zerodayinitiative.com/advisories/ZDI-18-1075/
https://github.com/thezdi/PoC/tree/master/ZDI-18-1075
https://www.thezdi.com/blog/2018/9/20/zdi-can-6135-a-remote-code-execution-vulnerability-in-the-microsoft-windows-jet-database-engine

첨부파일 첨부파일이 없습니다.
태그 0-day  JET DB Engine