
CVE-2021-25741 Kubernetes脆弱性のエクスプロイト。レースコンディションを介してホストファイルシステムをポッドにマウントすることを可能にし、デプロイスクリプトと技術的詳細を含む。
これはCVE-2021-25741の脆弱性に対するエクスプロイトです。 この脆弱性により、読み書き権限を持つNodeファイルシステムを新しいPOD内にマウントすることが可能になります。
この脆弱性の詳細については、以下をご覧ください:
https://security.googleblog.com/2021/12/exploring-container-security-storage.html
私はこの脆弱性の作者ではなく、エクスプロイトを作成しただけです。
エクスプロイトの開発に協力してくれた@russtoneと@maximusfoxに感謝します。
脆弱なバージョンのkubelet:
run.shを実行して待つだけです :) レースコンディションに基づいているため、エクスプロイトには時間がかかります(私の場合は10〜20分でした)。
chmod +x run.sh; ./run.sh

「Success」というメッセージが表示されたら、PODにアタッチして/mnt/dataディレクトリにNodeファイルシステムがあることを確認できます。
アタッチには次のコマンドを使用できます:
kubectl exec -i -t cve202125741 -c mount-container -- /bin/sh

エクスプロイトには2つの部分があります:
脆弱性を悪用するPOD設定を含むYAMLファイル。レースコンディションのため毎回成功するわけではないので、ループで実行する必要があります。
pod.yamlをデプロイし、結果を確認して、必要に応じて再デプロイするスクリプト。
RENAME_EXCHANGEオプション付きのrenameat2バイナリとして、次のコードを使用しました: https://gist.github.com/eatnumber1/f97ac7dad7b1f5a9721f
必要に応じて自分でコンパイルし、pod.yaml内で置き換えることができます:
gcc renameat2.c -o renameat2
base64 renameat2
解決策:
解決策: