Linuxでは、プロセススタックを含むメモリページをディスクに置き換えることはできますか?それでは、コンパイル時や実行時にこのようなことが発生しないようにする方法はありますか?
GitHubに関するスレッドがあるので、この質問をします。スタックのローカル変数から秘密が漏洩する可能性がある
この質問に対する答えがカーネルだけでなく、使用されているユーザースペースツールチェーン(libc、動的リンカーなど)に依存する場合、私の質問は特にGNU / LinuxとAndroidに関するものです。
答え1
Linuxでは、ヒープやスタックなど、プロセスのほぼすべてのメモリを置き換えることができます。
ただし、メモリページは交換できないように物理RAMにロックすることができます。これは以下を使用して行われます。mlock
システムコール(またはmlockall
プロセス内のすべてのメモリロック)は特権タスクであるため、プロセスに適切な機能が必要ですCAP_IPC_LOCK
(gnome-keyring-daemon
例:参照/sbin/getcap /usr/bin/gnome-keyring-daemon
)。