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

TwitterでPNGに偽装しファイル共有を行う方法が発見される 53

ストーリー by nagazou
偽装 部門より
PNG画像に偽装することにより、Twitter上でファイルの共有が行える方法が発見されたそうだ。セキュリティ研究者のDavid Buchanan氏が発見したもので、特定の条件を満たせばZIP、MP3といったファイルを埋め込んでの投稿、それをダウンロードして元に戻すことも可能であるとしている(David Buchanan氏のツイートGitHubに上げられた詳細情報ThreatpostINTERNET WatchTECH+)。

同氏は告知をしているツイートにPNG画像に偽装したZIPファイルを投稿している。GitHubに上げられた説明によると、投稿可能な条件としては、Twitterは3MB以下のファイルであれば再エンコード処理をしないことことから3MB以下に抑えること、最適化を防ぐために257以上の色数を使用していること、画像に不要なメタデータ・チャンクを含まないことなどとなっている。
  • 埋め込みツールのコードを見てみましたが、
    ・入力は PNGファイル(偽装対象)とZIPファイル(埋め込みデータ)の二つ。
    ・PNGファイルのIDATチャンク(圧縮した画像データそのものを示すデータ領域)の後ろにZIPファイルを追加して埋め込んだものを出力する
    というものでした。「圧縮画像データ」の中にzipが入ってるので、「コメント等の余計なデータを除去する」ような処理で埋め込みデータあが消されることはありません。

    あとは、
    ・PNG表示時は、画素数分だけ展開ができたら、そこで圧縮データからの読み込みは終わる。その後ろにゴミが付いてても無視されるだけで問題ない。
    ・ダウンロードしたファイルは、拡張子を ZIP にするだけ。ZIPファイルを扱うツールはZIPデータが始まるまでの不要部分(PNGデータ部分)はテキトーに読み捨ててファイル中のZIPデータを見つけ出してくれる。
    という形になってます。

    抽出ツール等は不要というのが手軽ですね。

    ここに返信
    • by Anonymous Coward

      > テキトーに読み捨ててファイル中のZIPデータを見つけ出してくれる。

      SFXで展開ルーチンが先頭にくっついている物対策ですかね

      • by Anonymous Coward on 2021年03月25日 20時37分 (#4001132)

        ZIPは各ファイルのオフセット等の情報をまとめたセントラルディレクトリというのが最後にあって、
        セントラルディレクトリの開始位置というのは、後ろから辿る場合、必ずしも1パスでは確定しない、
        という、イマイチな仕様がある。
        なので、大抵の実装ではヘッダを探索するようになっている。

        • by Anonymous Coward on 2021年03月26日 6時52分 (#4001293)

          LZHも前後にゴミが含まれていても構わないという仕様で、ヘッダー探索が必要だったな。そもそも当時のファイル転送プロトコル(XMODEM)はファイルサイズを128の倍数にしかできない仕様だったので、末尾のゴミに対応できることは必須だった。
          LZHとZIPを結合して、LZHとしてもZIPとしても展開できて、それぞれ別のファイルが出てくるという書庫をパソコン通信時代に見た覚えがある。今でもベクターに残ってるかも。あとLZHの末尾にishが付加されていて、ishをかけるとやっぱり別のファイルが出てくるとか

    • by Anonymous Coward

      これって処理も軽そうだからファイルシステムに組み込んで写真容量無制限がウリのクラウドで使えんのかな?w
      できたとしてもすぐ対策されるんだろうけど。

      • by Anonymous Coward

        初期のころは拡張子だけ画像ファイルに変更してアップロードなんてレベルでも通ってた

  • by Anonymous Coward on 2021年03月25日 18時20分 (#4001043)

    らるち~最強すぎひん?

    ここに返信
  • by mizogami00 (49281) on 2021年03月25日 23時22分 (#4001207)

    Twitterがどうとかはどうでもいい話だが、
    内部ファイルの持ち出しを厳密に禁じられているような現場だったとして、
    画像の作成担当であれば一見ただサイトの画像ファイルを更新するように社外秘を画像に入れ込むことでネットを介して堂々と持ち出せるということだよね。

    よほど不自然なサイズにならなければ露見することもまずなさそう。

    ここに返信
    • by Anonymous Coward

      各種画像ファイルから画像に無関係なデータの量を取得して一定量以上なら報告するツール、とかはそんなに難しくないと思う。
      画像ペイロードに混ぜ込まれると面倒だけど。

      • by Anonymous Coward

        簡単に(つまり機械的に)できるならTwitterもそうすればいいだけの話で、これはそうじゃない。

    • by Anonymous Coward

      twitterに上げられることが新規性なのに、そこを無視したら四半世紀以上前の話になるぞ。

    • by Anonymous Coward

      画像に偽装すればぐらいのアイデアはそんなに珍しいものではなくて、普通にセキュリティ管理者の思考には含まれていると思う。
      多人数に閲覧される画像にデータを埋め込む内部犯の面の皮は中々厚いが、
      基本的な考え方として、インターネットの接続を許したら、絶対的な悪意のある内部犯の情報漏出をシステムで防ぐのは不可能だろう。

  • by Anonymous Coward on 2021年03月26日 6時43分 (#4001292)

    画像データとは別の領域 (チャンク) にデータを放り込む手法では発見が容易なので、画像に埋め込むほうが確実だよ。
    いわゆるステガノグラフィはかなり研究されている分野で、 PNG なら本来の画像データの数割程度の大きさのデータなら違和感なく埋め込める。
    他のデータ形式に変換した場合などの復元性まで考えるならちょっと大変なんだけど、この場合は再エンコードはされないという前提なんでしょ?

    ここに返信
  • by Anonymous Coward on 2021年03月25日 18時20分 (#4001042)

    2000年代初頭ぐらいに流行ったファイル偽装じゃないか…。
    色々ツールあったよね。

    ここに返信
    • by Anonymous Coward on 2021年03月25日 18時29分 (#4001054)

      2000年代初頭ぐらいに流行ったファイル偽装じゃないか…。
      色々ツールあったよね。

      ステガノグラフィーとか
      インプラントとか
      Warezの頃ですね

      # しっかしless thanを以下と訳しちゃうのはいつの時代も変わらんよねぇ

      • ことことしてるけど

        • by Anonymous Coward

          https://github.com/DavidBuchanan314/tweetable-polyglot-png [github.com]

          Embedded file requirements
          The total output file size must be less than 3MB (maybe 5MB?), otherwise twitter will convert the PNG to a JPEG.

          なので
          「合計出力サイズは3MB未満である必要がある(もしかしたら5MBいけるかも?)」ですね

      • by Anonymous Coward

        これ拡張子をzipにリネームしただけで展開できるんですけど。ぜんぜん違う。

        • by Anonymous Coward
          全然違わないよ
          古のファイル偽装ソフトでもそのまま解凍できたりできなかったりはバラバラ
          偽装レベルを調整できたりもした
          • by Anonymous Coward

            当時に例えたら、偽装ソフトで作ったjpgファイルを、受け取った側は拡張子をlzhに変えるだけで、
            偽装ソフトを必要とせずに解凍できるというのがコレ。
            少なくともステガノグラフィーがそんなことで復号できるわけない。
            解凍にも偽装ソフト使用しないといけない点で全然違うと言っている。

            • by Anonymous Coward

              拡張子を変えるだけで読めるのはzipファイル側の特性だから、
              偽のファイルヘッダを付与するタイプの偽装なら当時のツールでだってできるでしょ

    • ishってまだ使えるのかな。

      • by Anonymous Coward

        ish for Linux/Windows [vector.co.jp]ってのがありますな。

        # 偽装という意味ではishのパクリであるfish(バイナリデータを魚へんの漢字に変換する)のほうが・・

      • by Anonymous Coward

        オリジナルは16bitでビルドされているので、Windows10(64bit)では動かなかった。
        32bitOSのDOSプロンプトなら動くんじゃない?

        • by Anonymous Coward

          DOSBOXとか互換環境なら行けるんじゃないかな、日本語出ないけど

          # たしか難解バカボン(これも16ビット)が動いたような
          # 画面表示は文字化けするので、テキスト出力してそれをWindows側で読む

    • by Anonymous Coward

      おっさんホイホイの予感!
       
      Rarutyという単語が頭よぎったけどあってる?

      • by Anonymous Coward

        1ファイル3Mって有料鯖じゃないですか。
        taxiクラス。鳥は512kまで。

    • by Anonymous Coward
      Love Machine ってあったなぁ
      • by Anonymous Coward

        「ラブマシーンという名前を聞いて何を思い浮かべるか?」という質問によって回答者の年代が割り出せる、というウソ技(テク)を思いついた。

        • by Anonymous Coward

          水晶の竜で野球拳ダトッ

    • by Anonymous Coward

      昔は俺もヤンチャだった的な更生済みアングラ厨房どもは知らないだろうけど、ゲームのセーブデータとして現役で使われてるよ。
      画像部分はキャラクタの外観、後ろの方はキャラクタのパラメータとか。

      • by Anonymous Coward

        吉里吉里のセーブデータかな?

        • by Anonymous Coward

          エロゲ―のキャラクタカードとシーンデータ
          前者は仮想的な着せ替え人形、後者は仮想的なジオラマ的なものと思っていただければと

          ご参考(職場からのアクセス注意):
          http://www.illusion.jp/ [illusion.jp]

    • by Anonymous Coward

      懐かしいといえば、初期のPGPは米国のソフトウエア輸出規制があったんで、
      法令回避のため印刷して書籍として輸出して、米国外で再入力してたんじゃな
      かったっけ?

  • by Anonymous Coward on 2021年03月25日 20時21分 (#4001123)

    LINE「Unicodeは犯罪」
    Twitter「PNGは犯罪」

    ここに返信
    • by Anonymous Coward

      いやLINEの件はLINEのバグ(脆弱性)で、全然話が違うから…

      • by Anonymous Coward

        所謂ユニコードウイルスは、iOSやAndroidのUnicode処理の不具合が原因なのでLINEは悪くない。

        • by Anonymous Coward

          MameShiba「ねぇしってる?OSの不具合は仕様っていうんだよ」

typodupeerror

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

読み込み中...