少なくともTwitterでは、一枚の写真は千語以上の価値があることが分かっています。セキュリティ研究者のデイビッド・ブキャナン氏によると、その数は少なくとも88万4000語に上り、これはウィリアム・シェイクスピア全集の語数とほぼ同じです。
.jpg
ブキャナン氏は、Twitter の画像アップロードがポリグロットファイル、つまり、アーカイブ.rar
、アーカイブなど、複数の形式で同時に有効になることを発見しました.zip
。彼は自身が書いた Python コードを使って、ウィリアム・シェイクスピアのサムネイル画像に「Unzip Me」という文字を重ね、Twitter に投稿しました。
画像.jpg
も有効な.zip
ファイルなので、ダウンロードすると解凍して内容を抽出することができ、.rar
シェイクスピアの戯曲のテキストのマルチパート アーカイブになります。
macOS のコマンドラインから、ファイルをbrew install unrar
処理するために unrar がインストールされている ( )と仮定すると.rar
、次の一連のコマンドが機能するはずです。
$ curl 'https://pbs.twimg.com/media/DqteCf6WsAAhqwV.jpg' > bard.zip $ bard.zip を解凍する $ unrar e bard.part001.rar
Twitterはアップロードされた画像に対して何らかの処理を行っており、データが乱れる可能性があります。しかし、Buchanan氏は、マルチフォーマットのファイルがこの処理を回避できたことを発見しました。画像自体(やや容量の大きいメタデータを除く)は軽量であるため、圧縮やアップロード後の処理は発生しない可能性があります。
「この.jpeg
フォーマットは複数のセグメントで構成されています」とブキャナン氏はTwitterのダイレクトメッセージで説明した。「あるセグメントは『ICCプロファイル』を定義するために予約されており、これは通常、色補正などに使用されます。Twitterはほとんどのメタデータ(例えばEXIFデータ)を削除しますが、ICCプロファイルは削除しません。実際、ICCプロファイルは最大16MBのサイズで、完全に任意のデータを含むことができますが、JPEG/ICCフォーマットの性質上、64KBのチャンクに分割する必要があるというわずかな制限があります。」
このスペースにファイルを追加できるのは.zip
、フォーマットが驚くほど柔軟だからだとブキャナン氏は言う。「『セントラルディレクトリ』はファイルの末尾にあり、ファイル全体内の他の場所にある個々の圧縮ファイルを『指し示』します.zip
」と彼は言う。
そのため、.zip
ファイルの先頭、中間、さらには末尾にジャンクデータが含まれていても、ファイルは有効なままとなる可能性があります。「これらの.rar
ファイルは、前述の64KBのチャンクサイズを回避し、簡単に再結合できるようになっています」と彼は述べています。
おそらくもっと大きな問題
ブキャナン氏によると、この手法は画像ホスティングサービスImgurでは有効だが、他のサービスではテストしていないという。Shopifyなどの一部のウェブサービスでは、色の一貫性とストレージ容量の節約のため、画像からICCカラープロファイルを削除している。国際色彩協会(ICC)は、ICCプロファイルには実行コードが含まれていないものの、不適切な形式のプロファイルによって潜在的なセキュリティ問題が発生する可能性があると指摘している。
The RegisterはTwitterに対し、この種の多言語ファイルは問題を引き起こすか、あるいはサイトの利用規約に違反するかを問い合わせたが、回答は得られていない。
1000匹のサルにタイプライターを与えれば、シェイクスピアを書くでしょう。ロボットアームを与えたら、待ってください、本当にそんなことが起こったのでしょうか?
続きを読む
「当初、HackerOne経由でTwitterのバグ報奨金プログラムに報告したのですが、彼らはあまり関心を示してくれませんでした」とブキャナン氏は述べた。「例えば、Twitterのホスティング費用に悪影響を与えるほど広範囲に及ぶとは思いませんが、モデレーションにとって少々厄介な事態になることは想像できます。」
この手法はマルウェアの拡散に利用される可能性があるという意見もあるが、実際に攻撃ベクトルとして利用されるかどうかについては懐疑的だと彼は述べた。しかしながら、ポリグロット.jpg
画像を用いてマルウェアを拡散させた前例は存在する(例:Stegosploit)。
ブキャナン氏は、ICC プロファイルには潜在的なプライバシー問題があり、デバイスの指紋認証に使用できると指摘した。
ブキャナン氏は、Twitterでホストされている画像を配布手段として、ソースコードを公開しています。ソースコードにアクセスするには、画像をダウンロードする必要があります。画像には「source.pdf.zip.jpg」という文字でその構造が示されています。そのため、画像をダウンロードして(コマンドラインから)解凍すると、ソースコード.pdf
と.py
ファイルが作成されます。®