Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2017-0037 | Kitploit
ツール/GitHubGitHub/chattopadhyaykittu/cve-2017-0037
脆弱性分析エクスプロイトウェブアプリケーション悪用論文と研究学習と教育バイナリエクスプロイト
GitHubchattopadhyaykittu/cve-2017-0037

CVE-2017-0037

リポジトリを見る
4年前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2017-0037 (Microsoftブラウザーのメモリ破損の脆弱性)

この文書は、CVE-2017-0037- Microsoftブラウザーのメモリ破損の脆弱性について説明します。最初に、リモートコード実行(RCE) とは何かを紹介し、その後、いくつかの技術的な詳細を説明します。

リモートコード実行とは何か?

攻撃者が別のコンピューター上でリモートにコマンドを実行できるサイバー攻撃は、リモートコード実行として知られています。リモートコード実行(RCE)は、ホストがダウンロードした有害なソフトウェアによって引き起こされることが最も多く、システムの場所に関係なく発生する可能性があります。

RCEを達成するには、以下の方法を使用できます-

  1. インジェクション攻撃: ここでは、攻撃者は入力の一部がコマンドの一部として処理されることを意図して、誤った入力を提供します。

  2. デシリアライゼーション攻撃: デシリアライゼーションプログラムは、シリアライズされたデータ内の注意深く作成されたユーザー入力を実行可能なコードとして読み取る可能性があります。

  3. 境界外書き込み: メモリ割り当てが不適切に行われた場合、攻撃者は割り当てられたバッファを超える入力を構築できる可能性があります。実行可能コードもメモリ内に保持されるため、正しい場所に書き込まれれば、プログラムはユーザー提供のデータを実行できる可能性があります。

  4. 型取り違え攻撃: ソースコードが、提供されたエンティティの正当性を検証するアクションを実際には実行しない場合、型取り違えの脅威があります。型取り違えにより、ハッカーはオブジェクト型の不一致を引き起こすだけで任意の命令を実行できるコードを密かに送り込むことができるため、危険です。

RCE攻撃の実行

RCE攻撃の一連の流れは簡単に実行できます。まず、脅威アクターは、効果的な攻撃に悪用される可能性のある一般的な脆弱性をインターネット上で検索します。特定の脆弱性を特定した後、ハッカーはエクスプロイトを使用してアクセスを取得します。アクセスを獲得したら、悪意のあるスクリプトを使用して、データの窃取、マネーロンダリング、包括的な監視、サービスの妨害などの目標を達成できます。

コードを注入するために、対象アプリケーションの言語が頻繁に使用されます。その言語は、その後サーバーサイドのプロセッサによって実行されます。Python、Java、Perl、Ruby、PHPは一般的なプログラミング言語です。コードインジェクションは、検証されていない入力を即座に解析するプラットフォームでよく見られます。実際、公開されているオンラインアプリはハッカーにとって大きな標的です。

悪意のあるスクリプトは通常、bashスクリプトによって実行されます。bashスクリプトは、通常コマンドプロンプトに入力されるコマンドを含むテキストドキュメントです。bashスクリプトにより、含まれるコマンドが正しく機能します。通常、ファイル名に \".sh\" を付けますが、必須ではありません。パッケージ化後、ハッカーはそのコードを脆弱なアプリに送り込み、アプリがそれを実行します。アプリケーションは、カーネルに実行を指示することもあります。

攻撃メトリクス

次の画像は、CVE-2017-0037 の基本スコアメトリクスに焦点を当てています。

Alt text

出典

ここでのCVSS評価スコアは**8.1(高)**です。

攻撃元(Attack Vector)- ここでの脆弱なコンポーネントはネットワークスタックに接続されており、潜在的な攻撃者の範囲は、前述の他の選択肢からインターネット全体にまで及びます。

この脆弱性の**攻撃複雑性(Attack Complexity)**は高く、つまり、攻撃の成功は攻撃者の制御外の状況に依存します。そのため、攻撃を意のままに完了することはできず、期待した効果を得るには、攻撃者が脆弱な要素に対して計画または実装において多大な労力を費やす必要があります。

ここでの**機密性(Confidentiality)**の値は高く、機密性が完全に失われることを意味し、攻撃者は損傷したコンポーネント内のすべてのリソースにアクセスできるようになります。

**完全性(Integrity)**は高く、完全性と保護が重大に失われることを意味します。

**可用性(Availability)**は高く、可用性が完全に失われることを意味し、攻撃者は影響を受けるコンポーネントのリソースへのアクセスを完全に妨げることができます。

攻撃の詳細

CVE-2017-0037 の脆弱性は、Microsoft Edge および Internet Explorer 10 と 11 に存在する型取り違えの欠陥でした。ユーザーが悪意のあるウェブサイトにアクセスすると、攻撃者はターゲットマシン上でリモートにコードを実行できました。

この欠陥はGoogleの研究者Ivan Franticによって指摘され、Microsoftが90日間の開示期間内に修正できなかったため、Googleが脆弱性の詳細を公開しました。

Alt text

出典

研究者によって公開された**概念実証(PoC)**エクスプロイトは、EdgeとIEをクラッシュさせ、攻撃者がリモートでコードを実行し、侵害されたシステムの管理者権限を取得できることを示しています。また、この攻撃は Windows Server 2012 R2 上の64ビット版Internet Explorerで動作し、32ビット版のIE 11やMicrosoft Edgeにも影響することを確認しました。

型取り違えは、以下にあります。

