セキュリティ

Facebookのリンクは「クリックする瞬間」だけ別のリンクにすり替えられる


セキュリティに気をつけている人の中には、SNSなどに投稿されたリンクをクリックする前にカーソルを合わせて、リンク先のURLを確認する習慣が付いている人も多いはず。Facebookには、このような対策をしていてもそれと気づかないような手法でリンク先が差し替えられていると、ウェブ開発者が指摘しています。

チェコでセキュリティ対策の講師を務めているウェブ開発者のMichal Špaček氏はTwitterに、「リンクをクリックしたりコピーしたりすると、最初に『l.​facebook​.​com』が開いてから、その後に元のサイトにリダイレクトされることをご存じでしょうか。しかし、ソースを確認した時に表示されるHTMLタグも、リンクにマウスカーソルを合わせた時に見えるURLも、元のサイトを示しています」と投稿しました。Špaček氏が投稿したスクリーンショットを見ると、ソースのリンクタグやブラウザ上で表示されているリンク先のURLが、確かにŠpaček氏が試しにFacebookに投稿した「https://example.com」になっています。

You may have noticed that when you click/copy a link on Facebook, a page on l.​facebook​.​com opens first and only then you're redirected to the original site. Even though the A HREF in the HTML points to the site. Even the tiny status line at the bottom shows the correct link. pic.twitter.com/xqK8Vnxc64

— Michal Špaček (@spazef0rze)


Špaček氏が投稿したムービーを見ると、URLが一瞬だけFacebookのものになっている様子がよく分かります。

When you click the FB link, but before the browser loads the page, they change the HREF to l.​facebook.​com so for the browser, it seems like you clicked the l.​fb link. Works with right-click as well, maybe because "copy link". And when you move the mouse back again… Sneaky. pic.twitter.com/6Yfl3de1V8

— Michal Špaček (@spazef0rze)


Špaček氏によると、これはマウスがクリックされたときに作動するonmousedownというJavaScriptコードによるものとのこと。このコードは、ページの読み込みが始まる前に実行され、リンクタグをFacebookのURLに書き換えます。しかし、マウスカーソルがリンクの上に置かれるとonmouseoverという別のコードがタグを元に戻すので、ユーザーがリンク先を確認しようとしても、ブラウザには元のURLしか表示されないというわけです。

When you press a mouse button on that link, the browser executes the onmousedown JavaScript code *before* it even starts loading the page. The code changes the HREF to something else.

And when you move the mouse back over the link, the onmouseover code changes the HREF back.

— Michal Špaček (@spazef0rze)


リンクのクリックを追跡する方法には、他にもping属性を利用するといったものがあるとのこと。

There are other ways to track link clicks: for example the ping attribute (that's what Google uses for/in Chrome) https://t.co/rErEBhkBav or the Beacon API https://t.co/yMOMDGLQ8S pic.twitter.com/g4v6chzRZz

— Michal Špaček (@spazef0rze)


「これはフィッシングにも使われますか?」という質問に対し、Špaček氏は「それはないと思いますが、確かに悪用することはできますね」と答えています。

I believe there's no need ???? But yeah, definitely could be used for some nefarious purposes as well.

— Michal Špaček (@spazef0rze)


Špaček氏のツイートには、さまざまな反応が寄せられています。例えば、あるTwitterユーザーは「こういうことがあるので、ルーターでFacebookをブロックしてしまうことをお勧めします」とコメント。

So it may be a good idea to block facebook on the router. ????

— Corneil du Plessis. he/him☕???????????????? (@corneil)


また別のTwitterユーザーは、「誤解を恐れずに言えば、この技術は10年以上も前からGoogleなどによって使われています。これが正しいものだとは思いませんが、もう身の回りのあちこちにあります」と指摘していました。

Hate to burst your bubble, but this technique has been in use for over a decade, easy. I know for a fact that Google was using it least as far back as 2013, probably earlier. It's basic click-tracking 101.

Not saying it's *right*. But it is ubiquitous.

— rossipedia (@rossipedia)


Facebookのみならず、多くのIT企業が当然のように使っているこの手法を改めて公開した理由について、Špaček氏は「私がこの問題について書いたのは、『怪しいリンクをクリックしないように』と言われた時に、リンク先を見ただけではそのURLが安全かどうかを確認することができないということを思い出してもらうためです」と話しています

この記事のタイトルとURLをコピーする

・関連記事
Facebookはどのようにして広告ブロッカーを回避しているのか? - GIGAZINE

広告を表示させたいFacebookと広告ブロックソフトの果てしなき戦い - GIGAZINE

広告を消すアドブロック機能をバイパスして広告を表示させる仕様変更をFacebookが実施へ - GIGAZINE

FacebookやInstagramの「リンクプレビュー機能」がマルウェアの危険にさらしアプリをクラッシュさせバッテリーを浪費する - GIGAZINE

Facebookが特定のSNSのURLを投稿できないよう規制していることが判明、理由は「安全ではないリンクが存在」とのNG判定 - GIGAZINE

in セキュリティ, Posted by log1l_ks

You can read the machine translated English article here.