重複の可能性があります。 ウェブブラウザを介してコンピュータがマルウェアに感染する可能性はありますか?
Webサイトを見ただけでウイルスに感染してしまうのは常識です。しかし、どうしてそんなことが可能なのでしょうか?
これらのウイルスはWindows、Mac、Linuxユーザーを攻撃するのか、それともMac/Linuxユーザーは免疫があるのか?
Windowsで.exeをダウンロードして実行すると明らかにウイルスに感染することは理解していますが、ウェブサイトにアクセスしただけでウイルスに感染するのはどうしたらいいのでしょうか?
ウイルスはJavaScriptでプログラムされているのでしょうか?(ローカルで動作するプログラミング言語なので意味があると思います) もしそうだとしたら、一般的に使われているJavaScriptの関数は何ですか?
47 None 2011-06-27
Webサイトにアクセスするだけでウイルスに感染するのは常識です。誰かこれがどのように可能であるかを説明することができますか?
パレンでの例。ブラウザ(IE)やjavascriptインタプリタ、プラグイン(flashやjavaのようなもの)にバグがあります。このバグはコードの実行につながります – この部分は非常に複雑になりますが、多くの場合、使用後フリーのバグや ヒープの操作が含まれます
それから、いくつかのシェルコードを実行しています。シェルコードはブラウザが持っているどんな保護をも逃れなければなりません – V8/Chrome のバグのためには、クロームのサンドボックスを逃れて DEP と ASLR を倒さなければなりません。V8/Chrome のバグのためには、クロームのサンドボックスから脱出して、DEP と ASLR を破らなければなりません。Javaの場合は…何もしなくてもいい。(そのために java のバグが続出しています)
だから今、私はあなたのマシン上で実行されている任意のコードを持っているので、あなたのように(あなたは管理者として実行されていませんよね?)、私はインターネットからファイルをダウンロードして実行し、あなたのマシン上にいくつかのマルウェアを落として行くことができます
ウイルスはJavaScriptでプログラムされているのでしょうか?(ローカルで動作するプログラミング言語ですから、それは理にかなっています。) もしそうだとしたら、一般的に使われているJavaScriptの関数は何ですか?
具体的には – いいえ。Javascriptはブラウザのバグを見つけるための攻撃ベクトルです。攻撃ベクトルとしてFlash、Java、Silverlightを使うこともできます。javascriptの場合はjavascriptを書いてブラウザのバグを誘発させ、最終的にはインターネットからウイルスを引っ張り出してくる
24 Tom Ritter 2011-06-27
不幸にも変態的にも、このようなことが起こる可能性はいくらでもあります
ブラウザのような「読書デバイス」が、自分のシステムを積極的に操作することができる(そして害を及ぼすことができる)ことに愕然とするのは全くもって正しいことです。本を読んでも銀行口座が減ることはありませんし、新聞を開いても子供が傷つくことはありません
この問題は、悪意を持って作成されたと思われるインターネットからの外部データが、何らかの形でシステムに実行される可能性がある場合に発生します
コマンドラインに座って wget http://evil.com/hitme.php
と入力するだけで、wget HTTP クライアントは単にリクエストのバイナリダンプをディスクに書き込むだけで、何も悪いことは起こりません (ディスクがいっぱいになる以外は)。しかし、もしあなたがブラウザにアドレスを入力した場合、あなたのブラウザはハードディスクをフォーマットしたり、クレジットカードの詳細を送信したりなど、何をしても構いません。そのようなことをしないとブラウザを信頼するかどうかはあなた次第です。ほとんどのブラウザは確かにこれらの悪いことをしないようにしていますが、私たち羊ユーザーは、ブラウザがこれまで以上に「巧妙なトリック」をしたり、インターネットからの指示に基づいて自動的に動作するようにすることを要求してきました。私たちの要求は、JavaScriptやFlashのようなクライアントサイドのコード実行技術を生み出すことにつながりました
それらの技術を思いついた人たちがすぐにリンチされなかったのは、a) それが私たちの画面でバニーを踊らせたからであり、b) 彼らは、任意の悪意のあるコードがローカルシステムを操作するのを防ぐために、十分な安全チェックを設計に入れたと主張しています (例えば、ローカルディスクの読み書きを許可しない、クリップボードの読み書きを許可しない、他のタブのフォームフィールドの読み書きを許可しないなど)
残念ながら、「最初にすべてを許可してから、思いつくいくつかの悪い点をパッチでカバーする」という設計アプローチは根本的に欠陥があり、今では、クライアント側の便利な機能がシステムを危険にさらすために利用される新たな方法が尽きることのない流れに直面しています
適度に安全なのは、ブラウザのJavaScriptとプラグインを無効にすることです。1995年のように安全
14 Kerrek SB 2011-06-27
これらの回答の中で本当に避けられているポイントは、私が本当に家に叩き込みたいのは、次の点です:あなたがウェブページからウイルスを取得することができる理由は、あなたが実行しているソフトウェアの一部にバグがあるからです
ソフトウェアの作成プロセスのすべてのステップにおいて、Flashの作成者、ブラウザの作成者、オペレーティングシステムの作成者は、インターネットからのランダムな悪意のあるコードが自分自身を実行する方法を見つけることができないようにしようとしてきました。残念ながら、これを実行するのは難しいです。 本当に難しいです
ですから、他の人間と同じように、このソフトウェアの開発者は間違いを犯すことになるでしょう: HTMLパーサは、HTMLを</p
で終わらせたときに、スタックの1バイトを誤って上書きしてしまいます。の代わりにを誤って使用してしまったのです。javascript の JIT コンパイラが誤って配列インデックスを NULL ポインタにデリファレンスしようとしてしまう。これらすべての脆弱性に加えて、何百万もの脆弱性が、セキュリティの知識不足や見落とし、あるいは単純なミスのために、ソフトウェアで常に発生しています。ソフトウェアは単純に複雑すぎて、これらすべてをキャッチすることはできません
そのため、OSには脆弱性が見つかった場合でも被害を防ぐ仕組みが組み込まれています。おそらく OS には DEP と ASLR があるでしょう。プログラムは、さまざまな保護機能をコンパイラによって追加することができます。ブラウザはより低い保護下で動作します。プログラムは 自動解析 や テスト を経て実行され、これらの脆弱性の多くを捕捉することができます
しかし、完全に安全なソフトウェアを設計することは不可能であり、完全に安全な金庫を設計することが不可能であるように、完全に安全なソフトウェアを設計することは不可能なのです。しかし、完全に安全な金庫を設計することが不可能なのと同じように、完全に安全なソフトウェアを設計することは不可能なのです。そして、この金庫の問題は、あるハッカーが自分のコピーをクラックしてしまえば、自分の部屋から出ることなく、世界中の他のコピーを簡単に開けることができるということです
11 BlueRaja – Danny Pflughoeft 2011-06-27
あなたの具体的な質問
私は明らかに私はWindowsで.exeをダウンロードして実行することによってウイルスを得ることができることを理解していますが、どのように私はウェブサイトにアクセスするだけでウイルスを得ることができますか?
あなたのブラウザは常にコードを実行しています(コードでできています)。それがウェブページをダウンロードするとき、そのコードは任意のデータ(ピクセル、チャラサーなど)をダウンロードして表示しています
コードもデータ(プロセッサレベルで)です
コードはデータなので、ブラウザが実行しようとすると(ファイルの拡張子や形式を問わず)実際に実行される可能性があります(正しく細工されていれば)
通常、あなたのブラウザはダウンロードしたランダムなデータを実行しようとするほど愚かではありません。しかし、このようなことが起こる可能性があります
これを行う1つの方法は、データが読み込まれたときに「漏れて」ブラウザの実行プログラムを構成するデータを上書きするような方法でデータを形成することです。これにはブラウザにバグが必要です(この場合、最も一般的には、バッファオーバーランを許すことになります)
ブラウザはウェブページの上でプログラムを実行します。あなたがおっしゃるように、Javascriptもそのようなコードの一つです。しかし、数十種類のコードがあります。ActiveX、Flash、アドオン、グリースモンキースクリプトなどはすべて、ウェブページを閲覧している間に実行しているコードです。これらのコードにはセキュリティ違反を引き起こすバグが含まれている可能性があります
これらのウイルスは、Windows、Mac、Linuxの両方のユーザを攻撃するのか、それともMac/Linuxユーザは免疫があるのか?
私たちが使用しているどのプラットフォームも、データをコードとして扱うプロセッサを使用しているため、バグを完全に回避することはできません。これは単に既存のコンピュータアーキテクチャがどのように機能するかを示しています
この神話の理由は、MacやLinuxの普及率が(デスクトップレベルでの)Windowsマシンに比べてはるかに低いからです。そのため、これらのマシン上のデスクトップソフトウェアは、ウイルスメーカーのターゲットとしては一般的ではありません
ウイルスは魔法のように発生したり、(生物学的なウイルスのように)偶然の進化によって発生するものではありません。それは、個人や開発者のチームによって書かれたソフトウェアです。そして、彼らは通常のソフトウェアベンダーが行うのと同じように、最大の市場シェアを狙っています
1つのウイルスが複数のプラットフォームを狙うことができるかどうかについては、すべてのブラウザが異なるコードを実行しているため、異なるバグを持つことになります(異なるプラットフォーム上の同じブラウザであっても)。しかし、プラットフォームをまたいで共有されているコードライブラリがあります。そのようなライブラリにバグが含まれていれば、複数のプラットフォームにエクスプロイトが存在する可能性があります
しかし、攻撃の種類によっては、非Intel Mac用に書かれたウイルスがIntel Macでは動作しないこともありますし、逆に、プロセッサが異なるために動作しないこともあります。プロセッサが異なると、コードを表すデータの形式も異なります
しかし、仮想マシンやスクリプト言語の話をしているときは、攻撃はプラットフォームに依存しないかもしれません。これが次の質問につながります
ウイルスはJavaScriptでプログラムされている?
いくつかのウイルスはそうです。上で述べた情報(バッファオーバーランの悪用について)は、通常はJavascriptの外部からの攻撃として使用されますが、Javascriptインタプリタの悪用を攻撃するために作られたウイルスにも同様に適用できます
Javascriptはまた、バッファオーバーランを超える操作レベルで、独自のエクスプロイトのセットを持つことになります。どんなソフトウェアでも攻撃する方法はたくさんあります。ソフトウェアが大きければ大きいほど(コードの行数が多いほど)、より多くの種類のユーザ入力(この場合はコードの種類)を受け取る可能性が高く、より多くのバグを含む可能性があります
また、稼働中のソフトウェア(サーバを動かすソフトウェアなど)が露出していればいるほど、攻撃を受けやすくなります
一般的には、攻撃面と呼ばれています
エクスプロイト全般
マイクロソフトには、一般的なエクスプロイトの種類を表すニーモニックがあり、それぞれに興味深い特性があり、攻撃可能なソフトウェアのレベルも異なります – STRIDE の略です
Spoofing (of user identity)
Tampering
Repudiation
Information disclosure (privacy breach or Data leak)
Denial of Service (D.o.S.)
Elevation of privilege
これらの中には、Javascriptを利用した攻撃に利用される可能性が高いものもあれば、サーバー上のものもあれば、データファイル(画像など)上のものもあります
しかし、セキュリティは大きく進化している分野です。あなたの質問に完全に答えるには、本当に情報が多すぎます
8 Merlyn Morgan-Graham 2011-06-27
この用語は、“ダウンロードによるドライブ”と呼ばれています
あなたが何もせずにウェブサイトを訪問することなく、それがどのように起こるかの素敵な例はここにあります
Schneider氏によると、同社の研究者チームは、悪意のあるサイトを指すiframeを注入しているページのJavaScriptの一部を発見したという。さらに詳しく調べてみると、これまで知られていなかった (0 日間) IE の脆弱性を利用しており、完全にパッチが適用されたバージョンのブラウザをクラッシュさせ、悪意のあるコードを実行することができました。しかし、マイクロソフトはすぐにこの脆弱性の詳細を発表したため、この0日は短命でした
シェルコードをさらに分析すると、既知の悪意のあるサーバを指す明確なURLが明らかになり、このURLはよく知られているiepeers.dllの脆弱性を悪用したものとしてM86のリポジトリに保存されていました
7 Moab 2011-06-27
トリックは、ウイルスメーカー/セキュリティの専門家がブラウザのループホールを見つけることです。簡単に言えば、ブラウザのセキュリティに穴を見つけて、その穴を利用してシステムに何かをすることができるということです。Adobe Flashにも穴が開いていて、特定のコードで悪用されるケースがあります。また、これらのセキュリティホールを誘発するjavascriptの文字列もあります
とはいえ、ブラウザを最新の状態にしておけば、ウェブサイトを訪問しただけで感染することはほとんどありません(ファイルをダウンロードして実行するのは別の話です!)
3 Roger Far 2011-06-27
ウェブサイトにアクセスして感染するウイルスのようなものは、アクセスしたシステムの欠陥を悪用します。例えば、ブラウザやプラグインのプログラミングに欠陥があり、(ブラウザ開発者の視点では偶然にも)画像が訪問者のコンピュータ上で任意のコマンドを実行できるようになっている可能性があります
このように、すべてのオペレーティングシステムが被害者になる可能性がありますが、ウイルス作成者は通常、規模の経済性に基づいて攻撃を行います。そのため、WindowsやInternet Explorerが標的にされることが多いのです
ブラウザやプラグインのどの部分もウイルスに狙われる可能性があります。上で紹介した「Image-that-caused-a-virus」が実例です。Flashはよく狙われます。ブラウザのJavaScriptエンジンもそうです。うまくいかないことはいろいろあります
あなたの最善の策は、高品質のウイルススキャナを実行することです。私はEsetでNOD32を使用しました。また、あまりにも良いものであれば、何かをクリックしないでください。FirefoxではNoScriptを使用し、AdBlockを使用してください
2 Bill Sempf 2011-06-27
これらのウイルスはWindows、Mac、Linuxユーザーを攻撃するのか、それともMac/Linuxユーザーは免疫があるのか?
ウェブサイトがあなたのブラウザのセキュリティを破ることに成功した場合、それはコンピュータ上のあなたのものすべてに干渉する可能性があります。しかし、それがその特権をエスカレートして管理者アクセスを得ることができれば、それはシステム上のすべてのものに干渉することができます
Unixマシン(Linux、Mac、BSDなど)で管理者権限を得るのは、Windowsよりも難しいと長い間言われてきました。しかし、最近の (Windows Vista の時点での) マイクロソフトによるセキュリティ機能の刷新により、Windows は以前よりもはるかに安全になったかもしれない–少なくとも、彼らはそう信じているだろう
1 jpaugh 2011-06-27