brunch

매거진 침해대응

You can make anything
by writing

C.S.Lewis

by Moai Sep 23. 2022

CVE-2018-5002

Flash 제로데이 취약점

한 때 유행했던 제로데이 취약점에 대해 분석 내용을 작성한다. 잠재적인 공격 대상은 카타르였고 6월 초에 공격이 시작됐고 이후 Adobe에 의해 2018년 6월 7일에 패치가 됐다.


자세한 분석 레포트는 아래 링크에서 확인할 수 있다.

https://s.tencent.com/research/report/489.html 


분석에 앞서 악성코드 실행 과정은 다음과 같다.

파일 정보는 다음과 같다.

파일 내에는 swf 플래시 파일이 포함되어있는데 속성을 보면 플래시 파일에게 다른 링크를 전달하고 있다.

이 사이트로부터 암호화된 파일을 다운받고 키를 전달받아 복호화 시킨 뒤 실행한다.



취약점을 간단히 설명하면 flash는 ActionScript를 사용하는데 2.0에서 3.0으로 바뀌면서 속도를 향상시키기 위해 avm2.intrinsics.memory기능을 제공하게 된다.

이는 byte array에서 데이터를 빠르게 읽고 저장하기 위해 Domain Memory를 지정하고 OpCode로 읽기/쓰기 작업을 하는 방법이다.



이 스크립트를 까보면 보면 jump 명령어로 0024로 이동해서 li8 명령어를 실행한다.




123456 위치에 있는 값을 읽으려고 하고 있는데.. li8은 메모리를 1024 크기만큼만 할당하고 읽기 때문에 1024 범위 내에서만 값을 읽어야만 한다. 물론 이 라이브러리에는 1024 내에서 데이터를 읽는지 체크하고 1024보다 큰 주소 값을 읽으려고 하면 에러를 발생시키는 코드가 들어가 있다. 에러가 발생될 수 있는 코드이므로 li8은 try, catch 코드로 감싸줘야 하는데 감싸지 않은 경우 Buffer Overflow가 발생하게 된다.



li8(123456) 코드가 try 문 안에 없었으므로 catch 구문으로 가지 못하고 buffer overflow가 발생하게 된다. 아래 그림은 Buffer Overflow가 발생해서 메모리 주소가 변경된 것을 보여주는 사진이다.


매거진의 이전글 Exploit Kit

작품 선택

키워드 선택 0 / 3 0

댓글여부

afliean
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari