2016-12-10 9 views
1

glibc가 힙 기반 공격을 수행하는 데 필요한 조치에 대한 정보가 있습니까? 필자는 여러 Linux 배포판의 보안 기능 목록 페이지에서 PTR_MANGLE 및 일부 헷갈리는 "힙 일관성 검사"와 같은 몇 가지 정보를 얻었지만 이러한 메커니즘이 실제로 구현되는 방법에 대한 자세한 정보는 찾을 수 없었습니다. 효과적이며, 어떤 취약성 등급을 포함합니까? 이름으로 언급 한 기능을 검색 할 때도 glibc 문서를 찾을 수 없었습니다.glibc 힙 보호 메커니즘에 대한 정보?

그렇다면 구현 된 기능은 무엇이며 얼마나 효과적입니까? glibc에는 stack stack protection protector와 비슷한 힙 일관성 검사 메커니즘이 있습니까? PTR_MANGLE은 모든 포인터를 "암호화"합니까? 아니면 단지 일부만 암호화합니까? 그리고 가장 중요한 점은 이러한 기능을 최종 사용자가 사용하도록 설정하거나 사용중인 특정 API에 따라 달라 지므로 사용하는 프로그램을 작성한 사람이 실제로 보호 메커니즘을 사용할 수 있기를 바랍니다.

+0

예를 들어 'glibc heap protection'에서 Google 검색을 시도 했습니까? 처음에는 질문이 나오지만, 후속 참조는 다소 유용합니다. (Glibc 매뉴얼과 마찬가지로, 일부는 여러분이 원하는만큼 즉시 도움이되지 못합니다.) 마찬가지로 'glibc ptr_mangle'는 많은 유용한 정보를 제공합니다. –

+0

@JonathanLeffler 감사합니다. "glibc ptr_mangle"를 찾아 보았고 그 질문에 대한 대부분의 답변을 발견했습니다. 필자가 찾을 수없는 유일한 정보는 glibc로 컴파일 된 모든 프로그램에 대해 ptr_mangle가 활성화되어 있는지 여부 또는 프로그램을 작성하는 사람이 일부 특수 기능을 사용하여 보호해야한다고 지정해야하는지 여부입니다. 나는 그것이 자동 보호라고 생각 하겠지만, 그것을 증명할만한 것을 찾을 수는 없다. glibc가 힙을위한 스택 카나리와 같은 것을 구현하는지 알아낼 수 없었다. –

+0

도움이 될 수있는 다른 문서에 대한 링크가있는 [질문에 대한 libc의 포인터 암호화] (http://stackoverflow.com/questions/19584160/questions-on-libcs-pointer-encryption)를 찾아 볼 수 있습니다. –

답변

0

PTR_MANGLE은 glibc 자체의 내부 구현이며 프로그램에서 사용하는 포인터에는 영향을 미치지 않습니다. 즉석에서 또는 특정 프로그램에 대해 켜거나 끌 수있는 것이 아닙니다. 이는 프로그램에 불투명 한 내부 glibc 데이터 구조만을 보호하며, 심지어는 코드 플로우를 직접 (즉, vtables/함수 포인터) 하이재킹하는 데 사용될 수있는 데이터 구조에만 초점을 둡니다. 일반 데이터 (예 : 카운터)에는 사용되지 않습니다.

현재 glibc가 힙 페이지를 사용하고 있다고 생각하지 않지만 사람들은 그것에 대해 작업하고 있습니다. 업스트림 메일 링리스트에서 주제에 대한 최근 게시물을 검색해 볼 수 있습니다. 스택에 가드 페이지를 오랫동안 사용해 왔지만, 스택 가드 (ssp)보다는 스택 블로잉에 더 유용합니다.