Linux에서 비권한 모드로 페이지 테이블을 읽을 수 있습니까?

Linux에서 비권한 모드로 페이지 테이블을 읽을 수 있습니까?

이것은 Unix와 Linux에서의 첫 번째 질문입니다. 현재 가상 메모리에 대해 배우고 있습니다.

이 훌륭한 논문에 감사드립니다.드러머(CCS'16). Android 6.0.1에서는 버디 할당자를 속여 취약한 페이지에 페이지 테이블 페이지를 할당합니다(해당 Linux 커널은~3.18.10.) 권한이 없는 작업을 수행합니다(궁극적인 목적은 다음과 같습니다.루트 권한 에스컬레이션.).

하지만 사용자 모드에서 페이지 테이블 페이지에 액세스하는 방법을 모르겠습니다. 가상 메모리에서는 전체 가상 메모리 주소가 커널 공간과 사용자 공간(예: 상위 1GB/4GB가 커널 공간)으로 나누어지고, 사용자 모드에서는 커널 공간에 접근할 수 없다는 것을 알고 있기 때문입니다. 이에 상응하는 두 가지 질문이 발생합니다.

  • 페이지 테이블 페이지가 커널 공간에 있는지 여부완전히? 즉, 특정 프로세스의 사용자 공간에 있는 특정 페이지 테이블 페이지를 찾을 수 있습니까?이 게시물.)? 대답은 '아니요'라고 가정합니다.

  • malloc가상 메모리는 사용자 공간에 할당됩니다.핵심우주는 단지 비특권적인 작업에 불과한 걸까요?

DMA처럼 커널 공간에서 메모리를 마음대로 읽을 수 있는 까다로운 문제가 있나요? 아니면 이것이 Linux와 Android의 근본적인 차이점입니까? 아니면 내가 뭔가를 놓치고 있는 걸까?

감사해요.

관련 정보