web-dev-qa-db-ja.com

Webサイトにアクセスしてウイルスやトロイの木馬を入手できるのはなぜですか?

私は最近これらをたくさん見ました。リンクをクリックすると、インスタントトロイの木馬になります。ダウンロードする必要はありません。

これはどのようにして可能ですか?訪問する前にリンクをスキャンして、感染していないことを確認する方法はありますか?

16
Rob

それが可能である方法に答えるには:

このサイトには、ページをロードすると実行されるスクリプトがいくつかあります。これがWindowsPCに感染する原因です。コードをダウンロードするのか、単に実行するのか、詳細は100%わかりません。 このページ あるケースでそれがどのように行われたかの例があります。脆弱なブラウザも必要です。多くのコンピュータで実行されているものをターゲットにする価値があるため、一般的なブラウザは事実上すべて脆弱です。

制限されたユーザーではなく管理者として実行されると感染するのは、ほとんどの場合WindowsPCです。この理由は多種多様です。ロジャーが彼のコメントで指摘しているように、ここでの主な要因である本質的な弱点ではなく、その人気:

Windowsはより人気があるため、よりターゲットにされています。 Windowsは他の方法よりも安全性が低いと言う人もいますが、強調する方法ではそうではないと言わざるを得ません。私は自宅でLinuxを実行していますが、トロイの木馬が自分のユーザーアカウントで実行できたとしても、私がかなり気にかけているファイルにかなりの損害を与える可能性があり、システムを乗っ取ることができませんでした。

制限付き権限のユーザーで実行することにより、被害を制限することはできますが、必ずしもそれを排除することはできません。

Vistaおよび現在7では、管理者として何を実行するかをより厳密に制御できるようになると、mightがこれらの種類のサイトの減少を始めます-ただし、大多数が新しいOSを実行しているとき。

14
ChrisF

さて、あなたがウェブサイトを開くとき、ウェブサイトはブラウザにそれのためにあらゆる種類のことをするように指示することができます。最も単純なケースでは、テキストと画像を送信して表示するだけでなく、ブラウザが実行する小さなプログラムを送信することもできます(JavaScriptで、ブラウザに組み込まれている、またはJavaまたはFlash)。

原則として、ウェブサイトにアクセスしただけで感染することは不可能です。

ブラウザはアクセスしたWebサイトに代わってプログラムを実行しますが、これらのプログラムは注意深く制限されているため、「無害」なことしか実行できません。 JavaScriptから、たとえばJavaScriptが属するページを変更できます(両方が同じWebサイトからのものであるため、害はありません)が、JavaScriptは別のWebサイトのページを変更しない場合があります(したがって、卑劣なサイトはあなたのホームバンキングディスプレイ)、およびそれはあなたのコンピュータ上のファイルに直接アクセスしないかもしれません。

ほとんどのプラグインにも同様の制限があります(少なくともJavaとFlashについて)。これは一般に sandboxing と呼ばれます。コードは基本的に、コードが実行されるコンピューターから分離された独自のボックスに含まれるためです。特に、ハードディスク上のファイルを読み取ったり、コンピュータで実行されている「通常の」プログラムのようにプログラムを起動したりすることはできません。

さて、事は:原則としてあなたは安全ですが、実際にはあなたはそうではないかもしれません。その理由は、すべてのプログラムと同様に、サンドボックスシステムにはバグがあるためです。これらのバグにより、プログラムがサンドボックスを「破壊」し、ブラウザまたはプラグインをだまして、許可されるべきではないことを実行させることがあります。これらのトリックは非常に複雑です。

例:

  • 通常のプログラムと同様に、ブラウザまたはプラグインの実装にはバッファオーバーフローが発生する可能性があります。これにより、Webサイトは、入力としてブラウザに送信することにより、特別に細工されたコードを実行できます。
  • サンドボックスに関して、SunのJavaプラグインの古いバージョンに脆弱性がありました。サンドボックスは、すべてのJava関数へのアクセスを許可していません(まだ許可していません)。これにより、ローカルファイルの読み取りや削除など、プログラムが損傷を与える可能性があります。ただし、サンドボックスはJavaアプレットからのこれらの関数へのアクセスを正しくブロックしましたが、ブラウザーはJavaScriptから(「リフレクション」と呼ばれる手法を介して)これらの関数への間接アクセスも許可しました。この「バックドア」は開発者によって十分に考慮されておらず、サンドボックスの制限を回避してサンドボックスを破壊することを許可されていました。詳細は https://klikki.fi/adv/javaplugin.html を参照してください。

残念ながら、JavaScript、Java、Flashのサンドボックスにはいくつかの脆弱性があります。それでも、これらの脆弱性を検出して悪用する悪意のあるハッカーと、それらを検出して修正する優れたハッカーおよび開発者の間の一種の競争です。通常、それらはすぐに修正されますが、脆弱性の窓があることもあります。

ところで、サンドボックスは、いくつかのJavaアプレットが起動時に「このアプレットを信頼しますか?」という警告をポップアップする理由です:これらのアプレットaskあなたは彼らを彼らのサンドボックスから出して彼らにあなたのコンピュータへのアクセスを与えることを許可します。これは必要な場合もありますが、正当な理由がある場合にのみ許可する必要があります。

追伸: ActiveX (少なくとも初期のバージョン)がひどく安全でなかった理由は、ActiveXがサンドボックスを使用しなかったためです。 WebページのActiveXコードはすべて、システムに完全にアクセスできました。公平を期すために、これは(部分的に)新しいバージョンで修正されました。

8
sleske

先制措置に関するあなたの最後の質問に答えるためにこれを述べます。それほど一般的ではないオプションの1つは、仮想マシンを使用することです(まあ、セキュリティサークルでは一般的です)。利用可能な無料のものがいくつかあります。 OS、ブラウザ、アドインを仮想マシンにインストールし、状態を保存します。その後、任意のサイトを参照できます。終了すると、保存された状態に戻り、その時点以降に仮想マシンで発生したものはすべて破棄されます。一度入ると非常に簡単ですが、学習曲線が少し増えるかもしれません。

注:状態を元に戻すと、仮想マシンへの変更は文字通り破棄されます。ブラウザの履歴、Cookie、更新などが含まれます。この場合、その状態に戻り、更新を適用して、新しい状態を保存できます。あなたが保持したい他のものについても同じことができます。これは実際のコンピューターには影響せず、仮想マシンにのみ影響します。

2
Ioan