2024年5月版 最速!危険度の高い脆弱性をいち早く解説「脆弱性研究所」第22回
5月に公開された重大な脆弱性(CISA KEV参照)
5月に新たに公開された脆弱性は5082となります。この中で特に重大な脆弱性をいくつかピックアップして説明したいと思います。
第三回で説明したCISAによる「実際に悪用されている脆弱性(Known Exploited Vulnerabilities Catalog)」のデータベース情報もあわせて載せています。
5月にCISAのKEVに登録された脆弱性はトータル14件で、内訳は
- Google: 4件
- D-Link: 2件
- Microsoft: 2件
- Apache Flink: 1件
- CheckPoint: 1件
- GitLab: 1件
- Justice AV Solution: 1件
- Linux Kernel: 1件
- NextGen: 1件
になっています。
参考情報
- CISA「Known Exploited Vulnerabilities Catalog」
1. TunnelVision (CVE-2024-3661)
VPNを使用している環境で偽のDHCPサーバーを立てることにより、VPNの暗号化通路を通らないで通信を別方向に流せるという脆弱性が見つかりました。当然、悪用のハードルが高いですが、興味深い脆弱性になります。こちらの「TunnelVision」という脆弱性について解説します。
一次情報源
CVE情報
公開されたCVEは以下になります。
- CVE-2024-3094
- Priority
- NVD: 7.6 High
- CVSS Score / CVSS Vector
- NVD: CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:L
- Priority
脆弱性の詳細
一時情報源のサイト内では、今回の脆弱性によりユーザーがVPNによって暗号化されていないパケットを送信し、攻撃者がそのトラフィックを盗み見ることができる状態を「Decloaking(クローキング解除)」という言葉を用いています。この「Decloaking」技術は2002年頃には可能であり、既に広く悪用されている可能性があると考えられています。
VPNを用いた場合の通信処理
一般に、ユーザー(実際にはユーザーが開いているアプリケーションなどのプロセス)がVPNクライアントを用いてVPNサーバーを通じ、外部のサービスとやりとりする際には以下の様な手順を踏みます。この図はかなり詳細に書かれてわかりやすいため、一次情報源のものを引用します。
- アプリケーションプロセスは生成したソケットにペイロードを送ります
- ソケットはペイロードをパケットにフォーマットし、ルーティングテーブルに送信して、どのインターフェイスを介して送信するかを決定します
- ルーティングテーブルにより、パケットがtun0を介して送信される必要があるかが決定されます
- ルーティングテーブルはパケットをファイアウォールに送信します
- ファイアウォールのルールにより、パケットはtun0を使用して流れます
- ネットワークインターフェイスはパケットをシリアライズし、User Landの/dev/net/tunのファイルディスクリプタに書き込みます
- VPNクライアントプロセスは、ファイルディスクリプタ内のパケットの暗号化されていないrawバイトを読み込みます
- VPNプロセスは、ペイロードを暗号化し、VPNが作成したソケットに送信します
- ソケットは、ペイロードをVPNサーバーにバインドされているパケットにフォーマットし、ルーティングテーブルに送信して、どのインターフェイスを介して送信するかを決定します
- ルーティングテーブルが、パケットをwlan0インターフェイスに通して送信する必要があると判断します
- ルーティングテーブルはパケットをファイアウォールに送信します
- ファイアウォールルールは、外部送信パケットでwlan0を引き続き使用するように判断します
- ネットワークインターフェイスは、パケットをWi-Fiドライバに転送します
- Wi-Fiドライバは、VPNにバインドされたパケットを物理ネットワークインターフェイスカード(NIC)に送信します
- パケットはインターネット経由でVPNサーバーに送信されます
- VPNサーバーは、物理NICに応答してパケットを送信します
- NICは応答パケットをWi-Fiドライバに送信します
- Wi-Fiドライバは、応答パケットをwlan0に配信します
- 応答パケットはファイアウォールに送信されます
- ファイアウォールのルールにより、パケットの処理が継続されます
- パケットはVPNソケットに返されます
- ソケットはパケットを受信し、パケットの暗号化されたペイロードをVPNクライアントプロセスに送信します
- VPNクライアントプロセスはペイロードを復号化し、応答パケットの暗号化されていないrawバイトをファイルディスクリプタに書き込みます
- tun0インターフェイスは、ファイルディスクリプタからバイトをデシリアライズし、パケットにフォーマットします
- tun0インターフェイスはパケットをファイアウォールに送信します
- ファイアウォールのルールにより、パケットの処理が継続されます
- パケットは、ユーザーのアプリケーションプロセスによって開かれたソケットに返されます
- パケットからのペイロードはアプリケーションプロセスに返されます
DHCPサーバーとDHCPクライアントの通信・DHCPオプション
DHCPサーバーとDHCPクライアントの通信は、下図にある通りです。
- クライアントがブロードキャストで「DHCP Discover」を出します
- ネットワーク上のDHCPサーバーが、クライアントにIPアドレスをリースできるという意味で「DHCP Offer」をリクエスト元(クライアント)にユニキャストで送ります
- クライアントはそのDHCPサーバーからのリースを受け入れるということで、「DHCP Request」ブロードキャストでを送信します
- DHCPサーバーはDHCPの使用するIPなどの情報を「DHCP ACK」として送ります。この際に、さまざまなオプションを指定して、いろいろな情報を渡すことができます
上述ステップ4.のときの「オプションを指定して、いろいろな情報を渡すことができる」という話ですが、このオプションはRFC2132、およびRFC3442に規定されていて
- Option 3 – Default GatewayのIPアドレス
- Option 6 – DNSサーバーのIPアドレス
- Option 51 – IPアドレスのリース情報(リース期間など)
- Option 121 (スタティックルーティング情報。RFC3442により追加)
などがあり、いずれもクライアントがIPアドレスを使って、ネットワーク通信を行う際に必要になる情報です。
「Decloaking」攻撃
まず、この「Decloaking」攻撃が成功するための前提条件は
- 標的になるホストは、攻撃者が制御するDHCPサーバーからのIPアドレスリースを受ける必要があります。つまり同じネットワークにある必要があります
- 標的上で動作するDHCPクライアントは、上記のOption 121を実装している必要があります
- 標的と同じネットワークにあるDHCPサーバーがOption 121を使用して、スタティックテーブルを標的ホストに送ります。ここで一般的にVPNが使用している/0 CIDRよりも限定されたルーティングをプッシュすることで、優先的にそちらを使わせることができます。例えば複数の/1 CIDRを使用することで、/0 CIDRのほとんどを上書きすることができます
- DHCPサーバーからルートをプッシュすると、そのルーティングのネットワークトラフィックには、DHCP サーバーと通信したインターフェイス(wlan0)が使われ、VPNトンネル(tun)は通らなくなります。これを利用して、攻撃者はルーティングを適切にプッシュすることで、どの IP アドレスがVPNトンネルを経由し、どのアドレスがVPNトンネルで暗号化されずにwlan0を経由して通信するか、などを選べるように(先述のVPN通信での3.などで使用する)ルーティングテーブルを書き換えられます
各ベンダーの対応
本脆弱性に対する対応ベンダーは以下のとおりです。
- Cisco
- Fortinet
- Palo Alto
参考情報
- TunnelVision (CVE-2024-3661): How Attackers Can Decloak Routing-Based VPNs For a Total VPN Leak
- RFC2132
- RFC3442
2. Fluent Bitにリモートコード実行の脆弱性(Linguistic Lumberjack: CVE-2024-4323)
Tenable Researchが、Fluent Bitの「Linguistic Lumberjack(CVE-2024-4323)」と呼ばれる重大なメモリ破損の脆弱性を発見し、2024年5月20日に公開しました。こちらではその脆弱性について簡単にまとめていきます。
一次情報源
CVE情報
公開されたCVEは以下になります。
- CVE-2024-4323
- 一次情報源CVSS
- Base Score: 9.8 CriticalVector: AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
- Fluent Bit 2.0.7 – 3.0.3
- 問題のバージョンのFluent Bitにメモリ破損の脆弱性が見つかりました。 この問題は、組み込み http サーバーによるトレース リクエストの解析にあり、サービス拒否状態、情報漏洩、またはリモートコード実行を引き起こす可能性があります。
- 一次情報源CVSS
Fluent Bitとは
Fluent Bitは、ログやメトリクス・トレースなどのデータを収集し、集中監視と分析のために、ElasticsearchやApache Kafkaなどに送信できるエージェントです。Linux/BSD/macOS/Windows用に開発されています。さまざまなソースからのデータを簡便に収集・処理できるように、パフォーマンスに重点を置いて作成されています。
基本的にはFluentdと同様のものになりますが、Fluentdが主にRubyで実装されているのに対して、Fluent Bitは主にC言語で作られており、軽量版と位置付けられています。AWSやAzureでも提供されており、Googleでもサポートされている、非常に汎用的なログ送信エージェントになります。
詳細情報とPoC
Fluent BitのTap機能では、Fluent Bitを通過したメッセージがどのフィルタに影響を受けるかなどを調べるためにトレースを行うことができます。またこのtrace機能の有効・無効を調べられます。
$ curl 127.0.0.1:2020/api/v1/trace/input_dummy
{"status":"ok"}
(上記のコマンド、および結果はTroubleshootingより引用)
このtraceのinputは解析前の入力値検証がされておらず、MSGPACK_OBJECT_STRsであると仮定されて処理されます。このため、入力時に配列値として適切な非文字列を渡すことで、メモリ破損を引き起こす可能性があります。
Tenableラボでは、この問題を悪用してサービスをクラッシュさせたり、DoS状態を引き起こすことができたようです。また、隣接するメモリの情報も取得できて、機密情報の漏洩にもつながる可能性があります。
リモートコード実行に関しては、アーキテクチャやOSなどの環境要因に依存するため、理論上は可能ですが、実現するには時間がかかる可能性があるとのこと。ただし、DoSや機密情報漏洩は確実に起きるため、少なくとも対応は早急にとるべきです。
PoCに関しては、DoSのPoCが一次情報源(tenableのサイト)に載っていますので、そちらを参考にしてください。
クラウドベンダー対応状況
- AWS上のFluent Bitには影響するようです。本記事の執筆中には、まだオフィシャルの声明は出ていませんが、
- Microsoft Azure,、Google Cloudに関しての情報は出ていませんが、こちらも影響すると思われています
参考情報
- Linguistic Lumberjack: Attacking Cloud Services via Logging Endpoints (Fluent Bit – CVE-2024-4323)
- Fluent Bit v3.0 Documentation
- Fluent Bit イメージ向け AWS
- Azure Data Explorer でのストリーミングをサポートする Azure Storage 用の Fluent Bit コネクタ
- Troubleshooting
- https://github.com/aws/aws-for-fluent-bit/issues/826
3. D-Link DIR-X4860の脆弱性、CVEは未公開
SSD Secure Disclosureにより、D-Link DIR-X4860の脆弱性が公開されました。D-Link側では対応中で、CVE番号は未公開の状態になっています。こちらでは、現在わかっている情報をまとめています。
一次情報源
詳細情報とPoC
D-LinkのDIR-X4860に脆弱性が見つかりました。リモートの非認証の攻撃者がHNAP ポートにアクセスして昇格されたroot特権を取得し、コマンドを実行できるようになるとのこと。
PoCも一次情報源(SSD)のサイトに載っていますので、参考にしてください。
ベンダーの対応
SSDがD-Linkに脆弱性を報告しましたが、30日経っても返答が来なかったため、脆弱性の公開に踏み切っています。
最終的に、D-Linkが速報で脆弱性について説明を出しています。また、専用のタスクフォースと製品管理チームが対応を行なっていると伝えており、5月21日にベータ版のホットフィックス(v1.04B04)をリリース、ダウンロードできるようになっています。
参考情報
- SSD ADVISORY – D-LINK DIR-X4860 SECURITY VULNERABILITIES
- https://shop.us.dlink.com/
- DIR-X4860 :: Rev. Ax :: v1.04B03 :: LAN-Side Unauthenticated Command Execution Vulnerability
5月のまとめ
5月ですが、他にもVMWareのCriticalな脆弱性(CVE-2024-22267, CVE-2024-22268, CVE-2024-22269, CVE-2024-22270)や、F5 Next Central Managerのリモート脆弱性(CVE-2024-21793, CVE-2024-26026)などが出ています。皆様も使用ベンダーからの情報に気をつけて、きちんと更新を行うように気をつけてください。
<著者> 面 和毅
サイオステクノロジー株式会社 上席執行役員
OSS/セキュリティエバンジェリスト
OSSのセキュリティ専門家として20年近くの経験があり、主にOS系のセキュリティに関しての執筆や講演を行う。大手ベンダーや外資系、ユーザー企業などでさまざまな立場を経験。
2015年からサイオステクノロジーのOSS/セキュリティエバンジェリストとして活躍中。また、ヒートウェーブ株式会社でも講師として活動中。
専門分野はSELinuxを含むOSのアクセス制御、AntiVirus、SIEM、脅威インテリジェンス。
「脆弱性研究所」の最新話は、メールマガジンにてもご案内致しています。是非JAPANSecuritySummit Updateのメールマガジンにご登録ください。
メールマガジンの登録はこちらからお願いします
最速! 危険度の高い脆弱性をいち早く解説「脆弱性研究所」の過去の記事はこちらから