発見者:Cisco Talos
概要
Talos では、2017年2月2日付けで TALOS-2016-0229 / CVE-2016-8027 を公開します。これは、McAfee ePolicy Orchestrator(McAfee ePO)5.3.0 に SQL インジェクションの脆弱性が存在し、悪用するとユーザ認証なしでアクセスできるというものです。巧妙に細工された HTTP POST を介して攻撃者が SQL クエリを改変することで、データベース内部から情報が漏洩する可能性があります。つまり、McAfee エージェントになりすまし、その McAfee エージェントに関連する特定情報の漏洩を引き起こすことが可能です。攻撃者は任意の HTTP クライアントを使用して、この脆弱性をトリガーできます。
McAfee は、この脆弱性に対するアドバイザリをこちら で公開しています。
詳細
McAfee ePolicy Orchestrator はセキュリティの一元管理スイートであり、組織全体で McAfee ウイルス対策セキュリティ ポリシーを制御するために使用されます。この種のソフトウェアは、HBSS つまりホストベースのセキュリティ システムと呼ばれることもあります。これは、企業に導入されている多数のエージェントの管理に使用され、防御とソフトウェア ポリシーをスケーラブルな方法で実施するために利用できます。
McAfee ePolicy Orchestrator は複数のコンポーネントから成ります。これは Apache とカスタム モジュールによる拡張で動く、ロードバランサで構成されます。コンソール自体は Tomcat ベースであり、管理者によるソフトウェア全体の管理に使用されます。最後のコンポーネントは、各クライアント マシンに導入されたエージェント自身です。エージェントは、SPIPE と呼ばれる独自のプロトコルで Apache と通信しますが、この内容はこの後、コンソールに転送されます。ここで述べる脆弱性はアプリケーション サーバ内に存在し、SPIPE 経由で利用できます。これは、コンソール経由で直接利用できる、ということです。
デフォルト設定の場合 Tomcat サーバ コンポーネントにはポート 8443 で到達可能です。この中には多数の servlet があり、アプリケーション管理コンポーネントとして機能します。
DataChannel servlet は実際には、「https:///receiveDataChannelMsg.dcp」に対して受信した POST 要求にマッピングされ、「com.mcafee.epo.dataChannel.servlet.EPODataChannelServlet」クラスによって実装されます。この servlet へのアクセスは通常、認証が必要です。しかし、エージェント用に、この servlet に対して要求を転送する servlet が別に存在します。
この servlet は「com.mcafee.epo.dataChannel.servlet.redirect.EPODataChannelRedirectServlet」クラスであり、「https:///dcRedirect/dataChannelMsg.dc」にマッピングされます。このリソースは、認証なしで POST 要求を受信し、認証不要で処理するために「/receiveDataChannelMsg.dcp」に転送します。
POST 要求が EPODataChannelServlet クラスで受信されると、次のコードが実行されます。ProcessIncomingMessage 関数を呼び出すと、最終的には EPOBaseDataChannelData.unpackLittleEndian_DataPacket メソッドが呼び出されます。
このメソッドは、POST コンテンツ(メッセージ タイプ、発信元、最も重要であるエージェントの GUID などを含む)から構造を解読します。その後、このオブジェクトは DataChannelMessagingServiceInternal.receieveAgentMessage メソッドに渡され、その次に EPODataChannelMessagingService.receiveAgentMessage メソッドに転送されます。この時点で AgentGUID は、EPOComputerService.getByAgentGUIDNoUserCheck メソッドから呼び出される情報の引数として使用されます。
脆弱性はこの段階で生まれます。EPOComputerService クラス内の getByAgentGUIDNoUserCheck メソッドが、渡された AgentGUID を受け取り、EPOComputerDataMapper クラスによるクエリを構築します。これは、JDBC 接続によって実行されます。構築されるクエリは以下のとおりです。
select AutoID, Type, NodeName, ParentID, AgentPlatform, ResortEnabled, AgentGUID, SequenceErrorCount, SequenceErrorCountLastUpdate, SuperAgent, TenantId from [EPOLeafNode] where (AgentGUID = ‘%s’)
本脆弱性に関する詳細については、こちら をご覧ください。
既知の脆弱性バージョン
McAfee ePolicy Orchestrator 5.3.0 http://www.mcafee.com/us/products/epolicy-orchestrator.aspx
まとめ
McAfee ePO などの大規模に使用されるソフトウェア アプリケーションは、設定の一元化を実現します。これは、IT/セキュリティ管理者から地理的に分散した組織に適用される可能性があります。このような脆弱性は、組織に関する看破につながります。攻撃者は Active Directory などの一元化されたプラットフォームに対する特権アクセスを手に入れる必要はありません。攻撃者は自ら動かなくても、前述のアクセスを利用して、ユーザやインフラストラクチャの概略を描くことができるのです。Talos では、インターネットを使用する消費者やユーザの安全を確保するために、製品ベンダー、オープン ソース イニシアチブまたは個人との関係を保ちつつ、引き続き新しいバグの分類や分析を実施します。
カバレッジ
この悪意ある試行は、以下の Snort ルールにより検出可能です。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新のルールの詳細については、FireSIGHT Management Center または Snort.org を参照してください。
Snort ルール:411410
本稿は 2017年2月2日に Talos Group のブログに投稿された「Vulnerability Spotlight – McAfee ePolicy Orchestrator DataChannel Blind SQL Injection Vulnerability」の抄訳です。