Linux KASLR은 AARCH64에서 물리적 주소의 무작위화를 제공합니까?

Linux KASLR은 AARCH64에서 물리적 주소의 무작위화를 제공합니까?

저는 Linux 커널 v4.14를 사용하고 있습니다. 저는 맞춤형 보드를 위한 AARCH64 아키텍처용 코어를 구축했습니다. KASLR이 플래그를 활성화했습니다 CONFIG_RANDOMIZE_BASE=y.

그런데 부팅할 때마다 커널 코드와 데이터의 물리적 주소가 동일한 것을 발견합니다. (나는 이것을 확인했다 /proc/iomem).

KASLR은 커널 코드 세그먼트의 물리적 주소를 무작위로 지정하지 않습니까?

답변1

바라보다Aarch64에 대한 Kconfig설명RANDOMIZE_BASE:

커널 내부 위치에 대한 지식에 의존하는 악용 시도를 방지하기 위한 보안 기능으로 커널 이미지가 로드되는 가상 주소를 무작위로 지정합니다.

부트로더의 임무는 /chosen/kaslr-seed커널 항목에서 임의의 u64 값을 전달하여 엔트로피를 제공하는 것입니다.

EFI_RNG_PROTOCOLUEFI 스텁을 통해 부팅할 때 커널에 엔트로피를 제공하기 위해 펌웨어 구현(사용 가능한 경우)을 호출합니다 . 또한 커널 이미지의 물리적 위치를 무작위로 지정합니다.

그 자체로는 RANDOMIZE_BASE이미지의 물리적 주소를 무작위로 지정하기 위해 커널 이미지의 가상 주소만 무작위로 지정하므로 커널은 부트로더의 도움이 필요합니다.UEFI 스텁).

다른 아키텍처도 무작위 물리적 주소를 지원합니다(예를 들어x86).

관련 정보