VMwareは、デフォルトのvCenter Server 6.7および7.0を実行しているすべてのアプライアンスに影響するAnalyticsサービスにおける重要な任意ファイルアップロードの脆弱性に直ちにパッチを適用するようユーザに警告しました。
vCenter Serverは、IT管理者が企業環境の仮想化ホストや仮想マシンを単一のコンソールで管理するためのサーバ管理ソリューションです。
VMwareのテクニカル・マーケティング・アーキテクトであるボブ・プランカーズは、「この脆弱性はvCenter Serverの構成設定にかかわらず、ネットワーク経由でvCenter Serverに到達できる人であれば誰でもアクセスすることができます」と述べています。
ランサムウェアが蔓延するこの時代、攻撃者はすでにネットワーク内のどこかにいて、ユーザーアカウントをコントロールしていると考えるのが最も安全です。そのため、できるだけ早くパッチを適用することを強くお勧めします。
このセキュリティ上の脆弱性は、CVE-2021-22005として追跡され、CVSS 3.1の深刻度評価が9.8/10となっています。攻撃者は細工されたファイルをアップロードすることで、パッチが適用されていないvCenter Serverの導入環境でコマンドやソフトウェアを実行することができます。
この脆弱性は、SolidLab LLCのGeorge Noseevich氏とSergey Gerasimov氏によって報告されたもので、認証されていない攻撃者がリモートでユーザーの操作を必要としない複雑度の低い攻撃を行い、悪用される可能性があるとのことです。
vCenter Serverのポート443にネットワークアクセスできる悪意のある攻撃者は、この問題を悪用して特別に細工されたファイルをアップロードすることでvCenter Server上でコードを実行する可能性があります。
この脆弱性は公開直後から悪用される可能性が高いため、パッチの適用はIT管理者のタスクリストの最上位に加えられるべきで、影響は深刻であり、脆弱性を攻撃する方法が公開されるのは時間の問題です。
ランサムウェアの脅威が一般的になった今日、最も安全な方法は攻撃者がフィッシングやスピアフィッシングなどの手法を用いて、すでにデスクトップやユーザアカウントを制御している可能性があることを想定し、それに応じて行動することです。
これは、攻撃者が企業のファイアウォール内からすでにvCenter Serverに到達できている可能性があることを意味しており、一刻を争うことになります。
アプライアンスにすぐにパッチを当てられない場合のワークアラウンド
VMwareは、アプライアンスにすぐにパッチを当てられない場合の一時的な解決策として、ワークアラウンドも提供しています。
ここで説明されている手順では、仮想アプライアンス上のテキストファイルを編集し、手動またはVMwareが提供するスクリプトを使用してサービスを再起動することで、悪用される可能性を排除することができます。
CVE-2021-22005の脆弱性に関する追加の質問と回答を記載した詳細なFAQ文書は、こちらをご覧ください。
ワークアラウンド手順
Linuxベースの仮想アプライアンス(vCSA)にCVE-2021-22005の回避策を実装するには、以下の手順を実行してください。
- Windows上で動作する6.7 vCentersは、CVE-2021-22005の影響を受けません。
- 6.7 Windows VCシステムにこのワークアラウンドを実装する必要はありません
- この回避策は、vCenter 6.7環境で外部PSCとして動作するVCSAにも適用されます。
この回避策を実行するには、「/etc/vmware-analytics/ph-web.xml」ファイルの更新とvmware-analyticsサービスの再起動が必要です。
ファイルの更新では、「<!–」および「–」タグを使用して、ファイル内のいくつかのエントリを「コメントアウト」します。
必要な変更は、VMware vCenterのバージョンによって異なります。
6.7 U1b(Build 11726888)以前のバージョンでは、コメントアウトが必要なエンドポイントは「phTelemetryServlet」の1つです。
6.7U2 (Build 13010631)以降および7.0のすべてのバージョンでは、影響を受けるエンドポイントは3つあり、「phTelemetryServlet」、「phPhApiServlet」、「phPhStgApiServlet」の各エンドポイントです。
オプション1:「VMSA-2021-0020」スクリプトによる回避策の実行
このスクリプトは、お客様が文書化された回避策を適時に自動で実施するために提供されています。
このスクリプトは、脆弱な vCenter および PSC アプライアンスでのみ実行してください。
6.7U3oまたは70U2dのいずれかの固定バージョンにシステムをパッチまたはアップデートした場合は、このスクリプトを実行しないでください。これらのバージョンでは、エンドポイントが更新されており、マニュアルの最後に記載されているcurlコマンドを実行すると、「HTTP/1.1 400」ステータスが返されます。詳細は以下の「関連情報」のセクションを参照してください。
この方法を使用するには、この記事に添付されているVMSA-2021-0020.pyファイルをダウンロードする必要があります。
次に、お好みのファイル移動ユーティリティー(WinSCPなど)を使用して、ファイルを実行したいアプライアンスにコピーします。
このスクリプトは、対象となるすべてのバージョンの6.7および7.0において、必要に応じてph-web.xmlファイルを更新します。
注:WinSCPを使用したvCenterアプライアンスへの接続に問題がある場合は、「WinSCPを使用してvCenter Serverアプライアンスにファイルをアップロードするときのエラー」を参照してください。
このドキュメントでは、PythonスクリプトをVCSAの「/var/tmp」ディレクトリにコピーしています。
どのディレクトリでも使用できますが、ファイルの場所は以下のコマンドで更新する必要があります。
手順
1) SSH セッションと root クレデンシャルを使用して vCSA に接続します。
2) ファイルをコピーしたディレクトリの内容をリストアップし、コピーが成功したことを確認します。
このケースでは、「/var/tmp」です。以下のコマンドを実行し、ファイルが一覧表示されることを確認します。
ls -al /var/tmp/
3) 以下のコマンドを実行して、スクリプトを実行します。
ファイルのパスを適切に変更してください。
使用するpythonのバージョンは、お使いのvCenterの正確なバージョンによって異なります。
このスクリプトはpython、python3.5またはpython3.7で実行できます。
python /var/tmp/VMSA-2021-0020.py
または
python3.5 /var/tmp/VMSA-2021-0020.py
または
python3.7 /var/tmp/VMSA-2021-0020.py
スクリプトが実行されて
a. 変更されていないph-web.xmlのバックアップを作成します。
b. ph-web.xmlファイルの更新
c. 更新されたph-web.xmlのバックアップを作成します。
d. アナリティクスサービスを再起動する
e. アプライアンスの脆弱性がなくなったことを確認する
これで「スクリプトによる回避策」が完了しました。
オプション 2 — 手動での回避策の実行
1) SSH セッションと root クレデンシャルを使用して vCSA に接続します。
2) /etc/vmware-analytics/ph-web.xml ファイルをバックアップします。
cp /etc/vmware-analytics/ph-web.xml /etc/vmware-analytics/ph-web.xml.backup
3) /etc/vmware-analytics/ph-web.xml ファイルをテキストエディタで開きます。
vi /etc/vmware-analytics/ph-web.xml
4) このファイルの内容は以下のようになっています。
5) キーボードの “I “を押して、”Insert “モードにします。
6) 以下のように「<list>」行に移動します。
7) エンターキーを押す
8) 以下のように「<!-」と入力する
9) 「<property name=”servlet” ref=”phPhPhStgApiServlet”/>」行のすぐ後にある「</bean>」行に移動します。
古いバージョンの6.7(u1b以前)では、「<property name=”servlet” ref=”phTelemetryServlet”/>」の直後にある「</bean>」行に移動してください。
10) 「Enter」キーを押して、「 –> 」と入力します。
11) キーボードの「Esc」ボタンを押してInsertモードを終了する
12) “:wq “と入力して “Enter “を押し、ファイルを保存して終了する
13) vmware-analytics サービスを再起動します。
service-control --restart vmware-analytics
14) 回避策が有効になったことを確認するために、以下のコマンドを実行してテストします。
curl -X POST “http://localhost:15080/analytics/telemetry/ph/api/hyper/send?_c&_i=test” -d “Test_Workaround” -H “Content-Type: application/json” -v 2>&1 | grep HTTP
これにより、404エラーが返されるはずです。
Comments