web-dev-qa-db-ja.com

悪意のある「特別に細工された」MP4ファイル

私は遭遇しました CVE-2019-2107 言う

".... CVE-2019-2107を使用すると、デコーダー/コーデックはmediacodecユーザーの下で実行され、適切に「細工された」ビデオ(タイルが有効になっている-ps_pps-> i1_tiles_enabled_flag)を使用すると、RCEを実行できます。

一晩グーグルで検索した後、悪意のある男がどのようにしてこのビデオファイルを作成することができるのか、まだわかりません。

OllyDbgを使用して、研究者のgithubリポジトリからPOC mp4を開こうとしましたが、ファイルがmp4形式であるため、お勧めできません。

私の質問は:

  1. IDEまたは言語を使用して、どのようにしてそのようなファイルを「作成」することができますか?
  2. Githubから公開されたPOCに基づいてPOCを再現するにはどうすればよいですか?
  3. MP4 POCをリバースエンジニアリングするにはどうすればよいですか?

研究のエントリーポイントとなるような答えを探しています。これは私のユニークな論文なので、私の大学のプロジェクトに役立つと思います。

1
R00t_R3z

すべてのファイルは単なるバイトの文字列です。 MP4ファイルは、誰に尋ねるかに応じて、MP4標準に準拠したバイトの文字列、またはMP4プレーヤーが何かを実行できる、または'00 00 00 18 66 74 79 70 6D 70 34 32 'として最初の12バイト(多くのファイル形式の標準は、常にいくつかの固定バイト文字列で始まるため、プログラムはそれらだけを見て、ファイルの種類を確認できます。これはマジックナンバーと呼ばれます)。原則として、バイトを1つずつ入力するだけで、16進エディターを使用して有効なMP4ファイルを作成できますが、MP4標準はかなり複雑であるため、多くの労力が必要になります。

巧妙に作成されたエクスプロイトファイルのコンテキストでは、MP4ファイルは、ターゲットのMP4プレーヤーが処理する前に読み取り、「これはMP4ファイルです」と言うファイルです。つまり、マジックナンバー、または拡張子「.mp4」のみが付いている可能性があります。任意のファイルを作成する方法で作成できますが、おそらくmp4ファイルを作成するプログラムを変更するか、有効なmp4ファイルを取得して、16進エディターで手動で変更します。ほとんどの巧妙に細工されたエクスプロイトファイルは実際には有効ではありませんが、MP4ファイル(またはその他)のふりをしています。

そのため、1)バイトをファイルに書き込む任意の方法を使用して作成できますが、実際にはおそらく、有効なMP4ファイルを生成するか、または有効なMP4ファイルであるものを変更することで作成しました。

2)脆弱なAndroidバージョン(Android-7.0 Android-7.1.1 Android-7.1.2 Android-8.0 Android-8.1 Android- 9. Android ID:A-130024844どうやら)、またはAndroidビデオプレーヤーの脆弱なバージョンを使用して処理される環境で。

3)脆弱なソフトウェアをデバッガーに入れて、hvec-crash-poc.mp4にフィードしたときに何が起こるかを正確に確認できます。 OllyDbgはここでは役に立たないことに注意してください。Android環境で動作するデバッガが必要ですが、OlylyDbgはWindows固有です。GitHubページのスクリーンショットから、GDBを使用しているようです。私はAndroid=で動作しないので、これについて引用しないでください。ただし、問題のある脆弱なソフトウェア(Android Video Player)は、添付する必要があるシステムサービスだと思いますデバッガーを使用するには、ルート化されたAndroid(またはAndroidエミュレーター)が必要です。

3
Silver