Linuxコンテナのセキュリティを理解しようとしています。ルートシェルを実行するドッカーコンテナがあります。コンテナにはに表示されるブロックデバイスはありませんが、/dev
を使用して作成できますmknod
。その後、読み取りブロックデバイス(私のホームパーティションに対応)を使用しようとするfile -s /dev/vda1
とvda1: no read permission
。
ブロックデバイスを読み取らないカーネルレベルのセキュリティシステムは何ですか?能力だと思ったのですがないですね。
答え1
cgroup デバイスコントローラは、raw デバイスへのアクセスを制御します。タイプ(文字またはブロック)、プライマリおよびセカンダリデバイス番号に基づいて読み取り、書き込み、および生成権限を指定できます。 Dockerはデフォルトでほとんどのデバイスへの読み書きを許可しません。
cgroup-v2では、デバイスコントローラが削除され、eBPFプログラムをcgroupに接続してデバイスアクセスを確認できます。どのくらい読んで/検索できるか疑問に思います。