OpenShift - SCC bypass
このページの元の著者は Guillaume
特権付きの名前空間
デフォルトでは、SCC は以下のプロジェクトには適用されません:
default
kube-system
kube-public
openshift-node
openshift-infra
openshift
これらの名前空間のいずれかにポッドをデプロイすると、SCC は強制されず、特権付きのポッドのデプロイやホストファイルシステムのマウントが許可されます。
名前空間ラベル
RedHat のドキュメントによると、ポッドで SCC アプリケーションを無効にする方法があります。次のいずれかの権限が必要です:
名前空間の作成とその名前空間でのポッドの作成
名前空間の編集とその名前空間でのポッドの作成
特定のラベルopenshift.io/run-level
を使用すると、アプリケーションのためにSCCを回避することができます。RedHatのドキュメントによると、このラベルを使用すると、その名前空間内のすべてのポッドに対してSCCが強制されず、実質的に制限が解除されます。
ラベルの追加
名前空間にラベルを追加するには:
以下の手順で、ラベルを持つ名前空間をYAMLファイルを使用して作成します:
現在、名前空間で作成されたすべての新しいポッドにはSCCがないはずです。
SCCがない場合、ポッド定義に制限がありません。これは、悪意のあるポッドが簡単に作成されてホストシステムにエスケープする可能性があることを意味します。
OpenShift SCC バイパス
現在、特権を昇格させてホストシステムにアクセスし、その後クラスタ全体を乗っ取り、'cluster-admin' 権限を取得することが容易になりました。次のページの Node-Post Exploitation 部分を参照してください:
Attacking Kubernetes from inside a Podカスタムラベル
さらに、ターゲットのセットアップに基づいて、以前の攻撃シナリオと同様に一部のカスタムラベル / 注釈が使用される場合があります。それが意図されていなくても、ラベルは特定のリソースに権限を付与したり、制限したり、付与しなかったりするために使用される可能性があります。
リソースを読むことができる場合は、カスタムラベルを探してみてください。以下は興味深いリソースのリストです:
Pod
Deployment
Namespace
Service
Route
すべての特権名前空間をリストします
高度なエクスプロイト
OpenShiftでは、以前に示したように、openshift.io/run-level
ラベルが付いた名前空間にポッドをデプロイする権限を持っていると、クラスターの簡単な乗っ取りにつながる可能性があります。クラスター設定の観点から、この機能はOpenShiftの設計上不可欠なため、無効にすることはできません。
ただし、Open Policy Agent GateKeeperのような緩和措置を取ることで、ユーザーがこのラベルを設定するのを防ぐことができます。
GateKeeperのルールをバイパスしてこのラベルを設定し、クラスターの乗っ取りを実行するには、攻撃者は代替手法を特定する必要があります。
参考
Last updated