事の発端
#facebook is embedding tracking data inside photos you download.
— Edin Jusupovic (@oasace) July 11, 2019
I noticed a structural abnormality when looking at a hex dump of an image file from an unknown origin only to discover it contained what I now understand is an IPTC special instruction. Shocking level of tracking.. pic.twitter.com/WC1u7Zh5gN
どうやらfacebookの画像に追跡データが自動的に貼り付けられている、という内容
検証してみた
※素人が検証してみたレベルですので…各自検証をしてくださると嬉しいです。
検証環境
macOS 10.14.15
exifはexiftoolを用いて確認・編集
手法
- JPEG画像を用意する
- そのJPEG画像のexifデータのうち、"SpecialInstructions"の値がないことを確認する
- そのJPEG画像をfacebookにアップロードする
- facebookにアップロードした画像をダウンロードする
- exifデータのうち、"SpecialInstructions"の値を確認する
検証1
手法
毎度おなじみ、いらすとや様の画像 (png画像)をmacのプレビュー.appでjpg画像に変換して検証します。
この画像をfacebookにアップロードしたのち、ダウンロードしました。
結果
その画像のexifデータを参照すると、確かに"SpecialInstructions"の値にFBMD
から始まる98文字の値がありました。(念の為、実際に表示された追跡データと思われる値は非公開とさせていただきます。)
さらに、その画像を再びfacebookにアップロードし、それをダウンロードすると、"SpecialInstructions"内に同一の値が存在しました。
検証2:追跡データをいじってみた
手法
先ほど見つけた追跡データのうち、下6桁(今回の場合、2a0000
でした)を123456
に変更して再びfacebookにアップロードし、それをダウンロードしました。
結果
その画像のexifデータを参照すると、"SpecialInstructions"の値にFBMD
から始まる98文字の値があり、下6桁は2a0000
となっていました。
検証3:追跡データをさらにいじってみた
手法
検証2で変更したデータを123456
のみの6桁に変更し、再びfacebookにアップロードしダウンロードしてみました。
結果
その画像のexifデータを参照すると、"SpecialInstructions"の値にFBMD
から始まる98文字の値があり、下6桁は2a0000
となっていました。
検証4:追跡タグがついていない画像を他人のアカウントからアップロードしてみた
手法
元の画像を他人に渡し、手順1と同様のことをしたのちに、この手法で得た追跡コードと私が手順1で得た追跡コードを比較してみました。
結果
異なる追跡タグが付与されました。
検証5:全く違うJPEG画像で試してみた
手法
全く別物のJPEG画像でfacebookにアップロードし、ダウンロードしてみました。
結果
その画像のexifデータを参照すると、"SpecialInstructions"の値にFBMD
から始まる98文字の値があり、異なる値となっていました。
結論(仮)
"SpecialInstructions"の値は、facebookが「画像をアップロードしたユーザ情報」+「同一の見た目の画像」(メタデータは異なっていても構わない)に対して1つのタグを発行しているのでは?
(随時更新していきます)