たぶん1週間前に聞いたことがありますが、これは非常に重大な脆弱性のように思えます。しかし、それに関する技術的な説明は見つかりませんでした。 changed exifを使用して犠牲者に特別に細工した画像を送信するだけで、リモートでコードを実行できます。
誰かが私に本当に起こっていることのより良い技術的な説明を教えてもらえますか? Cライブラリのbugも知っているので、GoogleはすでにJavaで書き直しています。すべてのアドバイスをありがとう。また、公開されているエクスプロイトはありますか?
これが実際に活動している兆候は見当たりません。
何が起こっているのかというと、画像メタデータを調べて理解するコード、特にEXIFデータに欠陥があります。無効なデータを慎重に含めることにより(詳細はもちろん利用できません)、バッファオーバーフローを引き起こし、一部のデータがアクティブなコードに属するメモリ空間に格納されて実行される可能性が非常に高くなります。明らかに、メモリ空間は通常、いくつかの特権コードに属しています。このタイプの問題は、C/C++コードのすべてのセキュリティ問題の約90%を(前回聞いたときに)考えています。
Androidの問題は、システムアップデートはいつ、どのような場合に修正を適用するかを選択する電話サプライヤーからアップデートを送信するかどうかを選択するキャリアに任されているということです。 。多くのAndroid=脆弱な電話を使用しているユーザーがいます。そのため、Googleが修正を発行した可能性がありますが、使用中の携帯電話に到達する保証はありません。
少し調べた結果、脆弱なコード行を見つけたと思います。
Android Security Bulletin—September 2016 から、次の情報が見つかります。
メディアサーバーでのリモートコード実行の脆弱性
メディアサーバーにリモートコード実行の脆弱性があるため、攻撃者が特別に細工したファイルを使用して、メディアファイルとデータの処理中にメモリ破損を引き起こす可能性があります。メディアサーバープロセスのコンテキスト内でリモートコードが実行される可能性があるため、この問題は重大と判断されています。
- CVE:CVE-2016-3862
- 参照: A-29270469
- 重大度:重大な更新
- Nexusデバイス:すべてのNexus
- 更新されたAOSバージョン:4.4.4、5.0.2、5.1.1、6.0、6.0.1
- 報告日:2016年6月10日
これは this commit diff につながり、ExifInterface.Javaからjhead依存関係を削除した場所を示します。したがって、報告された日付に基づいて、約3か月前にjheadの問題がおそらく対処されました。
これは jheadの次のコミットの差分 と相関します。
@@ -614,7 +614,7 @@
unsigned OffsetVal;
OffsetVal = Get32u(DirEntry+8);
// If its bigger than 4 bytes, the dir entry contains an offset.
- if (OffsetVal+ByteCount > ExifLength){
+ if (OffsetVal > UINT32_MAX - ByteCount || OffsetVal+ByteCount > ExifLength){
// Bogus pointer offset and / or bytecount value
ErrNonfatal("Illegal value pointer for tag %04x", Tag,0);
continue;
次のコミットメッセージがあります。
可能な範囲外のアクセスを修正