エクスプロイト&脆弱性
メモリ破損の脆弱性「PwnKit」(CVE-2021-4034)をトレンドマイクロの技術で検出する方法
PolKit(旧称「Policy Kit」)は、Unix系OS内でシステム全体のポリシーと権限を処理するコンポーネントであり、非特権プロセスと特権プロセス間の通信を行えるようにするものです。
PolKit(旧称「Policy Kit」)は、Unix系OS内でシステム全体のポリシーと権限を処理するコンポーネントであり、非特権プロセスと特権プロセス間の通信を行えるようにするものです。PolKitのコマンドラインツール「pkexec」は、主要なLinuxディストリビューション内にデフォルトで同梱されており、通常は特権昇格させてコマンドを実行する際に用いられます。また、このコンポーネントを使用することで、許可されたユーザは別のユーザ(通常「root」)としてプログラムを実行することもできます。この機能は、Windowsのコマンドラインツール「RunAs」と類似しています。
クラウドセキュリティ企業「Qualys社」は、共通脆弱性識別子「CVE-2021-4034」(CVSSスコア 7.8、「高」評価)が割り当てられたpolkitのpkexecに内在するメモリ破損につながる脆弱性「PwnKit」をブログで公開しました。PwnKitが悪用されると、権限の低いユーザがホスト上でroot権限を取得できる可能性があります。すでに、異なる言語(C言語、Python、Bash、Goなどのいくつか)で記述されたさまざまな概念実証(Proof of Concept、PoC)が一般公開されています。この脆弱性は2009年にpkexecが初めて提供されて以来12年以上にわたって存在しており、すべてのバージョンに影響を及ぼしています。
Qualys社が「この脆弱性は、攻撃者の夢をかなえるものだ」と伝えている通り、PwnKitはセキュリティ上の弱点を生み、攻撃者の目的を実現させる機会を与えることになるため、できるだけ早く修正プログラム(パッチ)を適用すべき脆弱性と言えます。権限のないローカルユーザは、polkitデーモン自体が稼働していない場合であっても、PwnKitを悪用して完全なroot権限を取得することができます。攻撃者は、「pkexec」バイナリのコンテキスト内に環境変数を再導入することで、自身の管理する共有ライブラリを操作して実行し、「root」権限でコードを実行する可能性があります。セキュリティチームは、できるだけ早くこの脆弱性にパッチを適用するか、個々のシステムを更新しながら一時的な緩和策(仮想パッチなど)を適用することが推奨されます。本ブログ記事では、Trend Micro™ Vision One™およびTrend Micro™ Cloud One™を用いて、PwnKitの悪用手口を検出する方法について解説します。
■Trend Micro Cloud One™ - Workload Security
Trend Micro Cloud One - Workload Securityのプラットフォームを利用し、以下のモジュールを用いることでCVE-2021-4034を突く攻撃を検出することができます。
1. アクティビティ監視(Activity Monitoring):このモジュールは、Cloud One Workload Securityを稼働しているエンドポイント上のプロセス、ファイル、ネットワークのアクティビティを検出できます。本記事で解説する攻撃シナリオでは、ネットワークコンポーネントがないため、プロセスおよびファイルのアクティビティを解説します。
2. 不正プログラム対策(Anti-Malware):このモジュールは、挙動監視を用いてリアルタイムでCVE-2021-4034を突く攻撃に対する保護を提供します。
図1:不正プログラム対策機能による脆弱性悪用手口の検出例
3. セキュリティログ監視(Log Inspection):このモジュールは、ホスト上の権限関連イベントを監視できるようにします。CVE-2021-4034に対する概念実証コードが実行されると、/var/log/auth.log上に観測結果が表示され、pkexecに関する不審な活動を確認することができます。「1002831 - Unix - Syslog Log Inspection」ルールにより、CVE-2021-4034を突く攻撃を検出できる可能性があります。
図2:セキュリティログ監視ルールにより「イベント」セクション内で、安全な環境変数(左)およびroot内で不審なコンテンツを持つ疑わしい環境変数(右)のアクティビティを明確に追跡できます
■ Trend Micro Vision One
Trend Micro Cloud One - Workload Securityにおけるテレメトリおよび検出ルールの相関関係は、初期段階のセキュリティコンテキストを提供し、セキュリティチームやアナリストがCVE-2021-4034を悪用する可能性のある脅威を追跡・監視できるようにします。次のセクションでは、Trend Micro Vision Oneがパスとイベントの詳細をリアルタイムで提供している様子を解説します。
Observed Attack Techniques(OAT)
Observed Attack Techniques(OAT)の機能により、セキュリティアラートを発生させる可能性のある、環境内で検出された個々のイベントと関連するMITRE情報が表示されます。潜在するCVE-2021-4034の悪用可能性を調査するには、buntuホスト上で検出された不審な活動を示す数あるOATトリガの中から以下のOAT IDを確認する必要があります。
図3:Trend Micro Vision Oneのスレットハンティングアプリから取得したOAT
脅威を積極的に探索する「スレットハンティング」で使用可能なOAT IDを以下に示します。
- F2533 - Identified File Permission Change For CVE-2021-4034 Vulnerability Exploitation
- F4875 - Identified Creation Of GCONV_PATH Directory For CVE-2021-4034 Vulnerability Exploitation
- F4880 - Identified PkExec Run with Root Privileges
- F4873 - Potential Exploitation of Polkit Vulnerability CVE-2021-4034
- F4881 - Potential PwnKit CVE-2021-4034 Exploitation Traces Logged
Root cause analysis(RCA)
「実行プロファイル(Execution Profile)」は、セキュリティチーム向けにダイアグラムを生成するVision Oneの機能です。この機能は、プロセスの作成、ファイルの作成、インバウンド / アウトバウンドにおけるネットワークアクティビティなど、複数あるパラメータの中で所定の時間内に観測されたアクティビティを調査するために、Searchアプリまたはスレットハンティングアプリにおける「processCmd」や「objectCmd」などのフィールドから展開することができます。セキュリティリサーチャやアナリストは、このセクションで示したRCAを用いることで、第一段階として仮説を展開し、実行の詳細や順序を把握することができます。トレンドマイクロはCVE-2021-4034を調査する中で、以下の動作を観測しました。
a. ディレクトリ「GCONV_PATH =.」が作成される(図4)
図4:ディレクトリ「GCONV_PATH =.」が作成された様子
b. 「GCONV_PATH =.」ディレクトリ内に存在するランダムファイルのパーミッションが変更される(図5)
図5:ランダムファイルのパーミッションが変更された様子
c. root以外のプロセスから「root」ユーザとして「pkexec」が実行される(図6)
図6:新たに昇格したユーザ権限により不正に実行された様子
d. 親プロセスとして「pkexec」からシェルが起動される(図7)
図7:シェル変数が起動された様子
■ Trend Micro Vision One Workbenchアプリ
Trend Micro Vision One Workbenchアプリは、セキュリティアナリストがワークロード全体で発生した重要な相関イベントに関する被害状況やスレットインテリジェンス、関連するMITRE情報を確認する際に役立ちます。図8に示す左側のパネルには、次々と発生するイベントを要約した一連の攻撃手法が表示されます。セキュリティアナリストは、重要だと考えられるいくつかのフィールドの情報を表示し、右側のパネルでは攻撃の試みに関与した様々なオブジェクトが表示されます。セキュリティチームはこのアプリを使用することで、パッチの適用手順を進めながら、侵害された資産の確認や影響を受ける可能性のある資産を特定することができます。
図8:侵害された資産と影響を受ける可能性のある領域が関連付けられている様子
■まとめ
トレンドマイクロのテストに基づき、企業のセキュリティチームは、/var/log/auth.logファイル内に存在する以下の文字列を確認することで、手動で回避策を実行することができます。
- "The value for the SHELL variable was not found the /etc/shells file"(「シェル変数への値が/etc/shellsファイルで見つかりませんでした」)
- "The value for environment variable * contains suspicious content,” wherein * can be anything like SHELL or XAUTHORITY (in our case, it was XAUTHORITY).(「環境変数の値*には不審なコンテンツが含まれています」。⦅環境変数の値*には、SHELLまたはXAUTHORITY(本記事で解説した攻撃シナリオではXAUTHORITY)などが当てはまります⦆)。
また、管理者やセキュリティチームは、影響を受けるすべてのシステムにパッチを適用し、パス管理者は、pkexecバイナリからsetuidのパーミッションを削除することで、一時的に脆弱性を緩和することができます。
攻撃者がPwnKitを悪用し、脆弱なシステムを侵害する可能性は高いと考えられます。PwnKitが一般公開されてから多くの概念実証が作成されていることを考慮すると、攻撃者がこのセキュリティ上の弱点を悪用する手口を自身の攻撃キャンペーンや攻撃ツールに含めることは時間の問題でしょう。主要なLinuxディストリビューションであるRedHat、Debian、Ubuntu、CentOS、SuseなどはすべてPwnKitが内在していると見られており、これらのディストリビューションに対するパッチが早急にリリースされることが期待されています。
脆弱性「PwnKit」は、不正な暗号資産(旧称「仮想通貨」)採掘活動やマルウェア感染、サイバー諜報活動に至るまで、すでに攻撃者が足場を構築しているあらゆる環境下で悪用可能です。Qualys社がブログで言及しているように、PwnKitはpolkitデーモン自体が稼働していない場合でも簡単に悪用できると考えられており、攻撃者によってroot権限が取得されると、内部活動(横展開)に悪用される可能性があります。幸いなことに、最も単純な実行方法でPwnKitが悪用された場合、ログ内に攻撃活動の痕跡が残ります。ただしQualys社はセキュリティアドバイザリとして、auth.log内に痕跡を残さずにPwnKitを悪用する方法がまだ存在すると言及しています。セキュリティチームは、できるだけ早く必要なパッチを適用し、PwnKitの悪用手口を検出・ブロックするために適用可能なすべてのソリューションを有効化することが推奨されます。
MITRE ATT&CK
手法 | ID |
Exploitation for Privilege Escalation | T1068 |
Path Interception by PATH Environment Variable | T1574.007 |
Linux and Mac File and Directory Permissions Modification | T1222.002 |
参考記事:
- 「Detecting PwnKit (CVE-2021-4034) Using Trend Micro™ Vision One™ and Cloud One™」
By: Sunil Bharti, Nitesh Surana
翻訳:益見 和宏(Core Technology Marketing, Trend Micro™ Research)