ほとんどの新しいPCは、 64ビットバージョンのWindows — Windows 7と8の両方—何年も前から。 64ビットバージョンのWindowsは、追加のメモリを利用するだけではありません。また、32ビットバージョンよりも安全です。
64ビットオペレーティングシステムはマルウェアの影響を受けませんが、より多くのセキュリティ機能を備えています。これの一部は、Linuxなどの他のオペレーティングシステムの64ビットバージョンにも適用されます。 Linuxユーザーは、切り替えることでセキュリティ上の利点を得ることができます Linuxディストリビューションの64ビットバージョンに 。
アドレス空間配置のランダム化
ASLRは、プログラムのデータ位置をメモリ内にランダムに配置するセキュリティ機能です。 ASLR以前は、メモリ内のプログラムのデータ位置を予測できるため、プログラムへの攻撃がはるかに簡単になりました。 ASLRを使用すると、攻撃者はプログラムの脆弱性を悪用しようとするときに、メモリ内の正しい場所を推測する必要があります。推測を誤るとプログラムがクラッシュする可能性があるため、攻撃者は再試行できません。
このセキュリティ機能は、32ビットバージョンのWindowsやその他のオペレーティングシステムでも使用されますが、64ビットバージョンのWindowsでははるかに強力です。 64ビットシステムは32ビットシステムよりもはるかに大きなアドレス空間を持っているため、ASLRははるかに効果的です。
必須のドライバー署名
64ビットバージョンのWindowsは、必須のドライバー署名を強制します。システム上のすべてのドライバーコードには、デジタル署名が必要です。これには、カーネルモードデバイスドライバーと、プリンタードライバーなどのユーザーモードドライバーが含まれます。
必須のドライバー署名は、マルウェアによって提供される署名されていないドライバーがシステム上で実行されるのを防ぎます。マルウェアの作成者は、ブート時のルートキットを介して署名プロセスをバイパスするか、正当なドライバー開発者から盗まれた有効な証明書を使用して感染したドライバーに署名する必要があります。これにより、感染したドライバーをシステム上で実行することがより困難になります。
ドライバーの署名は、32ビットバージョンのWindowsでも強制できますが、そうではありません。署名されていない可能性のある古い32ビットドライバーとの互換性が継続する可能性があります。
64ビット版のWindowsでの開発中にドライバーの署名を無効にするには、次のことを行う必要があります。 カーネルデバッガーを接続する または、システムを再起動しても持続しない特別な起動オプションを使用します。
カーネルパッチ保護
PatchGuardとも呼ばれるKPPは、64ビットバージョンのWindowsでのみ見られるセキュリティ機能です。 PatchGuardは、カーネルモードで実行されているドライバーであっても、ソフトウェアがWindowsカーネルにパッチを適用するのを防ぎます。これは常にサポートされていませんが、32ビットバージョンのWindowsでは技術的に可能です。一部の32ビットウイルス対策プログラムは、カーネルパッチを使用してウイルス対策保護対策を実装しています。
PatchGuardは、デバイスドライバーがカーネルにパッチを適用するのを防ぎます。たとえば、PatchGuardは、ルートキットがWindowsカーネルを変更してオペレーティングシステムに埋め込むことを防ぎます。カーネルパッチの試行が検出されると、Windowsはブルースクリーンですぐにシャットダウンするか、再起動します。
この保護は、32ビットバージョンのWindowsで実施できますが、実施されていません。このアクセスに依存する従来の32ビットソフトウェアとの継続的な互換性のためである可能性があります。
データ実行防止
DEPを使用すると、オペレーティングシステムは、「NXビット」を設定することにより、メモリの特定の領域を「実行不可」としてマークできます。データのみを保持することになっているメモリ領域は実行可能ではありません。
たとえば、DEPのないシステムでは、攻撃者はある種のバッファオーバーフローを使用して、アプリケーションのメモリの領域にコードを書き込む可能性があります。その後、このコードを実行できます。 DEPを使用すると、攻撃者はアプリケーションのメモリの領域にコードを書き込むことができますが、この領域は実行不可能としてマークされ、実行できず、攻撃を停止します。
64ビットオペレーティングシステムには、ハードウェアベースのDEPがあります。最新のCPUを使用している場合、これは32ビットバージョンのWindowsでもサポートされますが、デフォルト設定はより厳格で、DEPは64ビットプログラムでは常に有効になっていますが、互換性の理由から32ビットプログラムではデフォルトで無効になっています。
WindowsのDEP構成ダイアログは少し誤解を招く可能性があります。なので Microsoftのドキュメント 状態では、DEPは常にすべての64ビットプロセスに使用されます。
「システムDEP構成設定は、32ビットまたは64ビットバージョンのWindowsで実行されている場合、32ビットのアプリケーションとプロセスにのみ適用されます。 64ビットバージョンのWindowsでは、ハードウェアで強制されたDEPが利用可能な場合、それは常に64ビットプロセスとカーネルメモリスペースに適用され、それを無効にするシステム構成設定はありません。」
WOW64
64ビットバージョンのWindowsは32ビットWindowsソフトウェアを実行しますが、WOW64(Windows64ビット上のWindows32ビット)と呼ばれる互換性レイヤーを介して実行します。この互換性レイヤーは、これらの32ビットプログラムにいくつかの制限を適用し、32ビットマルウェアが正しく機能するのを妨げる可能性があります。 32ビットマルウェアもカーネルモードで実行できなくなります— 64ビットOSで実行できるのは64ビットプログラムのみです—これにより、一部の古い32ビットマルウェアが正しく機能しなくなる可能性があります。たとえば、Sonyルートキットが収録された古いオーディオCDを使用している場合、64ビットバージョンのWindowsにそれ自体をインストールすることはできません。
64ビットバージョンのWindowsも、古い16ビットプログラムのサポートを終了します。これにより、古代の16ビットウイルスの実行が防止されるだけでなく、企業は脆弱でパッチが適用されていない可能性のある古代の16ビットプログラムをアップグレードする必要があります。
現在Windowsの64ビットバージョンがどれほど普及しているかを考えると、新しいマルウェアは64ビットWindowsで実行できる可能性があります。ただし、互換性の欠如は、実際の古いマルウェアからの保護に役立ちます。
不気味な古い16ビットプログラム、32ビットドライバのみを提供する古いハードウェア、またはかなり古い32ビットCPUを搭載したコンピュータを使用しない限り、64ビットバージョンのWindowsを使用する必要があります。使用しているバージョンがわからないが、Windows 7または8を実行している最新のコンピューターを使用している場合は、64ビット版を使用している可能性があります。
もちろん、これらのセキュリティ機能はどれも絶対確実なものではなく、64ビットバージョンのWindowsは依然としてマルウェアに対して脆弱です。ただし、64ビットバージョンのWindowsの方が確実に安全です。
画像クレジット: FlickrのWilliamHook