Layout::MultiColumnBoxBuilder::HandleColumnBreakOnColumnSpanningElemnt 関数はmshtml.dll内にあります。攻撃は、TH要素に対して操作するCascading Style Sheets(CSS)トークンシーケンスと巧妙に細工されたJavaScriptコードを含むベクトルを介して、任意のコードをリモートで実行することで発生する可能性があります。

Google Project Zero の Ivan Fratric による PoC

Alt text

出典

研究者Ivan Franticが述べたように、PoCは以下でクラッシュします。

MSHTML!Layout::MultiColumnBoxBuilder::HandleColumnBreakOnColumnSpanningElement アドレス 0000007800000070 からの読み取り時です。

Alt text

出典

Alt text

出典

クラッシュポイント周辺のコードを分析すると、メモリアドレス 00007ffe`8f330a51 で、レジスタ rbp の内容がレジスタ rcx に読み込まれることがわかります。次に、

MSHTML!Layout::Patchable<Layout::PatchableArrayData<Layout::MultiColumnBox::SMultiColumnBoxItem> >::Readable の呼び出しにより、rax に値が代入されます(rax は関数からの戻り値を格納する指定レジスタです)。

rcx は別のオブジェクト型を指すことが想定されていますが、上記のPoCでは、Array<Math::SLayoutMeasure>::Create に割り当てられた32ビット整数の配列を指しています。テーブル列のオフセットはその配列に格納されており、攻撃者はそれを制御できます。クラッシュは 00007ffe`8f330a59 で発生します。rax が初期化されていないメモリを指しているためです。rax には、以下の関数の戻り値が格納されます。

MSHTML!Layout::Patchable<Layout::PatchableArrayData<Layout::MultiColumnBox::SMultiColumnBoxItem> >::Readable これは初期化されていないメモリアドレスです。攻撃者は、rax を制御可能なメモリ位置に指し示すことができます。攻撃者は、border-spacing や最初の TH 要素の幅などのテーブルプロパティを変更して、rax を制御できます。

Alt text

出典

攻撃者が 00007ffe`8f330a59 行目の rax を制御できる場合、同じ引数で、より高いアドレスへのジャンプとともに、関数

MSHTML!Layout::Patchable<Layout::PatchableArrayData<Layout::MultiColumnBox::SMultiColumnBoxItem> >::Readable が 00007ffe`8f330a5d 743d 行目で再度呼び出されます。その後、rax を起点とした一連の差分を介して、関数ポインタが取得され、rdi に格納される可能性があります。攻撃者がその関数ポインタの CFGチェック を通過できれば、攻撃者が制御する関数ポインタが 00007ffe`8f330a80 行目で呼び出されます。

このバグの推定パッチ

Ivan Fratric が提案したように、まず、型取り違えの発生理由を特定する必要があります。彼の仮説によれば、DOM には HTML テーブル列と CSS 列の2種類の列が存在し、IE/Edge はこの2つを混同していました。したがって、脆弱な関数のどこかに型チェックを追加すれば、この問題を解決できた可能性があります。

参考リンク

  • Ivan Fratric によるバグ報告

  • Microsoftブラウザーのメモリ破損の脆弱性

RCE攻撃の影響

  1. 初期アクセス: 攻撃者はこれを利用してデバイスを掌握し、マルウェアをインストールしたり、他の目的を達成したりできます。

  2. 情報漏えい: RCE攻撃は、情報を盗むマルウェアをインストールしたり、影響を受けるデバイスからデータを収集・窃取するコマンドを実行したりするのに役立ちます。

  3. サービス拒否: RCEの欠陥により、ハッカーは影響を受けるアプリをホストしているマシン上でコードを実行でき、そのアプリやシステム上の他のプログラムの動作を妨害できます。

  4. 暗号通貨マイニング: 暗号通貨マイニングマルウェアは、脆弱なデバイス上に展開され実行されることがよくあります。

  5. ランサムウェア: ランサムウェアは、ユーザーが金銭を支払わない限りファイルにアクセスできないようにするソフトウェアの一種です。

RCE攻撃を緩和する方法

  1. バッファオーバーフロー制御は、RCE攻撃を緩和するために使用できます。

  2. アクセス制御リストは、ユーザー権限を制限し、攻撃者がユーザーアカウントを制御した場合の攻撃者の能力を制限するのに役立ちます。

  3. エンドポイントの監視に加えて、ネットワークトラフィックを潜在的に悪意のあるコンテンツがないか監視する必要があります。

  4. 入力サニタイゼーションを使用します。これは、ユーザーからの入力を洗浄・スクラビングして、セキュリティ上の欠陥を悪用するために使用されないようにするプロセスです。

参考文献

  • https://msrc.microsoft.com/update-guide/vulnerability/CVE-2017-0037

  • https://www.checkpoint.com/cyber-hub/cyber-security/what-is-remote-code-execution-rce/#:~:text=In%20an%20injection%20attack%2C%20the%20attacker%20deliberately%20provides%20malformed%20input%20that%20causes%20part%20of%20their%20input%20to%20be%20interpreted%20as%20part%20of%20the%20command

  • https://www.bugcrowd.com/glossary/remote-code-execution-rce/

  • https://nvd.nist.gov/vuln/detail/CVE-2017-0037

  • https://bugs.chromium.org/p/project-zero/issues/detail?id=1011

  • https://blog.0patch.com/2017/03/0patching-another-0-day-internet.html

  • https://www.cs.uaf.edu/2017/fall/cs301/lecture/09_11_registers.html

  • https://reverseengineering.stackexchange.com/questions/10746/what-does-mov-qword-ptr-dsrax18-r8-mean

ツールをダウンロード