미니 윈도우10 2004 : 윈도우 버그로 생긴 5~10% 메모리 누수를 제거
- 스퀴니
- 조회 수 599
- 2020.07.04. 17:48
Microsoft는 초기화되지 않은 메모리 문제를 제거하는 다음 단계를 자세히 설명했습니다. 이번에는 Windows 용 하드웨어 드라이버를 작성하는 개발자가 사용하는 초기화되지 않은 커널 풀 메모리를 대상으로합니다.
MSRC (Microsoft Security Response Center)의 보안 엔지니어 인 Joe Bialek에 따르면이 초기화되지 않은 메모리 취약점은 최근 몇 년 동안 모든 Microsoft CVE 중 10 개 중 하나에 해당한다고합니다.
Bialek은 "초기화되지 않은 커널 풀 취약점은 2017 년과 2018 년 중반 사이에 Microsoft에 보고된 모든 초기화되지 않은 메모리 문제의 절반가량을 차지합니다"라고 말합니다.
지난달 Bialek은 초기화되지 않은 메모리 취약점을 해결하기 위한 Microsoft의 InitAll 프로젝트를 자세히 설명했습니다. Windows 10 버전 1903 이상의 커널 모드 코드, Hyper-V 코드 및 네트워킹 관련 사용자 모드 서비스에서 InitAll이 활성화되었습니다.
이것은 마이크로소프트가 지난 10년 동안 출하한 모든 패치의 약 70%를 차지하는 메모리 관련 버그를 없애려는 마이크로소프트의 더 큰 노력의 일환인데, 부분적으로는 윈도우가 C와 C++로 쓰여졌기 때문입니다. 마이크로소프트가 Rust 언어를 탐구하여 윈도우 구성요소를 다시 쓰는 것도 이 때문입니다..
Microsoft의 목표는 코드에 초기화되지 않은 커널 풀 문제를 없애고 성능에 최소한의 영향을 미치는 솔루션을 구현하는 것입니다.
이에 대한 대답은 Windows 10 버전 2004의 새로운 Windows 커널 풀 API (응용 프로그래밍 인터페이스)를 통해 도입 된 '풀 제로화 (pool zeroing)'로, Windows 응용 프로그램 및 드라이버 개발자에게 혼란을 최소화하도록 설계되었습니다.
Bialek은 "이러한 완화 조치가 최근 몇 년 동안 모든 Microsoft CVE의 5~10 %를 차지하는 취약성 클래스의 위협을 대부분 제거 할 수 있기를 희망합니다."라고 Bialek은 말합니다.
API를 ExAllocatePool2 및 ExAllocatePool3이라고합니다. 2004 이전의 Windows 10 버전을 지원하기 위해 별도의 도구를 사용할 수도 있습니다.
Bialek은 새로운 풀 제로화 API를 사용하려면 코드를 변경해야한다고 지적했습니다. 이러한 API를 지원하기 위해 Microsoft는 Windows 메모리 관리자를 점검하고 Hyper-V 및 네트워킹 구성 요소의 향후 릴리스를 변경했습니다.
Microsoft는 타사 드라이버 제조업체가 기존 풀 API를 벗어나는 데 도움이되는 방법을 모색하고 있습니다.
Bialek은 새로운 풀 API가 Windows에서 초기화되지 않은 메모리 취약점을 대부분 제거가능하다고 확신합니다.
"초기화되지 않은 메모리 취약점은 여전히 가능하지만, 스택을 보호하는 InitAll과 0 플래그를 사용하는 대부분의 할당 사이에서 이러한 문제가 발생할 가능성은 훨씬 적습니다."
한줄요약 : 메모리 누수를 막기위해 MS 연구진들이 갈리고 있고, 그 결과물중 몇개가 등장했다는 내용입니다.
웬지 BAD_POOL_CALLER 블루스크린이 생각나네요. 2004 올리고 덜해진 것 같은 느낌..