カーネルモードで実行されている不良プログラムによって発生する可能性のある破損の例

カーネルモードで実行されている不良プログラムによって発生する可能性のある破損の例

プログラムがカーネルメモリにアクセスできるため、カーネルモードで実行するのは危険だと書いています。

私はカーネルモードで実行されているバグのあるプログラムがどのようなダメージを与える可能性があるかについての実際のケースを探しています。

たとえば、これらの破損は、プログラムがメモリのスケジューラ命令の一部または全部を上書きする可能性があるため、次にスケジューラを実行する必要があるときにCPUがガベージ命令を実行する可能性がありますか?

このような被害が発生した場合はどうなりますか? Windowsではブルースクリーンが発生すると思いますが、Linuxではどうなりますか?

答え1

たとえば、これらの破損は、プログラムがメモリのスケジューラ命令の一部または全部を上書きする可能性があるため、次にスケジューラを実行する必要があるときにCPUがガベージ命令を実行する可能性がありますか?

はい、カーネルモジュールまたはカーネルスレッドは、次のいずれかまたはすべてを処理できます。何もない記憶の中に。

「パニック」エラーメッセージとともにカーネルパニックが発生する可能性があります。非常に誤った操作を実行すると、システムが直ちに停止したり、エラーメッセージが出力されないことがあります。

これらは最高結果はすぐに目立つように見えます。

より巧妙に、欠陥のあるコードはすぐに衝突を起こすことなく、あちこちで数バイトを損傷する可能性があります。ユーザー空間プロセスのコードまたはデータに達すると、そのプロセスが誤動作、衝突、または破損した情報を処理し、誤った結果を出力する可能性があります。明確な韻や理由がないと、システムはあいまいに信頼できなくなる可能性があります。

または、ディスクI / Oバッファの発信データが破損し、ファイルとファイルシステムのメタデータにエラーが蓄積される可能性があります。システムが暗号化されたディスクに大量の書き込み操作を実行する直前に、誤ったカーネルコードが原因でRAMのディスク暗号化キーが破損した場合は、無効な暗号化キーを使用して書き込み操作を実行できます。つまり、実際にはデータを回復できなくなります。正確に何が起こったのかを把握できます。その書き込み操作に重要なファイルシステムメタデータが含まれていると、ファイルシステムが重大に破損し、多くのデータが失われたり、最悪の場合は暗号化されたファイルシステムの内容全体が失われる可能性があります。

関連情報