パスワードを忘れた? アカウント作成
16536185 story
Google

Google Pixelのマークアップツールで編集前の画像が復元できる脆弱性、エクスプロイトが公開 12

ストーリー by headless
復元 部門より
Google は Pixel の「マークアップ」ツールで発見された脆弱性 (CVE-2023-21036) を 3 月のアップデートで修正したが、これを利用するエクスプロイト「aCropalypse」が公開されている (エクスプロイト作者のブログ記事9to5Google の記事Android Police の記事Simon Aarons 氏のツイート)。

マークアップはスクリーンショット撮影時に表示され、画像のクロップや書き込み・塗りつぶし等を可能にする。CVE-2023-21036 では編集の結果を保存する際にファイルサイズを切り詰めずに新しい画像データを上書きするため、元のデータが一部残されてしまう。具体的な処理を知ることは難しいが、エクスプロイト作者の David Buchanan 氏は Android 10 以降で 2021 年に修正された ParcelFileDescriptor.parseMode のバグとみているようだ。

脆弱性が修正されても既に保存したファイルが更新されるわけではない。このような画像をソーシャルメディアアプリやメッセージングアプリなどで送信する場合、読み取れない元の画像データはメタデータとともに削除されるが、Discord では 1 月までこのような処理が行われていなかったという。そのため、それ以前にアップロードしたスクリーンショットでは、隠したつもりの部分が復元されてしまう可能性がある。

エクスプロイトの作者が過去に使用していた Pixel 3XL のスクリーンショットを Discord からダウンロードして復元処理を行ってみたところ、eBay の確認メールのスクリーンショットから自宅住所全体が復元されたそうだ。なお、復元処理はすべてローカルで行われるとのことだ。
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 見えなくなったからって情報が無くなったわけではないと言うあれ?

    • by Anonymous Coward on 2023年03月19日 14時43分 (#4429389)

      だよねー
      https://bunshun.jp/articles/-/7742?page=1 [bunshun.jp]
      PNGって画像ファイル内のどこを表示するか指定できるんですかね。
      確かピクセルのすクラーンショット関連ツールはPNG形式で画像を作るはず。

      親コメント
      • by Anonymous Coward

        そういうんじゃなくて、ファイルサイズが小さくなるときにtruncateを忘れていて元のファイルの末尾部分がゴミとしてトリミングしたファイルの末尾にそのまま残ってしまうという問題。
        一般には先頭部分が失われたzlibストリームを復元することはできないけど、16KBごとに動的ハフマン辞書が初期化される性質とか新しいファイルに含まれる切り抜き部分を既知平文として使うことで復元が可能になるらしい

  • 復元できなかったけどなんでだろう
    元のファイルだと復元できたけどよくわからない

  • by Anonymous Coward on 2023年03月19日 15時25分 (#4429401)

    ファイルそのままで先頭から書き込んじゃう奴ね。やるやる。
    トリミングしたつもりが途中から普通に見れてしまうのは確かに問題。

    しかしウェブサービスも画像を受け取るならきちんとデータのトリミング?みたいな地味に面倒そうな処理をしないといけないのね。
    メタデータ削除のついでにやるようなものだし、そういうことしないと画像ファイルサーバーのつもりがデータ置き場に転用されかねないからセキュリティ対策を別としてもやらざるを得ないが。
    でも軽く自作サービス作る時とかめんどくさそうだなぁ。ライブラリもツールもあるだろうけど。

    • by Anonymous Coward on 2023年03月19日 21時07分 (#4429489)

      modeをwでfopenすべきところをr+で開いちゃってたみたいなことなのか
      加工したファイルを元ファイルに上書き保存するってイメージがなくてすぐには分からなかった

      親コメント
      • by ktmizugaki (46208) on 2023年03月24日 16時07分 (#4432094) 日記

        Android の ContentResolver の openOutputStream では、 mode に "w" を指定しても切り詰められないというのが始末に悪い。
        前に自作アプリでひかかって調べたら、自分で truncate メソッドを呼ぶと良いというのを見つけて、まじかいなと思いながら対応した記憶がある。
        今調べたら、 Android 10 から "w" では切り詰められない動作に変わっていて、 "wt" と指定すると 切り詰められるらしい……。

        --
        svn-init() {
          svnadmin create .svnrepo
          svn checkout file://$PWD/.svnrepo .
        }
        親コメント
  • 猫缶とか璃樹無とかうめ~このみかんとかFCさくらとかあややとかでんことかラブマとか
    堂々と埋め込まずにコソコソ黒塗りするだけだからそういう目にあう
    スマホ厨は軟弱だなぁ

  • by Anonymous Coward on 2023年03月23日 13時51分 (#4431365)

    記事に書かれているようにバグってるのはParcelFileDescriptor.parseMode。
    バグの影響を受けるのがPixel の「マークアップ」ツール。

    他にもParcelFileDescriptor.parseModeを使っているソフトウェアで作成した画像ファイルは同様の問題が存在する
    っていう理解でよいのかな?

typodupeerror

にわかな奴ほど語りたがる -- あるハッカー

読み込み中...