Docker にコンテナからの脱出を可能にする脆弱性

分離された Linux Docker コンテナを管理するためのツールキット内 特定された 脆弱性(CVE-2018-15664) を使用すると、システム上でイメージを起動できるか、実行中のコンテナーにアクセスできる場合、特定の状況下でコンテナーからホスト環境にアクセスできるようになります。 この問題は Docker のすべてのバージョンで発生し、未修正のままです (提案されていますが、まだ受け入れられていません)。 パッチ、FS での操作の実行中にコンテナーの一時停止を実装します)。

この脆弱性により、「docker cp」コマンドの実行時に、コンテナからホスト システムのファイル システムの任意の部分にファイルが抽出される可能性があります。 ファイル抽出は root 権限で実行されるため、ホスト環境内の任意のファイルの読み取りまたは書き込みが可能になり、ホスト システムを制御するのに十分です (たとえば、/etc/shadow を上書きできます)。

この攻撃は、管理者が「docker cp」コマンドを実行してコンテナとの間でファイルをコピーする場合にのみ実行できます。 したがって、攻撃者は、何らかの方法で Docker 管理者にこの操作を実行する必要性を納得させ、コピー時に使用されるパスを予測する必要があります。 一方、クラウド サービスが、「docker cp」コマンドを使用して構築されたコンテナに構成ファイルをコピーするためのツールを提供している場合などに、攻撃が実行される可能性があります。

この問題は関数のアプリケーションの欠陥によって引き起こされます SymlinkInScopeをフォローする、コンテナの配置を考慮して、相対パスに基づいてメイン ファイル システム内の絶対パスを計算します。 「docker cp」コマンドの実行中、短期的な 競合状態、パスはすでに検証されていますが、操作はまだ実行されていません。 コピーはホスト システムのメイン ファイル システムのコンテキストで実行されるため、指定された期間内にリンクを別のパスに置き換え、ホスト システムの外部のファイル システム内の任意の場所へのデータのコピーを開始できます。容器。

競合状態が発生する時間枠は非常に限られているため、準備された エクスプロイトプロトタイプ コンテナからコピー操作を実行する場合、コピー操作で使用されるパス内のシンボリック リンクを周期的に置き換えると、攻撃が成功するケースは 1% 未満でした (攻撃は約 10 秒の試行後に実行されました) 「docker cp」コマンドを使用してループでファイルを継続的にコピーします)。

コンテナーへのコピー操作を実行すると、わずか数回の反復でホスト システムに対する反復可能なファイル上書き攻撃を実行できます。 攻撃の可能性は、コンテナにコピーするときに「chrootarchive」の概念が使用されるためです。これに従って、archive.go プロセスはアーカイブをコンテナ ルートの chroot ではなく、コンテナの chroot に抽出します。ターゲット パスの親ディレクトリは攻撃者によって制御され、コンテナの実行は停止しません (chroot は競合状態を悪用する兆候として使用されます)。

出所: オープンネット.ru

コメントを追加します