저는 Linux 커널 v4.14를 사용하고 있습니다. 저는 맞춤형 보드를 위한 AARCH64 아키텍처용 코어를 구축했습니다. KASLR
이 플래그를 활성화했습니다 CONFIG_RANDOMIZE_BASE=y
.
그런데 부팅할 때마다 커널 코드와 데이터의 물리적 주소가 동일한 것을 발견합니다. (나는 이것을 확인했다 /proc/iomem
).
KASLR은 커널 코드 세그먼트의 물리적 주소를 무작위로 지정하지 않습니까?
답변1
바라보다Aarch64에 대한 Kconfig
설명RANDOMIZE_BASE
:
커널 내부 위치에 대한 지식에 의존하는 악용 시도를 방지하기 위한 보안 기능으로 커널 이미지가 로드되는 가상 주소를 무작위로 지정합니다.
부트로더의 임무는
/chosen/kaslr-seed
커널 항목에서 임의의 u64 값을 전달하여 엔트로피를 제공하는 것입니다.
EFI_RNG_PROTOCOL
UEFI 스텁을 통해 부팅할 때 커널에 엔트로피를 제공하기 위해 펌웨어 구현(사용 가능한 경우)을 호출합니다 . 또한 커널 이미지의 물리적 위치를 무작위로 지정합니다.
그 자체로는 RANDOMIZE_BASE
이미지의 물리적 주소를 무작위로 지정하기 위해 커널 이미지의 가상 주소만 무작위로 지정하므로 커널은 부트로더의 도움이 필요합니다.UEFI 스텁).
다른 아키텍처도 무작위 물리적 주소를 지원합니다(예를 들어x86).