이 기사는 리눅스 커널의 보안 강화 기능 중 캐시 무작위화와 관련된 중요한 결함에 대해 다룹니다. 특히, `__kmalloc_node` 함수가 여러 번의 `kvmalloc_node` 호출에서 우연히 동일한 시드를 사용하고 있음을 강조하며, 특히 큰 크기를 할당할 때 문제가 발생합니다. 이 문제는 보안에 필요한 의도된 무작위성을 제공하지 못하기 때문에 강화 메커니즘을 무효화합니다.
문제의 근본 원인은 현재 구현이 비인라인 래퍼 또는 헬퍼 함수 내에서 `kmalloc`이 호출될 때 할당 위치를 구분하지 못하는 데 있습니다. 이 기사는 이 문제가 다른 함수에도 영향을 미칠 수 있는 더 넓은 문제일 수 있다고 제안합니다. 이 특정 사례를 해결하기 위해 제안된 해결책은 `__kmalloc_node_noprof`를 `__do_kmalloc_node`에 직접 호출로 대체하여, `kvmalloc`의 반환 주소를 사용하여 각 호출을 더 잘 구분할 수 있도록 하는 것입니다.
이 결함은 리눅스 커널의 메모리 할당에서 보안을 강화하기 위해 강력한 무작위화 기술의 중요성을 강조하며, 특히 다가오는 리눅스 6.15 커널 주기와 관련하여 그 의미가 큽니다. 이 문제의 영향은 심각하며, 적절히 해결되지 않을 경우 시스템이 취약점에 노출될 수 있습니다.
* 이 글은
phoronix.com의 기사를 요약한 것입니다. 전체 기사의 내용은
이곳에서 확인하실 수 있습니다.