사용자 프로세스가 커널 주소 공간에서 메모리를 읽을 수 없는 이유는 무엇입니까?

사용자 프로세스가 커널 주소 공간에서 메모리를 읽을 수 없는 이유는 무엇입니까?

사용자 프로세스가 커널 주소 공간에 데이터를 쓰거나 수정할 수 없는 이유는 상당히 분명해 보입니다. 하지만 왜 그들이 데이터를 읽을 수 없는지 이해가 되지 않습니다. 이 경우 분할 함정이 있다는 것을 알고 있는데, 그 이유는 무엇입니까?

사용자 프로세스가 커널 주소 공간의 데이터만 읽을 수 있다면 어떤 문제가 발생합니까?

미리 감사드립니다

답변1

비밀번호를 "우연히" 알아내는 것보다 더 나쁜 것은 몇 가지 있습니다.

커널 공간을 읽을 수 있다면 다른 프로세스의 메모리도 읽을 수 있을 가능성이 높습니다. 시나리오를 고려하고 있다면 다음과 같이 할 수 있습니다.오직커널 공간을 읽은 후에도 디스크 버퍼, I/O 버퍼 등을 읽을 수 있으므로 다른 프로세스와의 모든 I/O를 볼 수 있습니다.

이는 이제 모든 자격 증명, 비밀번호 및 비밀을 사용할 수 있음을 의미합니다. 인증(예: 실행 sudo등)을 시도하고 다른 프로세스가 어떻게 작동하는지 관찰하기만 하면 됩니다. 프로세스 메모리에 자격 증명이 있거나 볼 수 있는 I/O에서 자격 증명을 재구성할 수 있습니다(모든 계산은 결정적이므로 내용을 읽을 수 없더라도 다른 프로세스의 작업을 모방할 수 있습니다). ) 메모리).

따라서 커널 공간을 읽을 수 있으면 루트 자격 증명을 얻을 수 있습니다. 그러면 모든 것을 할 수 있습니다.

관련 정보