カスペルスキーのセキュリティソフトを導入するとWeb閲覧中勝手にカスペルスキーと通信するJSコードが実行される 57
ストーリー by hylom
止められないのはちょっと 部門より
止められないのはちょっと 部門より
カスペルスキーのセキュリティソフト「カスペルスキー2016」(Windows版)を導入すると、閲覧するWebサイトのHTMLコードが勝手に変更され、カスペルスキーのサーバーと通信するようなJavaScriptが読み込まれるという(バイナリ覚書)。
カスペルスキー2016をインストールすると同時にInternet ExplorerおよびFirefox、Chrome向けのアドオンがインストールされるが、これらを無効化してもJavaScriptコードの読み込みは止められないとのこと。null-x.ccによると、この問題はカスペルスキー2015のときから存在していたようだ。また、プラグインを完全に削除することができないという話もあるという。
元ネタ読みましたけど (スコア:0)
どこにも「カスペルスキーのサーバーと通信」なんて書いてないでしょ
Re: (スコア:0)
元記事には太字で下記のようにありますよ。
> microsoftのWEBサイトなのに「https://gc.kis.scr.kaspersky-labs.com/1B74BD89-2A22-4B93-B451-1C9E1052A0EC/main.js」というjavascript コードが挿入されているのがわかります。
Re: (スコア:0)
kaspersky-labs.comからjsを読み込んでるんだから、ブラウザ情報やら閲覧履歴まで全部持って行かれてるよ。
Re: (スコア:0)
IEは ie.kis.scr.kaspersky-labs.com
FireFoxは ff.kis.scr.kaspersky-labs.com
Chromeはgc.kis.scr.kaspersky-labs.com
からスクリプトを読み込んで(つまり「通信」して)実行する。
この"kaspersky-labs.com"ってのは「カスペルスキーのサーバー」でいいんじゃないですかね。
Re:私も元ネタ読みましたけど (スコア:1)
処理結果をサーバに戻したいのなら「カスペルスキーのサーバ」で良いけれども
ウイルス対策の処理中なら先読みやDNSの有効性確認とかでカスペルスキーのサーバでない場合もあるのでは?
ローカルに立っているサーバーを「○○○のサーバー」と表現するか否か (スコア:1)
これですね。
カスペルスキーのアプリがローカルホストに立てているHTTPサーバーと通信している、と。
JSが外部サーバーと通信しているわけではないようですね。(このアプリがさらに外部サーバーと通信しているかどうかは別問題)
私ならローカルホスト内での通信を、「サーバーと通信している」とは表現しないかな…。
Re: (スコア:0)
> カスペルスキーのアプリがローカルホストに立てているHTTPサーバーと通信している、と。
ローカルホストと通信しているだけなら、その記事で書かれている対処法の
「hostsを書き換えて、それらのドメインのアドレスを127.0.0.1にする」
というので事が済むはずないと思うんだけど。
nslookupで
ie.kis.scr.kaspersky-labs.com
gc.kis.scr.kaspersky-labs.com
ff.kis.scr.kaspersky-labs.com
me.kis.scr.kaspersky-labs.com
のそれぞれのアドレスを引くと、ちゃんと外部のIPアドレスが出てくるよ。
【検証結果】 JSの取得元と通信先はローカルホスト上のHTTPサーバで正しい (スコア:5, 参考になる)
Kaspersky Internet Security 2016 のユーザーなので検証してみました。
無駄に長文になるので結論を先に書くと、スクリプトの取得元・通信先ともにローカルホストに Kaspersky が立てているHTTP(とHTTPS)サーバで正しいようです。
~ 以下は調査方法・根拠 ~
今、Google Chrome でスラドを見ていますが、HTMLのソースには下記の外部 Java Script が注入されています。
について、試してみましたが、
でした。
IE と Edge 用のスクリプトのIPアドレス(185.85.13.154)は、Kaspersky Lab ZAO(ロシア連邦モスクワ)に割り当てられているものです。
しかし、Kaspersky をインストールしていない環境からは http://ie.kis.scr.kaspersky-labs.com/1B74BD89-2A22-4B93-B451-1C9E1052A... [kaspersky-labs.com] にアクセスできません(なお、185.85.13.154 では HTTPD かプロキシが一応動いてるっぽいですが、極めてレスポンスが悪く、応答が無い場合が多く、応答がある場合でも長時間経過後 504 Gateway Timeout のレスポンスが返されます)。
上記のURLには、カスペルスキーがインストールされている環境からは、どんなブラウザでもアクセスでき、JavaScript コードの取得が可能です。しかし、LAN内のカスペルスキーがインストールされていない環境や、スマホ(LTE接続)からアクセスしてみましたが、JavaScriptコードは取得できませんでした。
また、Chrome 用と Firefox 用(127.245.107.154)は、ローカル・ループバック・アドレスなので、JavaScript の取得元がローカルであることは明らかです。
つまり、Kaspersky Internet Security 2016 に含まれるソフトウェア(ファイアウォールのようなもの)が 185.85.13.154 や 127.245.107.154 宛ての通信を受信して、それに応答しているということです。
また、JavaScript のプログラムが GET や POST で通信している先についても、http(s)://ie.kis.scr.kaspersky-labs.com/長い英数字/from や http(s)://ie.kis.scr.kaspersky-labs.com/【長い英数字】/【長い英数字】/to/ob.disconnect/?get&nocache=【ランダムっぽい英数字】 などで、ホスト名は JavaScript ソースの取得元と同一でした。
IE と Edge 用のIPアドレスがグローバルIPアドレスな理由 (スコア:2)
IE と Edge 用の JavaScript コードの取得元とJavaScriptによる通信先のIPアドレスについて、実際の通信先がローカルなのに、グローバルIPアドレスを使用しているというのは、非常にトリッキーに感じます。
この理由については、IE や Edge は、インターネットゾーンと、ローカルホストあるいはローカルイントラネットゾーンで、セキュリティ権限が異なる扱いをするため、それを回避して「インターネットゾーン」として扱わせるためかと思います。Firefox と Chrome についてはそういったことがないので、インターネット上のサーバに情報を送信しているという誤解を招かないため、ローカル・ループバック・アドレスにしたのではないでしょうか。
127.0.0.1 ではなく 127.245.107.154 にしたのも、余計な通信の中継を防ぐための配慮でしょう。
今のブラウザは、プラグイン(拡張)の権限が制限されたり、頻繁なアップデートで仕様変更されたりしまうため、カスペルスキーのような HTTP / HTTPS 通信を中継してチェックする動作(別の言い方をすると傍受・改竄)は、セキュリティソフトの動作として合理的・最善であると思います。
ブラウザのレンダリング前に、悪意のあるコードを検出あるいは排除するためには、ブラウザの動作に割り込むか(拡張など)、HTTP / HTTPS の通信を検閲するしかありません。ブラウザのアップデート・仕様変更が頻繁に行われる現状では、後者の方が不具合が少なく安定して動作するでしょう。
Re: (スコア:0)
ローカルホストに Kaspersky が立てているHTTP(とHTTPS)サーバ(あるいは別プロトコル)は外部のサーバと接続しているんでしょうかね?
Re:ローカルに立っているサーバーを「○○○のサーバー」と表現するか否か (スコア:1)
確かにそうですね。
すると原文の「正確にはPC内のカスペルスキーアプリケーション」はどう解釈すべきなのか…
Re: (スコア:0)
Kasperskyには、Proxomitronのような内部にローカルプロキシ動作をするアプリが
組み込まれます。
そのローカルプロキシがscriptタグを埋め込んだりするわけです。
件のhttpリクエストもこのローカルプロキシにブラウザ内の振る舞いを報告する
だけでローカルプロキシはKasperskyのサイトにはアクセスしていないと思います。
「hostsを書き換えて、それらのドメインのアドレスを127.0.0.1にする」
でことが済んでいるのは、scriptタグでjsファイル取得に失敗するからだとも
「バイナリ覚書」説明されています。
Re: (スコア:0)
> scriptタグでjsファイル取得に失敗するからだ
外部サーバーからスクリプトを読み込んでくるのに失敗するからじゃないの?
プロクシは自前で名前解決をするので、そのプロクシが"ie.kis.scr.kaspersky-labs.com"等の
アドレスをそこで読み替えているなら、Winodwsのhostsを書き換えても動作は変わらないはずだが。
【検証結果】 hosts で 127.0.0.1 にするとエラーになる理由 (スコア:3)
については、カスペルスキーがローカルに HTTP や HTTPS のサーバを立てているのならば、hosts で通信先を 127.0.0.1 にしてもエラーになるはずが無いという主張かと思います。
それについても検証してみましたが、カスペルスキーがインストールされている環境では、
http://gc.kis.scr.kaspersky-labs.com/1B74BD89-2A22-4B93-B451-1C9E1052A... [kaspersky-labs.com] や http://127.245.107.154/1B74BD89-2A22-4B93-B451-1C9E1052A0EC/main.js [127.245.107.154] には接続可能でしたが、
http://127.0.0.1/1B74BD89-2A22-4B93-B451-1C9E1052A0EC/main.js [127.0.0.1] には接続できませんでした。
127.0.0.1~127.255.255.254 は、全てローカル・ループバック・アドレスですが、127.0.0.1 と 127.245.107.154 で違う結果になりました。
つまり、カスペルスキーは HTTP と HTTPS の通信をプロキシサーバのように中継しているわけですが、接続先(GET や POST をブラウザが投げる先)のIPアドレスが 185.85.13.154 や 127.245.107.154 の場合のみ、JavaScript のソースコードの配信や JavaScript プログラムによる通信への応答を行っているということになります。
なお、HTTPS の通信についてもカスペルスキーは、一度カスペルスキーが復号して、再度カスペルスキーの秘密鍵で暗号化する方法(ブラウザにカスペルスキーのルート証明書をインストール)で間に入り込んでいます。HTTPS の通信への割り込みについては、設定で無効化可能です。その場合、HTTPS のサイトにカスペルスキーのJavaScriptが混入することはありません。
Re: (スコア:0)
これはだめでしょ…
HTTPSのソースコードの書き換えなんてできるのかよ (スコア:0)
これって脆弱性じゃないの?
Re: (スコア:0)
httpsがどういうものかちゃんと理解できてないとこういう疑問が出てきちゃうんだろうなぁ
Re: (スコア:0)
HTTPSって通信内容の盗聴や改竄を防ぐものじゃないの?
PC内に入り込んで高位の権限を得ているプログラムによるものとは言え、ブラウザの外からHTMLを書き換えられちゃまずいんじゃないの?
Re:HTTPSのソースコードの書き換えなんてできるのかよ (スコア:1)
なんか国会答弁みたいになって来ましたな…笑
>> ブラウザの外からHTMLを書き換えられちゃまずいんじゃないの?
ヒント:ブラウザは一般権限で動いている。
ブラウザの外=通信中ではなく、ブラウザの内側(kasperskyプラグイン)から書き換えている。
>> ルート証明書のインストールって、一般のソフトがユーザーの知らない間にやれてしまっていいものなのか?
確かにルート証明書のインストールや任意のスクリプト挿入は手段としては、ブラウザで好きな事がやり放題になる技術。
結局セキュリティーソフトを信用するかどうかになってくる訳。
Re: (スコア:0)
HTTPS(Hypertext Transfer Protocol Secure)は、HTTPによる通信を安全に(セキュアに)行うためのプロトコルおよびURIスキームである。
https://ja.wikipedia.org/wiki/HTTPS [wikipedia.org]
「情報の保護における誤解」という項があなたの疑問を解決するかもしれません。
Re: (スコア:0)
HTTPSがどういうものかとかの話ではなく、
HTTPSを使って保護したかったはずの通信内容がブラウザで表示される前に勝手にすり替えられるような事態は、
ブラウザの方でどうにかして可能な限り阻止しなきゃならないんじゃないかってこと。
Re:HTTPSのソースコードの書き換えなんてできるのかよ (スコア:2)
ブラウザやOSは,セキュリティ対策ソフトによる通信監視やデータの改ざんをあえて許可しています
通信を監視しないとウイルスは検出できませんし,データの改ざんを許可しないとウイルスの除去ができないからです
Re: (スコア:0)
ローカルプロクシ使ってるんでしょ
あらかじめ証明書ストアに信用させるためのルート証明書をインストールすれば
ローカルプロクシが偽のサーバー証明書を送っても警告はでなくなる
Re: (スコア:0)
ルート証明書のインストールって、一般のソフトがユーザーの知らない間にやれてしまっていいものなのか?
Re: (スコア:0)
知らないわけないでしょ。
カスペルスキーのセットアップ時に全権委任してるわけだから。
Re: (スコア:0)
レノボPCで「SSLが崩壊した!」って騒いでいた人に似てる
Re: (スコア:0)
PCに入り込んで高位の権限を得た時点で、それどころじゃなく何でもできるで。
他のコメントにあるように、ルートサーバ証明書をインストールした上で、HTTPS通信に割り込んで、
通信内容を書き換えて、即興で作った証明書と差し替え、エラーが出なくなるようにも出来るし。
本当はエラーががんがん出てるのを、ブラウザのバイナリを書き換えて握りつぶすように改造することだって、原理的には出来る。
そもそもブラウザのバイナリ改造より簡単に、OS自体をそっくりなニセモノに入れ替えることすら出来るし、
そうなると、何一つ前提は成り立たなくなる。
rootなりAdministratorなりの権限を渡すというのがどういう意味かもうちょっとちゃんと理解しといた方が良い。
Re: (スコア:0)
なんでもできる奴に侵入されたら何をやっても無駄だとしても、限られた細工しか出来ないケースだけでも退けられるようにしとくべきだろ
Re: (スコア:0)
ああ、べきだ論?
「HTTPS通信」というように「セキュアな何か」をうたう以上は、
何がどうあれその部分のセキュリティは絶対に侵されないようなOS設計にしとけよ、というような。
その前提と、通信内容を監視してウィルスの有無をチェックするようなソフトは相容れないから、両立は無理だね。
ウィルス対策ツールとかのAdministrator権限を必要とするようなソフトウェアを一切入れない、という運用にすれば、
OSが元々持っていたセキュリティを守る仕組みを一切崩さないまま使う、というのは可能なので、そうやるしか。
Re: (スコア:0)
>> 他のコメントにあるように、ルートサーバ証明書をインストールした上で、HTTPS通信に割り込んで、通信内容を書き換えて、即興で作った証明書と差し替え、エラーが出なくなるようにも出来るし。
こう言うのって昔から(2011ぐらいのver.から?)カスペルスキーの「暗号化された接続のスキャン」の仕様なんだけど、
2013位のver.の頃は、ブラウザのうち唯一Firefoxが警告画面を出すような(よう分からん証明書が入ってまっせ)反応を見せた事があった。
IEやChromeは無反応、またはHTTPSでの誤動作を起こす(よう分からんけど繋がらへんで)ことがあった。
2016位
Re: (スコア:0)
ヒント:ブラウザは一般権限で動いているから。
つまりブラウザの挙動を変更できないようにしていないOS側の問題というか仕様。
通信プロトコルの問題ではない。
そもそもosやアプリに脆弱性が無ければ
セキュリティソフトなんて必要ないわけで
Re: (スコア:0)
なあ、アドブロッカーってどうやって動作してると思う?
Re: (スコア:0)
最近のアドブロッカーは、ブラウザが読み込んだHTMLを解釈するところに割り込んでなんかする感じだろ
カスの件はview-sourceの時点で改竄されてるし、ブラウザアドオンを削除しても止められないんだから全く別物
Re: (スコア:0)
【結果から言うと】
・カスペの「暗号化された接続のスキャン」を「しない」に設定すれば、件のスクリプト挿入も止まる。
→つまり、proxmitron的な手法によってhttp(s)のTCPストリームに割り込んでhttp(s)通信にカスペ謹製スクリプトを挿入していると思われる。
→httpsに割り込むにはルート証明書でhttps通信自体に割り込む事が必要。
→よってブラウザのプラグインの方は何らかの協調動作と動作レポート、動作有効無効スイッチ等の役割を果たしているのだろう。
【よって結論から言うと】
・嫌ならカスペ使うな
・「バイナリ覚書」氏のよ
Re: (スコア:0)
/.とは思えん質問だ
Google ChromeでF12キー押してみそ
Re: (スコア:0)
マルウェアがよくやってるMITB攻撃まがいの書き換えをやって、jsをインジェクションしてるって事でしょ
HTTPSは経路を保護するだけのもので、受信後の書き換えに対してはノータッチだよ
>「通常使用は問題ない」 いや、問題あるだろ。 (スコア:0)
0.5秒ごとに通信なんてされたら初期atomなんかの貧弱なマシンだとそのスクリプトの実行だけでCPU使い切るわ。
幾らローカルPC内に向けて通信だとはいえ負荷は色々なところにかけるわけでな。
完全にウィルスだわ、こりゃ。
Re: (スコア:0)
単位間違えてませんか。
500ミリ秒ですよ?。1/2秒。
1秒に2回、内部プロセス通信するだけでCPU使い切っちゃうほど初期atomって貧弱なんですか?
Re: (スコア:0)
>1秒に2回、内部プロセス通信するだけでCPU使い切っちゃうほど初期atomって貧弱なんですか?
十分その程度に貧弱です。初期atomはシングルコアの上、当然ハイパースレッドなんかもないですから。
命令セット自体はC2D互換ですが、シングルコア、低クロックのためpentium3にもベンチで負けるレベルです。
#あくまでも初期型。
Re: (スコア:0)
Pentium3 600Mhz相当とどこかで見たな。
動画再生テスト経験上はCeleron1.1Ghzの遥か下だった。
Re: (スコア:0)
今のatomではなく初期atomに限ればそうだと思います。
ですが、初期atomのネットブックとかOSがXPなので
使ってる人はもういないんじゃないのかな。
Re: (スコア:0)
win7 時代のwintabにも初期atomは搭載されてるので、今も使ってる人はそれなりにいると思う。
Re:>「通常使用は問題ない」 いや、問題あるだろ。 (スコア:1)
>win7 時代のwintabにも初期atomは搭載されてるので、今も使ってる人はそれなりにいると思う
カスペルスキーの顧客にはその環境の利用者が居ないからやってたんでしょうね。
Re: (スコア:0)
そもそもatomが出てきたのが2008年夏ですからね。
XPよりも2009年発売のwin7の方に当然ながら多く搭載されてます。
#vista、me?なかったことにしましょうw
Re: (スコア:0)
いまどきのページはiframeで色々読み込んでるから、全部改変されてたらかなりの数になるんじゃ
HTTPSだと取るに足らない通信でも暗号化の負荷がかかるし
Re: (スコア:0)
HTMLが勝手に改変されるのも困るな
今回のがブラウザ以外にも及ぶのかは知らないけど、Wgetのミラーリングでサイトをバックアップするときとか
Re: (スコア:0)
なんか、ウィンドウとかタブを閉じた後にも、IEのプロセスがローカルリソースを掴んだまま生き残ってしまい、
それが増えて行くとリソース不足でPCがまともに動かなくなっていく問題が以前から発生していて、
似たような症状を訴えるケースが見当たらず、根本的な解決策も見いだせずに困ってる。
(対症療法として、定期的にタスクマネージャからIEの掃除をしてる)
なにか、自分の環境に特有のレアな問題なんだろうと思ってたんだけど、もしかしてこれかなぁ。
Re: (スコア:0)
【提案】
IEでなくFirefoxやChromeでも試してみる
【疑念懸念】
・タスクマネージャー覗いてると、少ーーしずつブラウザプロセスのワーキングセットが増えて行く
・そもそも、Twitterのブラウザウィンドウ数枚以上開きっぱなしが主因(←そもそもTwitterはサイト的に重い)
・この謹製スクリプトの0.5秒通信も、悪化に少々貢献してるかも
【余談】
そんでカスペのネットワークモニタ覗いたら律儀に127.245.107.154の通信を大量に羅列しててワロタ
これはこれで別の問題がありそうな。。。(本チャンの通信が埋もれて読み取りにくくなるってな)
普段からブラウザウィンドウ数10枚も開いたままにしてるユーザー輩は、(開いたままのウィンドウ数に比例して)それなりにPCリソースと電気代食いそうだわな。
Re: (スコア:0)
そうなると「情報処理の高度化等に対処するための刑法等の一部を改正する法律」でもさんざ議論されたように「ウイルス」とは何ぞや?論に至る訳で。
http://www.moj.go.jp/content/000076666.pdf [moj.go.jp] から引用すると
『あるプログラムが,使用者の「意図に沿うべき動作をさせず,又は
..その意図に反する動作をさせる」ものであるか否かが問題となる場合..におけるその「意図」は,個別具体的な使用者の実際の認識を基準として判断するのではなく,当該プログラムの機能の内容や,機能に関する説明内容,想定される利用方法等を総合的に考慮して,その
バナー広告ブロック (スコア:0)
個人的には広告表示は受け入れたいと思ってますが、マルバタイジングが怖いのでバナー広告をブロックしてます。
その設定をするとHTMLが改変されて、JavaScriptを読み込むようにされますね。
どういう動きをしているのかわかりませんが。