web-dev-qa-db-ja.com

Dockerコンテナー内のASLRを無効にする

Dockerコンテナー内のASLR(アドレススペースレイアウトのランダム化)を無効にしようとしています。それが可能かどうかはわかりません。コンテナーはアルパインで実行されていますが、ASLRはカーネル機能であり、Dockerはホストカーネルを使用して実行するため、Dockerに対してのみASLRを無効にすることは簡単にはできません。

Dockerコンテナー内でのみASLRを無効にするにはどうすればよいですか?

4
Ra'Jiska

personality(2) syscallを使用して、プロセスのADDR_NO_RANDOMIZEフラグを設定できます。そのプロセスとその子はASLRを使用しません。 Dockerを起動するプロセスでこれを行います。

ADDR_NO_RANDOMIZE (Linux 2.6.12以降)
このフラグを設定して、address-space-layout 
ランダム化を無効にします。
1
forest

つまり、ASLRを無効にするのはカーネルの設定であり、カーネルレベルで変更を行う必要があります。

ここにはいくつかのオプションがあります。

  1. コンテナーを開始する前に、ホストに変更を加えます。
  2. マウント/procコンテナ内で、コンテナ内から変更します
  3. KataContainers のようなものを使用して、独自のカーネルでコンテナを実行し、そこで変更を加えます。

理論的には、これらはすべて機能するはずですが、どちらが適しているかは、正確なユースケースによって異なります。

0
Rory McCune