kubeletの削除マネージャーは、ノード上のポッドにマウントされている /etc/hostsファイルによって消費される一時的なストレージを追跡しません。 この場合、/etc/hostsファイルがマウントされた悪意のあるポッドは、このファイルにデータを書き込むことによってノードのストレージリソースを使い果たす可能性があります。 その結果、結果はリクエストへの応答を停止します。 このトピックでは、CVE-2020-8557の影響、影響を受けるkubeletバージョン、および予防と緩和のための推奨ソリューションについて説明します。
影響スコープ
CVE-2020-8557は、次のkubeletバージョンで検出されます。
kubelet v1.18.0 ~ v1.18.5
kubelet v1.17.0 ~ v1.17.9
kubelet<v1.16.13
影響
kubeletの削除マネージャーは、ノード上のポッドにマウントされている /etc/hostsファイルによって消費される一時的なストレージを追跡しません。 この場合、/etc/hostsファイルがマウントされた悪意のあるポッドは、このファイルにデータを書き込むことによってノードのストレージリソースを使い果たす可能性があります。 その結果、ノードはリクエストに対する応答を停止する。 この脆弱性の共通の脆弱性のスコアリングシステム (CVSS) のスコアは5.5です。 これは、CVE-2020-8557が中程度の重大度の脆弱性であることを示します。
次の構成を持つポッドは、/etc/hostsファイルにデータを書き込むことができます。
CAP_DAC_OVERRIDE Linux機能を持つポッド (デフォルトで許可) 。
rootユーザー (UID 0) によって起動されたポッド、またはセキュリティコンテキスト設定のallowPrivilegeEscalationフィールドがtrue (デフォルト値はtrue) に設定されているポッド。
予防と緩和
次の手順を実行することを推奨します。
ポッドのセキュリティポリシーまたはその他のアドミッション制御メカニズムを使用して、ポッドからCAP_DAC_OVERRIDE Linux機能を削除します。 詳細については、「 [非推奨] ポッドセキュリティポリシーの使用」をご参照ください。
rootユーザーがポッドを起動することを禁止します。 このタスクを実行するには、ポッドセキュリティポリシーまたはその他のアドミッション制御メカニズムを使用するか、allowPrivilegeEscalationをfalseに設定します。 詳細については、「 [非推奨] ポッドセキュリティポリシーの使用」をご参照ください。
/etc/hostsファイルのサイズを監視します。 たとえば、Security Centerコンソールで改ざん防止を有効にできます。 詳細については、「web改ざん防止機能を使用する」をご参照ください。
ノードで次のコマンドを実行して、異常なサイズのetc-hostsファイルを持つポッドを見つけることができます。
find /var/lib/kubelet/pods/*/etc-hosts -size +1M