ESETは、Adobe ReaderとMicrosoft Windowsに2つのゼロデイ脆弱性を発見しました

2018年3月末に、ESETの専門家は異常な悪意のあるPDFファイルを発見しました。 よく調べてみると、サンプルでは、​​Adobe Readerのリモートコード実行(RCE)の脆弱性とMicrosoft WindowsのLPE特権の脆弱性という2つの未知の脆弱性が使用されていることがわかりました。









2つの0日の組み合わせは非常に危険です。攻撃者が最大の特権と最小のユーザー参加でターゲットシステムで任意のコードを実行する機会を与えるためです。 ARTグループは、多くの場合、昨年のSednitキャンペーンなど、同様のツールの組み合わせを使用します。



悪意のあるPDFを発見したESETの専門家は、Microsoft Security Response Center、Windows Defender ATP、およびAdobe Product Security Incident Response Teamに連絡して脆弱性を解決しました。



AdobeおよびMicrosoftのパッチと推奨事項は、次のリンクから入手できます。



APSB18-09

CVE-2018-8120



以下の製品は脆弱です。



•Acrobat DC(2018.011.20038以前)

•Acrobat Reader DC(2018.011.20038以前)

•Acrobat 2017(011.30079およびそれ以前)

•Acrobat Reader DC 2017(2017.011.30079およびそれ以前)

•Acrobat DC(Classic 2015)(2015.006.30417およびそれ以前)

•Acrobat Reader DC(Classic 2015)(2015.006.30417およびそれ以前)

•Windows 7 for 32-bit Systems Service Pack 1

•Windows 7 for x64-based Systems Service Pack 1

•Windows Server 2008 for 32-bit Systems Service Pack 2

•ItaniumベースシステムService Pack 2用のWindows Server 2008

•Windows Server 2008 for x64-based Systems Service Pack 2

•ItaniumベースシステムService Pack 1用のWindows Server 2008 R2

•Windows Server 2008 R2 for x64-based Systems Service Pack 1



以下は、悪意のあるサンプルと脆弱性の技術的な説明です。



はじめに



PDFファイルは、標的のコンピューターにマルウェアを配信するためによく使用されます。 悪意のあるコードを実行するには、攻撃者はPDF表示ソフトウェアの脆弱性を検索して悪用する必要があります。 最も人気のあるそのようなプログラムの1つはAdobe Readerです。



Adobe Readerは、サンドボックス保護モードとして知られている分離実行テクノロジーを実装しています。 その詳細な説明は、Adobeブログ( パート1パート2パート3パート4 )で公開されています。 サンドボックスは攻撃の実装を複雑にします。悪意のあるコードが実行されても、攻撃者はAdobe Readerを実行しているコンピューターを侵害するためにサンドボックス保護をバイパスする必要があります。 原則として、オペレーティングシステム自体の脆弱性は、サンドボックスをバイパスするために使用されます。



攻撃者がAdobe Readerとオペレーティングシステムの両方の脆弱性を見つけてエクスプロイトを作成することができたまれなケース。



CVE-2018-4990-Adobe ReaderのRCE脆弱性



悪意のあるPDFには、操作プロセスを制御するJavaScriptコードが組み込まれています。 このコードは、PDFファイルを開いた後に実行されます。



操作プロセスの開始時に、JavaScriptコードはButton1



オブジェクトを操作します。 オブジェクトには、二重の脆弱性を引き起こす特別に細工されたJPEG2000イメージが含まれています。





図1. Buttonオブジェクトを操作するJavaScript。



JavaScriptは、ヒープスプレー技術を使用して内部データ構造を破壊します。 これらの操作の後、攻撃者は主な目標-読み取りおよび書き込み権限を持つメモリへのアクセス-を達成します。





図2.メモリの読み取りと書き込みに使用されるJavaScriptコード。



攻撃者は2つのプリミティブを使用して、Adobe JavaScriptエンジンであるEScript.api



プラグインのメモリアドレスを見つけます。 このモジュールのROPガジェットを使用して、悪意のあるJavaScriptがROPチェーンをセットアップし、ネイティブシェルコードの実行につながります。





図3. ROPチェーンをインストールする悪意のあるJavaScript。



最後のステップとして、シェルコードはPDFに埋め込まれたPEファイルを初期化し、実行に渡します。



CVE-2018-8120-Microsoft Windowsでの権限昇格



Adobe Readerの脆弱性を悪用した後、攻撃者はサンドボックスを取り除く必要があります。 これが2番目のエクスプロイトのタスクです。



これまで知られていなかったこの脆弱性は、 win32k



WindowsカーネルコンポーネントのNtUserSetImeInfoEx



関数に基づいています。 特に、 SetImeInfoEx



のサブルーチンであるNtUserSetImeInfoEx



は、データポインターをチェックしないため、nullポインターを逆参照できます。





図4.逆アセンブルされたSetImeInfoEx関数。



図4でSetImeInfoEx



ように、 SetImeInfoEx



関数は、初期化されたWINDOWSTATIONオブジェクトへのポインターを最初の引数として予期しています。 攻撃者が新しいWSオブジェクトを作成し、ユーザーモードで現在のプロセスに割り当てる場合、 SpklList



はゼロになる可能性があります。 したがって、ゼロページをマッピングし、ポインターをオフセット(オフセット)0x2Cに設定すると、攻撃者はこの脆弱性を利用してカーネル空間の任意のアドレスに書き込むことができます。 Windows 8以降、ユーザープロセスはゼロページデータを変換できないことに注意してください。



攻撃者は任意の書き込みプリミティブを持っているため、さまざまな手法を使用できます。 しかし、 今回のケースでは、攻撃者はIvanlef0uによって記述された手法と、 Mateusz "j00ru" JurczykおよびGynvael Coldwinを選択します。 グローバル記述子テーブル(GDT)を上書きすることにより、呼び出しゲートウェイをリング0に設定します。 これを行うために、攻撃者はSGDTアセンブリ命令を使用してソースGDTのアドレスを取得し、独自のテーブルを作成してから、前述の脆弱性を使用して元のGDTを上書きします。



このエクスプロイトは、 CALL FAR



コマンドを使用して特権レベルを呼び出します。





図5.分解されたCALL FARコマンド。



コードがカーネルモードで実行されると、エクスプロイトは現在のプロセストークンをシステムトークンに置き換えます。



結論



ESETの専門家は、悪意のあるサンプルの公開リポジトリにアップロードされたときに、悪意のあるPDFを発見しました。 サンプルには、開発の初期段階で検出されたことを示す最終ペイロードは含まれていません。 それにもかかわらず、著者は脆弱性の検索と悪用の記述の分野で高い資格を示しています。



侵害の兆候(IoC)



ESET製品による検出:

JS / Exploit.Pdfka.QNVトロイの木馬

Win32 / Exploit.CVE-2018-8120.Aトロイの木馬



SHA-1:

C82CFEAD292EECA601D3CF82C8C5340CB579D1C6

0D3F335CCCA4575593054446F5F219EBA6CD93FE



All Articles