2010-04-21 5 views
6

나는 최근에 특히 윈도우 7의 새로운 "방어 강화"선전 마이크로 소프트 기사에 온 :응용 프로그램 보안 강화로서 메모리 임의 화?

  • 주소 공간 레이아웃 무작위 화 (ASLR)
  • 힙 무작위
  • 스택 무작위

이 기사에서는 "이 방어선 중 일부는 핵심 운영 체제에 있고 Microsoft Visual C++ 컴파일러는 다른 것들을 제공합니다"라고 말하지만 이러한 전략이 실제로 보안을 강화하는 방법에 대해서는 설명하지 않았습니다.

누군가 메모리 무작위 화가 보안을 강화하는 이유를 아십니까? 다른 플랫폼과 컴파일러가 비슷한 전략을 사용합니까?

+2

하나의 작은 글 : ASLR은 Win7이 아닌 Vista에 추가되었습니다. –

답변

9

메모리에있는 부분을 예측하기 어렵게하여 보안을 강화합니다. 꽤 많은 버퍼 오버 플로우 공격은 (예를 들어) 알려진 루틴의 주소를 스택에 넣은 다음 다시 돌아 오는 방식으로 작동합니다. 관련 루틴의 주소를 알지 못하면 그렇게하는 것이 훨씬 어렵습니다.

내가 아는 한, OpenBSD는 적어도 PC 용 OS 중 합리적인 가격으로 이것을 가장 먼저 수행했다.

+0

링크를 제공해주세요! –

+0

@Matt : 무엇에 연결됩니까? –

+0

귀하의 주장을 뒷받침하는 링크, 이에 대해 자세히 알고 싶습니다. –

2

return to libc과 같은 공격 (또는 후자의 경우 사용자 제공 데이터 버퍼로 복귀)이 훨씬 더 어렵습니다. 그리고 네, 리눅스, BSD, 그리고 맥 OS에서 사용할 수 있습니다. 예상대로 OS마다 세부 사항이 다릅니다. 위키 피디 어 (an introduction)를 참조하십시오.

0

스택을 랜덤 화하면 Aleph One's Smashing the Stack for Fun Profit과 같은 바닐라 버퍼 오버 플로우 공격을 수행 할 수 없습니다. 그 이유는 공격이 작은 양의 실행 코드를 메모리에 예측 가능한 위치에 두는 것에 의존하기 때문입니다. 함수 스택 프레임이 손상되어 반환 주소가 공격자가 선택한 값으로 덮어 씁니다. 손상된 함수가 반환되면 실행 흐름이 공격자의 쉘 코드로 이동합니다. 전통적으로이 메모리 주소는 예측 가능하므로 동일한 버전의 소프트웨어를 실행하는 모든 컴퓨터에서 동일합니다.

Windows 7에서 구현 된 고급 메모리 보호에도 불구하고 원격 코드 실행이 여전히 가능합니다. 최근 CanSecWest에서 Windows 7 및 IE 8을 실행하는 컴퓨터가 수초 내에 해킹당했습니다. 다음은 힙 오버 플로우와 함께 매달린 포인터를 사용하는 현대적인 메모리 손상 공격의 technical description입니다.

관련 문제