2015年02月20日

Superfish CA testはLenovoのマシンをどーやってチェックしているのか? このエントリーをはてなブックマークに追加

Lenovo製のPCにSuperfishというマルウェアがプリインストールされて大きな問題になっているっぽい。
Lenovoの公式フォーラムでもこんな感じで議論されている。
Lenovo Pre-instaling adware/spam - Superfish - pow... - Lenovo Community

で、自分のPCがSuperfishにやられちゃってるかどうか試すサイトが「Superfish CA test」という以下のサイト。
Superfish CA test : Check if you trust the Superfish CA
このサイトでどーやってSuperfishがインストールされているか判断しているかをちょいと調べてみた。
HTMLのソースをみてみると、161行目あたりにこんな感じに書かれている。
<img src="https://badfish.filippo.io/yes.png" onerror="this.onload=''; this.alt='Good, you seem not to trust the Superfish CA.'; this.style.width = '500px'; this.src='no2.png'; ga('send', 'event', 'Result', 'Negative', {'nonInteraction': 1});" style="width: 300px" onload="this.alt='Yes, your connections can be tampered with!'; ga('send', 'event', 'Result', 'Positive', {'nonInteraction': 1});">
プログラムがあまりわかってない私だが、どうやら、
https://badfish.filippo.io/yes.png
を読みだして、エラーが起きれば「no2.png」という画像が表示される。で、すんなりyes.pngが読まれればこんなメッセージが表示される。
yes, your connections can be tampered with
はい、あなたのコネクションは改ざんすることができちゃいます。

lenovo_yes.png
勘のいい方はおわかりだろうと思いますがbadfish.filippo.ioのサーバ証明書は例のSuperfish, Incのルート証明書を使って作られている。
つまり通常のPCにはSuperfish, Incのルート証明書が入ってないのでエラーになり、no2.pngが表示されるが、Superfish, Incのルート証明書が入ってる場合には
https://badfish.filippo.io/yes.png
を読み込めちゃいますので上記の画像が表示されるということのようだ。
そうでない人はエラーになるので「no2.png」が読み込まれこんな感じになるよーだ。
superfish_no2.png
サーバ証明書をみてみるとこんな感じだな。
superfish_ca1.png
superfish_ca2.png

ヤバイCAで作ったサイト上にある画像が読めればアウトでエラーならセーフというロジックはなかなかよく出来た作りのようである。(このあたりあまりよくわかんないけど)

関連リンク:
posted by りょーち | Comment(0) | TrackBack(0) | セキュリティ
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: