윈도우 8,윈도우 10등에 존재하는 주소 공간 배치 무작위 취약점 발견 및 임시 대처 방법

꿈을꾸는 파랑새

일단 해당 취약점은 윈도우 8, 윈도우 10등에 존재하는 주소 공간 배치 무작위 취약점입니다. 일단 기본적으로 윈도우8 에서는 시스템 전체에 ASLR 강제의 구현 방법이 변경되었습니다. 이러한 변경으로 말미암아 충분한 엔트로피를 가지고 ASLR 강제 동작을 수행하기 위해 system-wide bottom-up ASLR을 사용하는 것이 필요해집니다. 그리고 EMET와 Windows Defender Exploit Guard 시스템 전체에 ASLR 강제를 활성화한 경우에는 bottom-up ASLR이 적용되지 않기 때문에 ASLR을 사용하지 않는 실행 파일의 메모리로 재배치 무작위가 적절한 수행되지 않을 수가 있습니다.
기본적으로 영향을 받는 윈도우 버전은 다음과 같습니다.
Windows 8 및 이후 Windows 시스템 즉 윈도우 8,윈도우 10 사용자에게 영향을 미치는 취약점입니다. 여기서 주소 공간 배치 무작위 (ASLR, Address Space Layout Randomization)가 무엇인지 모르시는 분들도 있는데 주소 공간 배치 무작위 (ASLR, Address Space Layout Randomization)는 Windows Vista(윈도우 비스타)에서 메모리상의 코드를 이용한 공격에 대한 대책으로 ASLR 기능이 이제부터 기본적으로 해당 기능이 추가되기 시작을 했습니다. 즉 악성코드가 실행 모듈을 메모리에 로드 위치를 예측 불가능하게 하는 것으로 ROP(Return-oriented programming) 등과 같이 특정 메모리 주소에 있는 코드를 악용 한 공격이 성공할 확률을 줄여주는 보안 기능입니다.

그러나 실행 파일을 만들 때 옵션 / DYNAMICBASE 을 달아 연결되어 있지 않으면, ASLR 기능은 활성화되지 않습니다.
Windows 8 이전 버전에서는 시스템 전체에 ASLR를 강제 여부는 레지스트리 키 HKLM\SYSTEM\CurrentControlSet\Control\SessionManager\Memory Management\MoveImages 값으로 제어되고 있습니다.

해당 레지스트리 키의 값을 0xFFFFFFFF 로 설정하면 Windows는 재배치 테이블을 가진 실행 파일을 로드 할 때 ASLR을 적용할 수 있습니다. 이에 따라 시스템을 다시 부팅 할 때마다 또는 다른 시스템 사이에서 로드되는 메모리 위치가 변화하게 됩니다. 그리고 윈도우 8에서 시스템 전체에 ASLR을 강제하는 구현 방법이 변경되었습니다.

더 자세한 내용

Windows 8에서 시스템 전체에 ASLR 강제 레지스트리 키 HKLM\System\CurrentControlSet\Control\Session Manager\Kernel\MitigationOptions 값으로 제어됩니다. 또한, 시스템 전체에 ASLR 적용 시에는 충분한 엔트로피를 가진 상태에서 ASLR 강제를 수행하기 위해 시스템 전체에 대해 bottom-up ASLR 이 적용되어 있습니다. 그래서 EMET와 Windows Defender Exploit Guard는 ASLR 및 기타 취약점 완화 기법을 사용하지 않는 응용 프로그램을 보호하기 위해 Microsoft EMET가 출시되었습니다. 그리고 EMET의 GUI (그래픽 사용자 인터페이스)는 취약점 완화 기법을 시스템 전체에 적용하거나 응용 프로그램마다 적용하는 등의 설정을 할 수 있습니다. 그리고 시스템 전체에 적용은 윈도우 자체에 구현된 취약점 완화하는 기법을 사용합니다. 각 응용 프로그램의 적용은 EMET 라이브러리가 해당 응용 프로그램 고유의 프로세스 공간에 로드됩니다.
Windows 10 Fall Creators Update에서는 EMET 기능은 Windows Defender Exploit Guard 에 이어졌습니다.
해당 취약점은 일단 지금은 보안 갱신이 나오지 않은 제로데이 입니다. 먼저 윈도우 8 및 그 이후에 발매된 윈도우는 다음 레지스트리 값을 가져옴으로써 전체 시스템의 bottom-up ASLR 및 ASLR 강제를 활성화할 가능 합니다.
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\kernel으로 이동을 해서 MitigationOptions=hex:00,01,01,00,00,00,00,00,00,00,00,00,00,00,00,00으로 변경을 해주면 됩니다.
해당 키값이 없으면 해당키 값을 만들고 해당 hex 값을 입력하시면 됩니다. 물론 변경을 하기 전에 반드시 백업 즉 내보내기를 통해서 해당 부분을 수정하기 전에 백업하시면 됩니다. 그리고 레지스트리 값 중 첫 번째 01 이 ASLR 강제 지정, 두 번째 01 이 bottom-up ASLR의 지정을 의미합니다.
그리고 주의할 것 구형 AMD,ATI 비디오 카드의 드라이버를 사용하는 환경에서 시스템 전체에 ASLR 강제를 사용하면 문제가 발생할 수 있었습니다. 그리고 해당 문제는 2012년 6월에 출시된 Catalyst 12.6 드라이버에 의해 수정되어 있습니다. 일단 기본적으로 설정하고 싶은 분들만 하시면 되고 초보자 이 신분들은 보안 취약점이 업데이트가 있기 전에 조심해서 사용하는 것도 좋은 방법입니다.

이 글을 공유합시다

facebook twitter googleplus kakaostory naver

본문과 관련 있는 내용으로 댓글을 남겨주시면 감사하겠습니다.