프로그램이 커널 메모리에 접근할 수 있기 때문에 커널 모드에서 실행하는 것은 위험하다는 글을 읽었습니다.
나는 커널 모드에서 실행되는 버그가 있는 프로그램이 어떤 피해를 입힐 수 있는지에 대한 실제 사례를 찾고 있습니다.
예를 들어, 이러한 손상은 프로그램이 메모리의 스케줄러 명령 중 일부 또는 전체를 덮어쓸 수 있어서 다음에 스케줄러를 실행해야 할 때 CPU가 가비지 명령을 실행한다는 것일 수 있습니까?
이런 피해가 발생하면 어떻게 될까요? Windows에서는 블루 스크린이 발생한다고 생각하는데 Linux에서는 어떻게 되나요?
답변1
예를 들어, 이러한 손상은 프로그램이 메모리의 스케줄러 명령 중 일부 또는 전체를 덮어쓸 수 있어서 다음에 스케줄러를 실행해야 할 때 CPU가 가비지 명령을 실행한다는 것일 수 있습니까?
예, 커널 모듈이나 커널 스레드는 다음 중 일부 또는 전부를 다룰 수 있습니다.아무것기억 속에.
"패닉" 오류 메시지와 함께 커널 패닉이 발생할 수 있습니다. 매우 잘못된 작업을 수행하면 시스템이 즉시 정지되거나 오류 메시지가 출력되지 않을 수도 있습니다.
이것들은최고결과는 즉시 눈에 띄게 나타납니다.
더 교묘하게도 결함이 있는 코드는 즉각적인 충돌을 일으키지 않고 여기저기서 몇 바이트를 손상시킬 수 있습니다. 사용자 공간 프로세스의 코드나 데이터에 도달하면 해당 프로세스가 오작동하거나 충돌하거나 손상된 정보를 처리하고 잘못된 결과를 출력할 수 있습니다. 명확한 운율이나 이유 없이 시스템이 모호하게 신뢰할 수 없게 될 수 있습니다.
또는 디스크 I/O 버퍼의 나가는 데이터가 손상되어 파일 및 파일 시스템 메타데이터에 오류가 누적될 수 있습니다. 시스템이 암호화된 디스크에 대규모 쓰기 작업을 수행하기 직전에 잘못된 커널 코드로 인해 RAM의 디스크 암호화 키가 손상되면 잘못된 암호화 키를 사용하여 쓰기 작업이 수행될 수 있습니다. 즉, 실제로는 데이터를 복구할 수 없게 됩니다. 정확히 무슨 일이 일어났는지 알아낼 수 있어요. 해당 쓰기 작업에 중요한 파일 시스템 메타데이터가 포함된 경우 파일 시스템이 심각하게 손상되어 많은 데이터가 손실되거나 최악의 경우 암호화된 파일 시스템의 전체 내용까지 손실될 수 있습니다.