Linux 커널 구성에서 CONFIG_RANDOMIZE_BASE와 CONFIG_RANDOMIZE_MEMORY의 차이점

Linux 커널 구성에서 CONFIG_RANDOMIZE_BASE와 CONFIG_RANDOMIZE_MEMORY의 차이점

이것페이지이는 RANDOMIZE_BASE물리적 주소와 가상 주소를 무작위로 지정하는 KASLR을 위한 것으로, 32비트에서는 분명하고 64비트에서는 이해할 수 있습니다.

그런데 RANDOMIZE_MEMORY정확히 무슨 일을 하는 걸까요? 이것페이지설명하다:

커널 메모리 부분(물리적 메모리 맵, vmalloc 및 vmemmap)의 기본 가상 주소를 무작위로 지정합니다.

무슨 뜻이에요? 이것은 서로 다른 부분이 어떻게든 나누어져 있고 함께 있지는 않지만 그 사이에 약간의 공간이 있다는 것을 의미합니까?

답변1

RANDOMIZE_BASE대부분의 아키텍처에서 사용할 수 있는 기능입니다.커널의 가상 및 물리적 기본 주소를 무작위로 지정.

RANDOMIZE_MEMORYx86-64 특정 기능입니다또한 page_offset_basevmalloc_base, 의 오프셋을 무작위화합니다 .vmemmap_base,커널 메모리의 물리적 매핑에 대한 위치, 공간 vmalloc및 가상 메모리 매핑입니다 . 연결된 메모리 맵에서 볼 수 있듯이 이들 모두 뒤에 구멍이 있어 메모리 앞이나 뒤의 항목과 겹치는 문제를 처리할 필요 없이 이동할 수 있습니다.

관련 정보