本連載では、最近話題のDLL hijacking vulnerabilityと呼ばれるプログラムのDLL読み込みに関する脆弱性について、前後編の2回に分けて解説します。後編では、DLL hijackingの脆弱性に対し攻撃を受けないアプリケーションを開発するため、Microsoftが開発者向けに公開している対策方法の一部を紹介します。
はじめに
前編では、DLL hijackingと呼ばれるプログラムのDLL読み込みに関する脆弱性の概要および、関連するイベントを紹介しました。
Microsoftはセキュリティアドバイザリ2269637を公開するとともに、Security Research & Defenseブログに「More information about the DLL Preloading remote attack vector」というエントリを追加し、より詳細な技術情報を説明しています。このエントリのなかで、アプリケーション開発者向けのガイダンスとして作成された word 文書「Secure loading of libraries to prevent DLL preloading attacks」が提供されました。現在は、この文書の日本語抄訳「ライブラリを安全にロードして DLL のプリロード攻撃を防ぐ」も提供されています。
ガイダンス文書の構成は、以下のようになっています。
-
DLLのプリロード攻撃の詳細
- LoadLibraryベースの攻撃
- SearchPathベースの攻撃
- ShellExecuteおよびCreateProcess
-
ソフトウェア開発者向けの推奨されるステップ
-
開発者が行うべき4項目の作業
- 安全でないライブラリロードを行っていないかチェック
- 完全修飾パスを使ってライブラリロードするように修正
- 既定のDLLの検索順序からカレントディレクトリを削除
- SetSearchPathModeを使って安全なプロセス検索モードを有効化
-
安全でないライブラリロードの特定に関するガイダンス
ライブラリをロードするコード例として、攻撃に悪用される可能性のあるコード例と安全なコード例を示しています。
-
開発者が行うべき4項目の作業
-
Process Monitorを用いて、安全でないロードを動的に検出する
アプリケーションの実行時に安全でないロードを行っているかどうかを、Process Monitorを使って観察する方法について簡単に説明しています。 -
追加のリソース
関連するブログ記事やMSDNの情報がリストされています。
今回はこの文書に基づいて、Windowsアプリケーション開発における対策方法をご紹介します。
この記事は参考になりましたか?
- 実例で学ぶ脆弱性対策コーディング連載記事一覧
-
- WindowsのDLLだけが危ないのか? DLL hijacking vulnerabil...
- WindowsのDLLだけが危ないのか? DLL hijacking vulnerabil...
- Linuxのcrontabコマンドの脆弱性をつぶす
- この記事の著者
-
久保 正樹(JPCERT コーディネーションセンター)(クボ マサキ(JPCERT コーディネーションセンター))
脆弱性アナリストJPCERTコーディネーションセンター慶応義塾大学環境情報学部卒。ソニーでデスクトップPCのソフトウェア開発に携わったのち、米国ダートマス大学にてオーディオ信号処理、電子音響音楽の研究を行い、電子音響音楽修士を取得。2005年4月よりJPCERTコーディネーションセンターにて、脆弱性...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
-
戸田 洋三(JPCERT コーディネーションセンター)(トダ ヨウゾウ(JPCERT コーディネーションセンター))
リードアナリストJPCERTコーディネーションセンター東京工業大学情報理工学研究科修士課程修了。学生時代は、型理論および証明からのプログラム抽出を研究。その後、千葉大学総合情報処理センターのスタッフとして、学内ネットワークの運営、地域ネットワーク、IPマルチキャストの実験ネットワークであるJP-MB...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
