最新の公開されたIEエクスプロイト の概要)を見たところ、私はアセンブリだと思いました。エクスプロイトの開発については何も知りませんが、少しは知っていますアセンブリについて。そのアセンブリコードを見て、それはエクスプロイトが特定のOS上の特定のアーキテクチャをターゲットにすることを意味しますか?
同様に、IE脆弱性は、OS(XP、Vista、7、8)ごとに1回INアセンブリで開発する必要があり、32/64ビットに基づいて2倍になり、その後再び2倍になることを意味します。バイトオーダーに基づいていますか?
はい、ほとんどのエクスプロイトはプラットフォームに依存しています。詳細があります。
たとえば、攻撃者がInternet Explorerをターゲットにしている場合、攻撃者はWindowsシステムをターゲットにします。ほとんどのWindowsシステムはx86で動作します。さらに、Windows 7まででは、OSが64ビットWindowsであっても、デフォルトのIEは32ビットバージョンです。また、アセンブリレベルでは、XP、Vistaおよび7非常によく似ています(実際、同じアプリケーションを実行できるため、アプリケーションの観点からは、物事はあまり変わりません)。
これは、単一のエクスプロイトバージョン(「Windows」の場合は32ビットx86)が大多数のケースですでに機能することを意味します。勤勉な攻撃者は、Windows 8の64ビットバージョン、または64ビットIEを実行している64ビットより前のOSを使用している(ごくわずか)ユーザーについても考えます。非常に勤勉な攻撃者は、ARM Surface RT のバージョンを作成しようとします。
これらのプラットフォームはすべてリトルエンディアンです。 IEはかなり長い間使用されていませんでした(2000年頃にSparc/Solarisバージョンを使用しましたが、それは5.xバージョンでした)。
重要な点は、攻撃者は品質保証をあまり行う必要がないということです。攻撃者がターゲットに送信するものが、現在ターゲットにしていない他のマシンで問題なく機能しない場合、それは攻撃者にとって問題ではありません。
各プラットフォームでメモリレイアウトとプロセス実行を処理する方法が異なる場合があるため、エクスプロイトはプラットフォームに依存します。たとえば、WinXPでのエクスプロイトの実行は、他の最近のバージョンのWindowsではなく、比較的簡単です。特にIEエクスプロイトについて話すと、ブラウザの機能やDLLの脆弱性を見つけることと、それらの脆弱性を利用してOSのセキュリティメカニズムをバイパスすることとの関係がさらに深まっています。
エクスプロイトはプラットフォームに依存していますか?
はい。
同様に、IE脆弱性は、OS(XP、Vista、7、8)ごとに1回、INアセンブリで開発する必要があり、32/64ビットに基づいて2倍になり、その後再び2倍になることを意味します。バイトオーダーに基づいていますか?
番号。
アセンブリを使用しても、それはmoreプラットフォームに依存しません。これは、たとえばCで記述した場合と同じように、プラットフォームに依存しているだけです(ただし、ほとんどの目的で、Cを使用すると、これらの異なるプラットフォームを対象にすることがはるかに容易になります)。
リンクしたページは、エクスプロイトの対象となるプラットフォームを示しておらず、x86コードのみを示しています。それがx64もターゲットにしている場合、それはまだ2つのプラットフォーム(x86 Windowsとx64 Windows)だけであり、これらの2つでも、コードはほぼ同型(類似)です。アセンブリが含まれているという事実だけで、同じCPUアーキテクチャで実行されるWindowsの異なるエディションをサポートすることの複雑さが突然爆発することはありません。
(要点を説明すると、ポータブルアセンブリは一度記述してコンパイルできるため、マシンコードの同じblobがすべてのWindows、OS X、Linux、およびオペレーティングシステムなし)で実行されます 、同じCPUアーキテクチャ上で実行します。このように、アセンブリはlessプラットフォームに依存します。これは、必要なプラットフォームが少ないためです。マシンコードを格納する標準の実行可能ファイル形式は、依然としてOS固有です。ただし、たとえば、OS XはWindows .exeをロードする方法を認識しません。たとえ、ロードされた場合、内部のマシンコードが実行される可能性があります。)
X86とx64は純粋にリトルエンディアンなので、バイト順は問題になりません。
また、表示されているアセンブリはdisassemblyであるため、必ずしもアセンブリで記述されているとは限りません。ほぼすべての言語で記述できたはずです。これはエクスプロイトであり、奇妙な言語外のことを行うように設計されているため、そのハックな部分はアセンブリ自体で書くのが最も簡単であり、Cで最も簡単に記述できるものもあれば、逆アセンブルされてCで開始されたものもあります。そして議会に適応しました。
つまり、簡単な答えは、エクスプロイトでさまざまなWindowsバージョンをサポートすることは、想像しているほど難しくはないということです。
クロスブラウザまたはクロスプラットフォームのエクスプロイトが存在する可能性があります。ライブラリ、フレームワーク、エクスプロイトの種類によって異なります。
ほとんどのエクスプロイトは、特定のプラットフォーム、特定のバージョンなどをターゲットとしています。エクスプロイトはロジックへの攻撃であるため、ロジックに基づいてアーキテクチャ全体で機能するコードを一度に記述できる可能性がありますが、場合によってはより具体的なアーキテクチャをターゲットにする。
たとえば、コンパイラの最適化を利用するか、別の命令にジャンプさせるかです。