CyberArkのEPVに見つかった”Critical”に分類されるコード実行バグ。CyberArkは修正済。
CyberArk Enterprise Password Vaultで、”Critical”に分類されるリモートコード実行脆弱性が発見された。
ドイツのサイバーセキュリティ会社であるRedTeam Pentesting GmbHが発見した。(画像のリンクは同社のブログ記事)
脆弱性が見つかったEPVとは
そもそも、エンタープライズパスワードマネージャ(EPV)は、組織が機密パスワードを安全に管理するソリューションである。
EPVを使えば、クライアント/サーバーおよびメインフレームオペレーティングシステム、スイッチ、データベースの広範囲にわたる特権アカウントパスワードを制御し、外部の攻撃者や悪意のある内部者から安全に保つ事が出来る。
個人向けのパスワードマネージャ代表例としては、LastPassや1Passwordが有名である。
EPVは、企業向けのパスワードマネージャと考えればいいだろう。
脆弱性の概要
攻撃者がCyberArk Enterprise Password Vaultにある脆弱性を悪用すると、Webアプリケーションの権限でシステムに不正にアクセスする可能性がある。
この脆弱性(CVE-2018-9843)は、CyberArk Password Vault Web Accessに存在する。
CyberArk Password Vault Web Accessは、顧客がリモートで任意のサービスにログイン出来るようにするアプリケーションで、.NETで書かれているようだ。
ディシリアライズ操作に存在するバグ
Webサーバが、ディシリアライズ操作を適切に行わないバグが存在し、攻撃者は、サーバ上でコードを実行して、不適切にディシリアライズされたデータを悪用する。
そもそ、シリアライズとは、オブジェクトをバイト列に直す操作を意味し、ディシリアライズはその対義語。
つまり、ディシリアライズはバイト列からオブジェクトを復元する操作のことだ。
研究者によると、ユーザーが自分のアカウントにログインすると、アプリケーションはREST APIを使用してサーバーに認証要求を送信する。
この時、認証要求はbase64でエンコードされ、シリアル化された.NETオブジェクトを含む認証ヘッダーを含む。
この時、シリアル化された.NETオブジェクトは、ユーザーのセッションに関する情報を保持している。
しかし、RedTeamの研究者は「CyberArkのEPVでは、シリアル化されたデータの整合性が保護されていない」と指摘した。
サーバーはシリアル化されたデータの整合性を検証せず、ディシリアル化操作を安全に処理していなかった。
その結果、攻撃者は認証トークンを操作して認証ヘッダーに不正なコードを挿入すれば、Webサーバー上で認証されていないリモートコードを実行できるのである。
CyberArkは修正、パッチ版を公開済
研究者は、オブジェクトの安全でない直列化を実行する.NETアプリケーションのペイロードを生成するためのオープンソースツールであるysoserial.netを使用して、この脆弱性のPoCコードをリリースした。
また、この脆弱性はCyberArkに報告され、修正されたCyberArk Password Vault Web Accessをリリース。
今回の脆弱性の詳細、PoCコードの詳細発表は、リリース後に行われた。
CyberArk Password Vault Web Accessを使用する企業は、ソフトウェアをバージョン9.9.5,9.10、または10.2にアップグレードするといいだろう。
ソフトウェアをすぐにアップグレードできない場合は、回避策としてroute / PasswordVault / WebServicesでのAPIへのアクセスを、全て無効にすべきだ。