Wins blog

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

보안 정보

앞 내용 보기 다음 내용 보기
취약점 정보[CVE-2018-0891] MS IE Scripting Engine Information
작성일 2018-03-30 조회 845


개요
Microsoft IE 및 Edge 에 정보 노출 취약점이 존재한다.

 

해당 취약점은 Js-SubString-New 함수가 메모리에 부적절하게 접근하여 발생한다. 원격의 공격자는 사용자로 하여금 악의적으로 조작된 웹 페이지에 접속하도록 유도하여 공격 할 수 있다. 

 

공격 성공 시, 공격자는 대상자의 정보를 얻을 수 있다.

 

 

확인 내역

해당 취약점은 HTML 문서에 다음과 같은 특징을 가진 JavaScript 코드가 포함 되어 있을 때 발생합니다.

 

- 배열 개체의 join() 메서드를 사용하여 많은 수의 문자열을 가진 개체 X 가 생성 됩니다.
- RegExp 객체의 비표준 입력 속성은 문자열 X의 일부 문자에 대해 문자열 X의 match() 메서드를 호출하는 toString() 메서드로 객체를 설정 합니다.
- RegExp 개체의 RegExp.leftContext 또는 RegExp.lastMatch 속성은 나중에 액세스됩니다.

 

위와 같은 경우에
jscript9! Js :: SubString :: New () 메서드에서 정의되지 않은 JavascriptString * 문자열 객체가 만들어지고(길이가 유효하지 않음)


그 후에 Js :: JavascriptString :: AllocateLeafAndCopySz() 메서드에서 C 표준 라이브러리 memcpy() 메서드가 호출되어


매우 큰 값의 문자열 값을 복사하게 되어 취약점이 트리거 됩니다.

 

[그림1. AllocateLeafAndCopySz 내역]

 

패치는 regexp 데이터를 무효화하는 ".match" 함수가 호출되는 경우 reset flag 를 다시 한 번 확인하도록 하였습니다.

 

[그림2. 패치 내역]

 

해당 취약점에 대해 Goolge project-zero 에서 POC를 공개하였고 Exploit DB에도 게시 하였습니다.

 

[그림3. POC 내역]

 

해당 POC로 확인 결과는 아래와 같습니다.

 

[그림4. 패치가 진행된 경우]

 

[그림5. 취약한 경우, 출처:bugs.chromium.org]

 

 

대응 방안

1. 최신 버전으로 업데이트
해당 벤더사에서 발표한 보안 권고문을 참고하여 최신의 버전으로 업데이트 합니다.
https://portal.msrc.microsoft.com/en-US/security-guidance/advisory/CVE-2018-0891


2. 당사 Sniper 에서는 아래의 패턴으로 대응 가능하다.

[IPS 패턴블럭]
[4180] MS IE Scripting Engine Information Disclosure

 

[UTM]
[805374480] MS IE Scripting Engine Information Disclosure

 

[APTX]
[3422] MS IE Scripting Engine Information Disclosure

 

 

참조
https://bugs.chromium.org/p/project-zero/issues/detail?id=1461&can=1&q=ifratric&sort=-id
https://www.exploit-db.com/exploits/44312/
https://github.com/Microsoft/ChakraCore/commit/63a49d8b89d063b81401679d35253e196928d9d7
https://github.com/Microsoft/ChakraCore/blob/2d15da5f26d1061c2b7ca76604b8bcfd30046f8c/lib/Runtime/Library/JavascriptString.cpp

 

 

첨부파일 첨부파일이 없습니다.
태그 CVE-2018-0891  AllocateLeafAndCopySz   regexp