DLL読み込みの問題を読み解く

J
JPCERT Coordination CenterJPCERT Coordination Center
セキュアなソフトウェアをつくるために……
DLL読み込みの問題を読み解く
JPCERT コーディネーションセンター
情報流通対策グループ リードアナリスト
⼾⽥ 洋三
2017年8⽉5⽇(⼟)
Copyright ©2017 JPCERT/CC All rights reserved.
本⽇の話題
ü ⾃⼰紹介
ü 「DLL読み込みの脆弱性」って?
ü 過去を振り返る -- 2010年ころ
ü 最近の届け出
ü ユーザが⾏うべき対策、開発者が⾏うべき対策
ü まとめ
ü 参考情報など
2
Copyright ©2017 JPCERT/CC All rights reserved.
http://www.tomo.gr.jp/root/e9706.html
JPCERT/CC
情報流通対策グループ
リードアナリスト ⼾⽥ 洋三
脆弱性情報分析, セキュアコーディ
ング普及啓発活動……
に努めています
3
⾃⼰紹介
Copyright ©2017 JPCERT/CC All rights reserved.
JPCERT Coordination Center
日本における情報セキュリティ対策
活動の向上に取り組んでいる組織
4
Copyright ©2017 JPCERT/CC All rights reserved.
過去のOSC参加履歴 (セミナーを⾏ったもの)
5
•OSC2017@Osaka
•SEI CERT コーディングスタンダードのご紹介
•OSC2016@Hokkaido
•OWASP ASVS と Cheat Sheet(日本語版)のご紹介
•OSC2015@Hokkaido
•CSRF 脆弱性とその対策について
•OSC2014@Fukuoka
•Lessons (to be) Learned from Handling OpenSSL Vulnerabilities
•OSC2013@Kyoto
•~ヒトの振り見て我が振り直せ~脆弱性事例に学ぶJavaセキュアコーディング
•OSC2012@Fukuoka
•Androidセキュアコーディング~安全なAndroidアプリ開発のための心得~
•OSC2011@Nagoya: セキュアコーディングノススメ(JAVA編)
•OSC2010@Hokkaido: あなたのコードにセキュアコーディングスタンダード
•OSC2009@Fukuoka: セキュアコーディングノススメ
•OSC2008@Tokyo/Spring: セキュアコーディングノススメ
•OSC2007@Fukuoka: セキュアコーディングノススメ
•OSC2007@Niigata: ソフトウェア脆弱性を取り巻く状況と対策
•OSC2007@Kansai: ソフトウェア脆弱性情報流通のこれまでとこれから
•OSC2005@Tokyo/Fall: ソフトウェア脆弱性情報流通への取り組み
Copyright ©2017 JPCERT/CC All rights reserved.
JPCERT/CC の活動
重要インフラ、重要情報インフラ事業者等の特定組織向け情報発信早期警戒情報
海外のNational-CSIRTや企業内のセキュリティ対応組織の構築・運⽤⽀援CSIRT構築⽀援
脆弱性情報ハンドリング
Ø 未公開の脆弱性関連情報を製品開発者へ提供し、
対応依頼
Ø 関係機関と連携し、国際的に情報公開⽇を調整
Ø セキュアなコーディング⼿法の普及
Ø 制御システムに関する脆弱性関連情報の適切な
流通
マルウエア(不正プログラム)等の攻撃⼿法の分析、解析アーティファクト分析
各種業務を円滑に⾏うための海外関係機関との連携国際連携
インシデントの予測と捕捉インシデント予防 発⽣したインシデントへの対応
制御システムに関するインシデントハンドリング、情報収集・分析発信制御システムセキュリティ
⽇本シーサート協議会、フィッシング対策協議会の事務局運営等国内外関係者との連携
Ø マルウエアの接続先等の攻撃関連サイト等の閉
鎖等による被害最⼩化
Ø 攻撃⼿法の分析⽀援による被害可能性の確認、
拡散抑⽌
Ø 再発防⽌に向けた関係各関の情報交換及び情報
共有
インシデントハンドリング
(インシデント対応調整⽀援)
情報収集・分析・発信
定点観測(TSUBAME)
Ø ネットワークトラフィック情報の収集分析
Ø セキュリティ上の脅威情報の収集、分析、必要
とする組織への提供
6
Copyright ©2017 JPCERT/CC All rights reserved.
JPCERT/CC セキュアコーディングのコンテンツ
7
www.jpcert.or.jp/securecoding/
Copyright ©2017 JPCERT/CC All rights reserved.
slideshare にも講演資料やセミナコンテンツ置いてます
8
www.slideshare.net/jpcert_securecoding/presentations
Copyright ©2017 JPCERT/CC All rights reserved.
「DLL読み込みの脆弱性」って?
9
Copyright ©2017 JPCERT/CC All rights reserved.
JVNに掲載されているDLL読み込み案件
10
Copyright ©2017 JPCERT/CC All rights reserved.
JVNに掲載されているDLL読み込み案件
11
Copyright ©2017 JPCERT/CC All rights reserved.
そもそも DLL ってなんだっけ?
12
ダイナミック リンク ライブラリ (DLL) は、関数とリソースの共有ラ
イブラリとして機能する実行可能ファイルです。
……
オペレーティング システムは、実行可能ファイルの読み込み時、
または実行時に必要に応じて、DLL を実行可能ファイルのメモリ
領域に読み込むことができます。 また、DLL は、実行可能ファイ
ル間で関数とリソースを共有しやすくします。 メモリ内の DLL の
内容には、同時に複数のアプリケーションがアクセスできます。
https://msdn.microsoft.com/ja-jp/library/1ez7dh12.aspx
•Windows 標準の DLL(Kernel32.dll, User32.dll, GDI32.dll, …)
•アプリ固有の DLL
Copyright ©2017 JPCERT/CC All rights reserved.
DLL の読み込み
13
• (C などの)スタートアップルーチンの初期化の一環として
必要な DLL を読み込み
• アプリの中で LoadLibrary() などを使って読み込み
1. 実⾏ファイルがあるディレクトリ (アプリケーションディレクトリ)
2. Windows システムディレクトリ
3. Windows ディレクトリ
4. カレントディレクトリ
5. 環境変数 PATH
0. “KnownDLLs” に登録されているかどうか
Windows デスクトップアプリが使用する DLL 検索パス
(cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx)
Copyright ©2017 JPCERT/CC All rights reserved.
DLL 読み込みの様⼦を⾒る
14
•Sysinternals に含まれている Process Monitor (procmon)
• DLL 読み込みをはじめ、Win32 API 呼び出しの様⼦などの調査に
役⽴つ
•Dependency Walker
• DLL の読み込み順序、依存関係を調べる
定番のツール2つ
Copyright ©2017 JPCERT/CC All rights reserved.
Sysinternals Process Monitor (procmon)
ファイル関連の操作やレジス
トリ操作などのイベントを記
録できる
⼤量のイベントログのなかか
ら、プロセス名、パス名、操
作内容などによるフィルタを
かけて必要な部分のみを抽出
できる
15
https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
Copyright ©2017 JPCERT/CC All rights reserved.
procmon を使った挙動確認
üprocmon.exe を実⾏ (イベント記録開始)
üプログラム起動, ひととおり操作
üprocmon.exe でフィルタ設定
üフィルタ後のログ内容を精査
ü必要に応じてログ保存
16
Copyright ©2017 JPCERT/CC All rights reserved.
procmon の実⾏には管理者権限が必要
起動すると, UAC(ユーザ
アカウント制御)で実⾏許
可を求められます.
17
こんなやつ
Copyright ©2017 JPCERT/CC All rights reserved.
procmon が起動したところ(1)
18
Copyright ©2017 JPCERT/CC All rights reserved.
procmon が起動したところ(2)
19
プロセス名
操作するファイルのパス名
操作結果
Copyright ©2017 JPCERT/CC All rights reserved.20
Procmon のフィルタ設定(0)
Copyright ©2017 JPCERT/CC All rights reserved.21
プロセス名, パス名など “begins with”,
“contains” など “include”, “exclude”
「プロセス名」が「firefox」で「始まる」ものを選択
Procmon のフィルタ設定(1)
“Add” ボタンを押す
Copyright ©2017 JPCERT/CC All rights reserved.22
フィルタで使うルールが⼀つ登録された
Procmon のフィルタ設定(2)
Copyright ©2017 JPCERT/CC All rights reserved.23
“Apply” ボタンを
押す
フィルタ内容の更新完了.
以下同様にして、必要なだけルールを追加していく.
Procmon のフィルタ設定(3)
Copyright ©2017 JPCERT/CC All rights reserved.
Teraterm 0.94 インストーラ実⾏時
24
“process name” と
“Path” でフィルタを
かけたところ.
Copyright ©2017 JPCERT/CC All rights reserved.
Teraterm 0.94 インストーラ実⾏時
25
Copyright ©2017 JPCERT/CC All rights reserved.
Teraterm 0.95 インストーラ実⾏時
26
Copyright ©2017 JPCERT/CC All rights reserved.
過去を振り返る -- 2010年ころ
27
Copyright ©2017 JPCERT/CC All rights reserved.
2010年ころの状況(1)
28
• セキュリティベンダから, DLL 読み込みの脆弱性に対する攻撃
⼿法が公開され, 注⽬を集める
• CERT/CC VU#707943 や US-CERT Technical Alert TA10-238A
公開
• Microsoft からアドバイザリや開発者向けガイダンス⽂書公開
• セキュリティアドバイザリ 2269637
• 「DLLプリロード問題の対策ガイダンス」
[参考]
WindowsのDLLだけが危ないのか?DLL hijacking vulnerability概説(前編)
https://codezine.jp/article/detail/5441
https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
WindowsのDLLだけが危ないのか?DLL hijacking vulnerability概説(後編)
https://codezine.jp/article/detail/5442
https://www.jpcert.or.jp/sc-magazine/codezine02-9.html
Copyright ©2017 JPCERT/CC All rights reserved.
2010年ころの状況(2)
29
https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
Copyright ©2017 JPCERT/CC All rights reserved.
不正な DLL を読み込ませる攻撃とは…
30
- (攻撃者が)ドキュメントファイルと一緒に細工した DLL を置く
- 細工した DLL をドキュメントファイルと一緒にダウンロードさ
せそのまま実行させる
1. ドキュメントファイルと一緒に細工
した DLL を置く
2. ドキュメントファイルに関連づけら
れたアプリを起動
3. カレントディレクトリにある DLL を
使ってしまう
https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
Copyright ©2017 JPCERT/CC All rights reserved.
「カレントディレクトリ」からの DLL 読み込み
31
1. 実⾏ファイルがあるディレクトリ (アプリケーションディレクトリ)
2. Windows システムディレクトリ
3. Windows ディレクトリ
4. カレントディレクトリ
5. 環境変数 PATH
0. “KnownDLLs” に登録されているかどうか
Windows デスクトップアプリが使用する DLL 検索パス
(cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx)
これ
対策として検索順位が下がった
Copyright ©2017 JPCERT/CC All rights reserved.
最近の変化
32
Copyright ©2017 JPCERT/CC All rights reserved.
DLL読み込みの届け出の増加
33
• 2016年ころから DLL 読
み込みの脆弱性の届け出
が増加
• 対象のほとんどは
「インストーラ」
「⾃⼰解凍書庫」
2016Q4
2017Q1
2017Q2
「JPCERT/CC 活動概要」から
(https://www.jpcert.or.jp/pr/)
Copyright ©2017 JPCERT/CC All rights reserved.
2010年ころの届出との違い
34
テキストファイルを開く際に…
インストーラと同⼀のディレクト
リに存在するDLLを…
Copyright ©2017 JPCERT/CC All rights reserved.
不正な DLL を読み込ませる攻撃とは (旧)
35
- (攻撃者が)ドキュメントファイルと一緒に細工した DLL を置く
- 細工した DLL をドキュメントファイルと一緒にダウンロードさ
せそのまま実行させる
1. ドキュメントファイルと一緒に細工
した DLL を置く
2. ドキュメントファイルに関連づけら
れたアプリを起動
3. カレントディレクトリにある DLL を
使ってしまう
https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
Copyright ©2017 JPCERT/CC All rights reserved.
不正な DLL を読み込ませる攻撃とは (新)
36
- (攻撃者が)インストーラと一緒に細工した DLL を置く
- 細工した DLL をインストーラと一緒にダウンロードさせその
まま実行させる
1. インストーラと一緒に細工した
DLL を置く
2. インストーラを起動
3. 同一ディレクトリにある DLL を
使ってしまう
脆弱性のある
インストーラ
Copyright ©2017 JPCERT/CC All rights reserved.
DLL 読み込み: 通常の動作
プログラム起動!
プログラムと同じディレクトリから DLL を探し出そうとする
通常は DLL が⾒つからず(NOT FOUND)、次の場所に探しに
⾏く
システムディレクトリにある DLL を発⾒して使⽤
37
Copyright ©2017 JPCERT/CC All rights reserved.
プログラム起動!
プログラムと同じディレクトリから DLL を探し出そうとする
通常は DLL が⾒つからず(NOT FOUND)、次の場所に探しに
⾏く
システムディレクトリにある DLL を発⾒して使⽤
38
DLL を⾒つけ、ロードする
細⼯した DLL をプログラムと同じディレクトリに置く
DLL 読み込み: 問題が発⽣するケース
Copyright ©2017 JPCERT/CC All rights reserved.
「アプリケーションディレクトリ」からの DLL 読み込み
39
1. 実⾏ファイルがあるディレクトリ (アプリケーションディレクトリ)
2. Windows システムディレクトリ
3. Windows ディレクトリ
4. カレントディレクトリ
5. 環境変数 PATH
0. “KnownDLLs” に登録されているかどうか
Windows デスクトップアプリが使用する DLL 検索パス
(cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx)
Copyright ©2017 JPCERT/CC All rights reserved.
システムの保護、アプリのセキュリティ
40
• “Windows” や ”Program Files” といったシステム領域
• アプリ側ではなくシステム側が保護
• 細工された DLL が置かれるといった状況はシステム側の責任
• (もちろんユーザが適切な形で使用している前提)
• ユーザディレクトリ
• 管理はユーザ側の責任
• フィッシングや水飲み場攻撃など, 世の中はユーザを騙す攻撃がいっぱい
• どこまでユーザの責任にする?
システム領域外で動作するアプリには,
よりセキュアな実装を求めたい
インストーラ, 自己解凍書庫, ポータブルアプリなど
Copyright ©2017 JPCERT/CC All rights reserved.
ユーザが⾏うべき対策
開発者が⾏うべき対策
41
Copyright ©2017 JPCERT/CC All rights reserved.
ユーザが⾏うべき対策
42
• あやしいファイルを放置しない
• インストーラや自己解凍書庫を安全な形で実行する
安全な形で実行
1. (インストーラをダウンロード)
2. 新規にディレクトリを作成
3. 作成したディレクトリにインストーラを移動
4. インストーラを起動
Copyright ©2017 JPCERT/CC All rights reserved.
開発者が⾏うべき対策
43
ØDLL の読み込み方法に注意する
Øアプリ/インストーラの挙動についてユーザに説明し,
注意を促す
DLLの読み込み
• SetDefaultDllDirectories() や SetDllDirectory() でアプリ
ケーションディレクトリを排除
• DLL 読み込みは可能な限り絶対パスで
• インストーラ作成ツールによるインストーラ作成やアーカイ
バによる自己解凍書庫作成時にはツールの対応状況を
確認
Copyright ©2017 JPCERT/CC All rights reserved.
開発者が対処しきれないケース
44
vアプリのスタートアップ部分で勝手にロード
vWindows 標準 DLL が独自に他 DLL をロード
vWindows 標準機能 (DLL forwarding, OS 互換機能
の発動など)
v動作監視ソフトの影響
vなど
DLL の読み込み⽅法
ガンバりたいヒトには, 遅延読み込み指定とフック関数を活⽤して⾃前の読み込みという⼿段もある
(それでも100%解決できるわけではないけど)
[参考]
(https://docs.microsoft.com/en-us/cpp/build/reference/linker-support-for-delay-loaded-dlls)
(http://www.ponsoftware.com/archiver/bug.htm)
(http://micco.mars.jp/vul/2017/mhsvi20170515_01.htm)
(https://ipmsg.org/dllpreload/dllpreload_attack.html)
など…
Copyright ©2017 JPCERT/CC All rights reserved.
まとめ
45
DLL 読み込み案件の扱いに苦労しています
ユーザがとるべき対策: 安全な形で実⾏
開発者がとるべき対策:
—どのくらいアプリ側でがんばるか決める
—使⽤上の注意をきちんとユーザに説明する
DLL読み込みと合わせてコマンド呼び
出しについても注意!!
Copyright ©2017 JPCERT/CC All rights reserved.
関連情報(1)
46
JVNTA#91240916: Windows アプリケーションによる DLL 読み込みやコマンド実
行に関する問題
(https://jvn.jp/ta/JVNTA91240916/)
JVNVU#707943: Windows プログラムの DLL 読み込みに脆弱性
(https://jvn.jp/vu/JVNVU707943/)
任意のDLL/実行ファイル読み込みに関する脆弱性の注意喚起
(https://www.ipa.go.jp/about/press/20101111.html)
Dynamic-Link Library Security
(https://msdn.microsoft.com/en-us/library/windows/desktop/ff919712(v=vs.85).aspx)
Copyright ©2017 JPCERT/CC All rights reserved.47
Windows DLLプリロード攻撃の新しいパターンと防御法
(https://ipmsg.org/dllpreload/dllpreload_attack.html)
UNLHA32.DLL で作成された自己解凍書庫における任意の DLL 読み込
みに関する脆弱性
(http://micco.mars.jp/vul/2017/mhsvi20170515_01.htm)
UNLHA32.DLL における任意の DLL 読み込みに関する脆弱性
(http://micco.mars.jp/vul/2017/mhsvi20170515_02.htm)
Microsoft Windows における DLL 読み込みに関する脆弱性
(http://www.ponsoftware.com/archiver/bug.htm#load_lib)
関連情報(2)
Copyright ©2017 JPCERT/CC All rights reserved.
セキュアコーディングに関するお問合せ、インシデント対応のご依頼は
48
JPCERTコーディネーションセンター
̶Tel:03-3518-4600
̶https://www.jpcert.or.jp/
セキュアコーディングに関するお問い合わせ
̶Email:secure-coding@jpcert.or.jp
̶https://www.jpcert.or.jp/securecoding/
インシデントの報告
̶Email:info@jpcert.or.jp
̶https://www.jpcert.or.jp/form/
1 of 48

Recommended

マルチモーダル深層学習の研究動向 by
マルチモーダル深層学習の研究動向マルチモーダル深層学習の研究動向
マルチモーダル深層学習の研究動向Koichiro Mori
45.5K views37 slides
最近のSingle Shot系の物体検出のアーキテクチャまとめ by
最近のSingle Shot系の物体検出のアーキテクチャまとめ最近のSingle Shot系の物体検出のアーキテクチャまとめ
最近のSingle Shot系の物体検出のアーキテクチャまとめYusuke Uchida
40.1K views25 slides
【DL輪読会】Scale Efficiently: Insights from Pre-training and Fine-tuning Transfor... by
【DL輪読会】Scale Efficiently: Insights from Pre-training and Fine-tuning Transfor...【DL輪読会】Scale Efficiently: Insights from Pre-training and Fine-tuning Transfor...
【DL輪読会】Scale Efficiently: Insights from Pre-training and Fine-tuning Transfor...Deep Learning JP
493 views17 slides
CTF for ビギナーズ バイナリ講習資料 by
CTF for ビギナーズ バイナリ講習資料CTF for ビギナーズ バイナリ講習資料
CTF for ビギナーズ バイナリ講習資料SECCON Beginners
25.8K views90 slides
モデルベース協調フィルタリングにおける推薦の透明性に関する検討 by
モデルベース協調フィルタリングにおける推薦の透明性に関する検討モデルベース協調フィルタリングにおける推薦の透明性に関する検討
モデルベース協調フィルタリングにおける推薦の透明性に関する検討Okamoto Laboratory, The University of Electro-Communications
502 views30 slides
ソースコードの品質向上のための効果的で効率的なコードレビュー by
ソースコードの品質向上のための効果的で効率的なコードレビューソースコードの品質向上のための効果的で効率的なコードレビュー
ソースコードの品質向上のための効果的で効率的なコードレビューMoriharu Ohzu
55.3K views109 slides

More Related Content

What's hot

全力解説!Transformer by
全力解説!Transformer全力解説!Transformer
全力解説!TransformerArithmer Inc.
9.6K views43 slides
Pythonではじめる OpenAI Gymトレーニング by
Pythonではじめる OpenAI GymトレーニングPythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI GymトレーニングTakahiro Kubo
36.2K views70 slides
異次元のグラフデータベースNeo4j by
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j昌桓 李
13.1K views88 slides
Anomaly detection 系の論文を一言でまとめた by
Anomaly detection 系の論文を一言でまとめたAnomaly detection 系の論文を一言でまとめた
Anomaly detection 系の論文を一言でまとめたぱんいち すみもと
4.5K views33 slides
RAPiD by
RAPiDRAPiD
RAPiDharmonylab
1K views31 slides
Data-centricなML開発 by
Data-centricなML開発Data-centricなML開発
Data-centricなML開発Takeshi Suzuki
4.7K views48 slides

What's hot(20)

全力解説!Transformer by Arithmer Inc.
全力解説!Transformer全力解説!Transformer
全力解説!Transformer
Arithmer Inc.9.6K views
Pythonではじめる OpenAI Gymトレーニング by Takahiro Kubo
Pythonではじめる OpenAI GymトレーニングPythonではじめる OpenAI Gymトレーニング
Pythonではじめる OpenAI Gymトレーニング
Takahiro Kubo36.2K views
異次元のグラフデータベースNeo4j by 昌桓 李
異次元のグラフデータベースNeo4j異次元のグラフデータベースNeo4j
異次元のグラフデータベースNeo4j
昌桓 李13.1K views
How Much Position Information Do Convolutional Neural Networks Encode? by Kazuyuki Miyazawa
How Much Position Information Do Convolutional Neural Networks Encode?How Much Position Information Do Convolutional Neural Networks Encode?
How Much Position Information Do Convolutional Neural Networks Encode?
Kazuyuki Miyazawa2.3K views
東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを - 坪井祐太  by Preferred Networks
東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを - 坪井祐太 東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを - 坪井祐太 
東北大学講義資料 実世界における自然言語処理 - すべての人にロボットを - 坪井祐太 
Preferred Networks2.2K views
Deep Learning による視覚×言語融合の最前線 by Yoshitaka Ushiku
Deep Learning による視覚×言語融合の最前線Deep Learning による視覚×言語融合の最前線
Deep Learning による視覚×言語融合の最前線
Yoshitaka Ushiku32.5K views
モデル高速化百選 by Yusuke Uchida
モデル高速化百選モデル高速化百選
モデル高速化百選
Yusuke Uchida24.8K views
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話 by Yusuke Uchida
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
You Only Look One-level Featureの解説と見せかけた物体検出のよもやま話
Yusuke Uchida9.4K views
Curriculum Learning (関東CV勉強会) by Yoshitaka Ushiku
Curriculum Learning (関東CV勉強会)Curriculum Learning (関東CV勉強会)
Curriculum Learning (関東CV勉強会)
Yoshitaka Ushiku64.1K views
Dockerからcontainerdへの移行 by Akihiro Suda
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Akihiro Suda7.6K views
世界一わかりやすいClean Architecture by Atsushi Nakamura
世界一わかりやすいClean Architecture世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura47.2K views
深層学習の判断根拠を理解するための 研究とその意義 @PRMU 2017熊本 by Takahiro Kubo
深層学習の判断根拠を理解するための 研究とその意義 @PRMU 2017熊本深層学習の判断根拠を理解するための 研究とその意義 @PRMU 2017熊本
深層学習の判断根拠を理解するための 研究とその意義 @PRMU 2017熊本
Takahiro Kubo14.9K views
Mendeleyで簡単! 論文管理 by Takashi Yamane
Mendeleyで簡単! 論文管理Mendeleyで簡単! 論文管理
Mendeleyで簡単! 論文管理
Takashi Yamane12.8K views
SSII2021 [TS3] 機械学習のアノテーションにおける データ収集​ 〜 精度向上のための仕組み・倫理や社会性バイアス 〜 by SSII
SSII2021 [TS3] 機械学習のアノテーションにおける データ収集​ 〜 精度向上のための仕組み・倫理や社会性バイアス 〜SSII2021 [TS3] 機械学習のアノテーションにおける データ収集​ 〜 精度向上のための仕組み・倫理や社会性バイアス 〜
SSII2021 [TS3] 機械学習のアノテーションにおける データ収集​ 〜 精度向上のための仕組み・倫理や社会性バイアス 〜
SSII1.9K views
形態素解析の過去・現在・未来 by Preferred Networks
形態素解析の過去・現在・未来形態素解析の過去・現在・未来
形態素解析の過去・現在・未来
Preferred Networks27.9K views
[DL輪読会] Residual Attention Network for Image Classification by Deep Learning JP
[DL輪読会] Residual Attention Network for Image Classification[DL輪読会] Residual Attention Network for Image Classification
[DL輪読会] Residual Attention Network for Image Classification
Deep Learning JP8.3K views
[DL輪読会]data2vec: A General Framework for Self-supervised Learning in Speech,... by Deep Learning JP
[DL輪読会]data2vec: A General Framework for  Self-supervised Learning in Speech,...[DL輪読会]data2vec: A General Framework for  Self-supervised Learning in Speech,...
[DL輪読会]data2vec: A General Framework for Self-supervised Learning in Speech,...
Deep Learning JP2.4K views

Similar to DLL読み込みの問題を読み解く

細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威 by
細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威
細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威Noriaki Hayashi
1.4K views44 slides
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性 by
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性Asuka Nakajima
1.2K views37 slides
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐 by
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐CODE BLUE
4.6K views88 slides
[デブサミ2012]趣味と実益の脆弱性発見 by
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見Yosuke HASEGAWA
6.7K views69 slides
日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐 - CODE BLUE 2015 by
日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐  - CODE BLUE 2015日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐  - CODE BLUE 2015
日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐 - CODE BLUE 2015CODE BLUE
2.3K views94 slides
Agileツール適合化分科会(変更管理・バージョン管理) by
Agileツール適合化分科会(変更管理・バージョン管理)Agileツール適合化分科会(変更管理・バージョン管理)
Agileツール適合化分科会(変更管理・バージョン管理)masanori kataoka
1.1K views32 slides

Similar to DLL読み込みの問題を読み解く(20)

細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威 by Noriaki Hayashi
細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威
細工された製品が突然牙をむく「サプライチェーン攻撃」の脅威
Noriaki Hayashi1.4K views
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性 by Asuka Nakajima
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
[JPCERT/CC POC Meeting] 研究紹介 + DLLハイジャックの脆弱性
Asuka Nakajima1.2K views
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐 by CODE BLUE
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
攻撃者の行動を追跡せよ -行動パターンに基づく横断的侵害の把握と調査- by 朝長 秀誠, 六田 佳祐
CODE BLUE4.6K views
[デブサミ2012]趣味と実益の脆弱性発見 by Yosuke HASEGAWA
[デブサミ2012]趣味と実益の脆弱性発見[デブサミ2012]趣味と実益の脆弱性発見
[デブサミ2012]趣味と実益の脆弱性発見
Yosuke HASEGAWA6.7K views
日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐 - CODE BLUE 2015 by CODE BLUE
日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐  - CODE BLUE 2015日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐  - CODE BLUE 2015
日本の組織をターゲットにした攻撃キャンペーンの詳細 by 朝長 秀誠 & 中村 祐 - CODE BLUE 2015
CODE BLUE2.3K views
Agileツール適合化分科会(変更管理・バージョン管理) by masanori kataoka
Agileツール適合化分科会(変更管理・バージョン管理)Agileツール適合化分科会(変更管理・バージョン管理)
Agileツール適合化分科会(変更管理・バージョン管理)
masanori kataoka1.1K views
Rancherを活用して開発効率を上げる by Michitaka Terada
Rancherを活用して開発効率を上げるRancherを活用して開発効率を上げる
Rancherを活用して開発効率を上げる
Michitaka Terada2.7K views
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017) by JPCERT Coordination Center
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
安全なプラグインに必要なこと: 脆弱性届出状況に見る傾向と対策 (WordCampTokyo 2017)
闘うITエンジニアのためのLinuxセキュリティ講座 by Toshiharu Harada, Ph.D
闘うITエンジニアのためのLinuxセキュリティ講座闘うITエンジニアのためのLinuxセキュリティ講座
闘うITエンジニアのためのLinuxセキュリティ講座
[data security showcase Sapporo 2015] D22:今求められるセキュリティレベルとFireEye適応型防御 by ファイ... by Insight Technology, Inc.
[data security showcase Sapporo 2015] D22:今求められるセキュリティレベルとFireEye適応型防御 by ファイ...[data security showcase Sapporo 2015] D22:今求められるセキュリティレベルとFireEye適応型防御 by ファイ...
[data security showcase Sapporo 2015] D22:今求められるセキュリティレベルとFireEye適応型防御 by ファイ...
技術選択とアーキテクトの役割 by Toru Yamaguchi
技術選択とアーキテクトの役割技術選択とアーキテクトの役割
技術選択とアーキテクトの役割
Toru Yamaguchi42K views
System Center 2012, Endpoint Protectionの運用 by Suguru Kunii
System Center 2012, Endpoint Protectionの運用System Center 2012, Endpoint Protectionの運用
System Center 2012, Endpoint Protectionの運用
Suguru Kunii12.1K views
Windows 8 Developers カンファレンス by Kaoru NAKAMURA
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
Kaoru NAKAMURA2.1K views
Mr201302 mitb in_android_2 by FFRI, Inc.
Mr201302 mitb in_android_2Mr201302 mitb in_android_2
Mr201302 mitb in_android_2
FFRI, Inc.548 views
OSSで作る機械学習を用いたペネトレーションテストツール by Isao Takaesu
OSSで作る機械学習を用いたペネトレーションテストツールOSSで作る機械学習を用いたペネトレーションテストツール
OSSで作る機械学習を用いたペネトレーションテストツール
Isao Takaesu1.6K views
ユーザ・デザイナーから見たPlone CMSのアピールポイント by Masaki NIWA
ユーザ・デザイナーから見たPlone CMSのアピールポイントユーザ・デザイナーから見たPlone CMSのアピールポイント
ユーザ・デザイナーから見たPlone CMSのアピールポイント
Masaki NIWA926 views
Zabbixをもっと便利に!安全に! by Takashi Matsunaga
Zabbixをもっと便利に!安全に!Zabbixをもっと便利に!安全に!
Zabbixをもっと便利に!安全に!
Takashi Matsunaga1.7K views

More from JPCERT Coordination Center

いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~ by
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~JPCERT Coordination Center
882 views63 slides
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』 by
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』JPCERT Coordination Center
574 views16 slides
脆弱性情報はこうしてやってくる by
脆弱性情報はこうしてやってくる脆弱性情報はこうしてやってくる
脆弱性情報はこうしてやってくるJPCERT Coordination Center
3.8K views25 slides
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido) by
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)JPCERT Coordination Center
3.1K views56 slides
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性 by
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性JPCERT Coordination Center
4.8K views65 slides
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner... by
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...JPCERT Coordination Center
1.9K views74 slides

More from JPCERT Coordination Center(20)

いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~ by JPCERT Coordination Center
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
いま改めて製品開発者の脆弱性対応について考える ~情報セキュリティ早期警戒パートナーシップを運用する調整機関の視点から~
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』 by JPCERT Coordination Center
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
WordBench東京 7月勉強会「夏のLT大会!」『WordPress とバックアップの話』
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido) by JPCERT Coordination Center
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
OWASP ASVS と Cheat Sheet シリーズ (日本語版) のご紹介 (OSC2016Hokkaido)
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性 by JPCERT Coordination Center
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Android Platform の URLConnection に HTTP ヘッダインジェクションの脆弱性
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner... by JPCERT Coordination Center
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
Case Studies and Lessons Learned from SSL/TLS Certificate Verification Vulner...
クロスサイトリクエストフォージェリ(CSRF)とその対策 by JPCERT Coordination Center
クロスサイトリクエストフォージェリ(CSRF)とその対策クロスサイトリクエストフォージェリ(CSRF)とその対策
クロスサイトリクエストフォージェリ(CSRF)とその対策
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015) by JPCERT Coordination Center
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (JavaDayTokyo2015)
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」 by JPCERT Coordination Center
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
デブサミ2015 事例から学ぶAndroidアプリのセキュアコーディング「SSL/TLS証明書検証の現状と対策」
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014) by JPCERT Coordination Center
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
脆弱性事例に学ぶセキュアコーディング「SSL/TLS証明書検証」編 (KOF2014)
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion) by JPCERT Coordination Center
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
JRE標準ライブラリの脆弱性事例を理解する (AtomicReferenceArrayクラス と Type Confusion)
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性 by JPCERT Coordination Center
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Apache Tomcat における クロスサイトリクエストフォージェリ (CSRF) 保護メカニズム回避の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性 by JPCERT Coordination Center
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Spacewalkにおけるクロスサイト リクエストフォージェリ(CSRF)の脆弱性
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783) by JPCERT Coordination Center
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
Apache CommonsのHttpClientに おけるSSLサーバ証明書検証不備 (CVE-2012-5783)
JBoss Application Server におけるディレクトリトラバーサルの脆弱性 by JPCERT Coordination Center
JBoss Application Server におけるディレクトリトラバーサルの脆弱性JBoss Application Server におけるディレクトリトラバーサルの脆弱性
JBoss Application Server におけるディレクトリトラバーサルの脆弱性

DLL読み込みの問題を読み解く

  • 2. Copyright ©2017 JPCERT/CC All rights reserved. 本⽇の話題 ü ⾃⼰紹介 ü 「DLL読み込みの脆弱性」って? ü 過去を振り返る -- 2010年ころ ü 最近の届け出 ü ユーザが⾏うべき対策、開発者が⾏うべき対策 ü まとめ ü 参考情報など 2
  • 3. Copyright ©2017 JPCERT/CC All rights reserved. http://www.tomo.gr.jp/root/e9706.html JPCERT/CC 情報流通対策グループ リードアナリスト ⼾⽥ 洋三 脆弱性情報分析, セキュアコーディ ング普及啓発活動…… に努めています 3 ⾃⼰紹介
  • 4. Copyright ©2017 JPCERT/CC All rights reserved. JPCERT Coordination Center 日本における情報セキュリティ対策 活動の向上に取り組んでいる組織 4
  • 5. Copyright ©2017 JPCERT/CC All rights reserved. 過去のOSC参加履歴 (セミナーを⾏ったもの) 5 •OSC2017@Osaka •SEI CERT コーディングスタンダードのご紹介 •OSC2016@Hokkaido •OWASP ASVS と Cheat Sheet(日本語版)のご紹介 •OSC2015@Hokkaido •CSRF 脆弱性とその対策について •OSC2014@Fukuoka •Lessons (to be) Learned from Handling OpenSSL Vulnerabilities •OSC2013@Kyoto •~ヒトの振り見て我が振り直せ~脆弱性事例に学ぶJavaセキュアコーディング •OSC2012@Fukuoka •Androidセキュアコーディング~安全なAndroidアプリ開発のための心得~ •OSC2011@Nagoya: セキュアコーディングノススメ(JAVA編) •OSC2010@Hokkaido: あなたのコードにセキュアコーディングスタンダード •OSC2009@Fukuoka: セキュアコーディングノススメ •OSC2008@Tokyo/Spring: セキュアコーディングノススメ •OSC2007@Fukuoka: セキュアコーディングノススメ •OSC2007@Niigata: ソフトウェア脆弱性を取り巻く状況と対策 •OSC2007@Kansai: ソフトウェア脆弱性情報流通のこれまでとこれから •OSC2005@Tokyo/Fall: ソフトウェア脆弱性情報流通への取り組み
  • 6. Copyright ©2017 JPCERT/CC All rights reserved. JPCERT/CC の活動 重要インフラ、重要情報インフラ事業者等の特定組織向け情報発信早期警戒情報 海外のNational-CSIRTや企業内のセキュリティ対応組織の構築・運⽤⽀援CSIRT構築⽀援 脆弱性情報ハンドリング Ø 未公開の脆弱性関連情報を製品開発者へ提供し、 対応依頼 Ø 関係機関と連携し、国際的に情報公開⽇を調整 Ø セキュアなコーディング⼿法の普及 Ø 制御システムに関する脆弱性関連情報の適切な 流通 マルウエア(不正プログラム)等の攻撃⼿法の分析、解析アーティファクト分析 各種業務を円滑に⾏うための海外関係機関との連携国際連携 インシデントの予測と捕捉インシデント予防 発⽣したインシデントへの対応 制御システムに関するインシデントハンドリング、情報収集・分析発信制御システムセキュリティ ⽇本シーサート協議会、フィッシング対策協議会の事務局運営等国内外関係者との連携 Ø マルウエアの接続先等の攻撃関連サイト等の閉 鎖等による被害最⼩化 Ø 攻撃⼿法の分析⽀援による被害可能性の確認、 拡散抑⽌ Ø 再発防⽌に向けた関係各関の情報交換及び情報 共有 インシデントハンドリング (インシデント対応調整⽀援) 情報収集・分析・発信 定点観測(TSUBAME) Ø ネットワークトラフィック情報の収集分析 Ø セキュリティ上の脅威情報の収集、分析、必要 とする組織への提供 6
  • 7. Copyright ©2017 JPCERT/CC All rights reserved. JPCERT/CC セキュアコーディングのコンテンツ 7 www.jpcert.or.jp/securecoding/
  • 8. Copyright ©2017 JPCERT/CC All rights reserved. slideshare にも講演資料やセミナコンテンツ置いてます 8 www.slideshare.net/jpcert_securecoding/presentations
  • 9. Copyright ©2017 JPCERT/CC All rights reserved. 「DLL読み込みの脆弱性」って? 9
  • 10. Copyright ©2017 JPCERT/CC All rights reserved. JVNに掲載されているDLL読み込み案件 10
  • 11. Copyright ©2017 JPCERT/CC All rights reserved. JVNに掲載されているDLL読み込み案件 11
  • 12. Copyright ©2017 JPCERT/CC All rights reserved. そもそも DLL ってなんだっけ? 12 ダイナミック リンク ライブラリ (DLL) は、関数とリソースの共有ラ イブラリとして機能する実行可能ファイルです。 …… オペレーティング システムは、実行可能ファイルの読み込み時、 または実行時に必要に応じて、DLL を実行可能ファイルのメモリ 領域に読み込むことができます。 また、DLL は、実行可能ファイ ル間で関数とリソースを共有しやすくします。 メモリ内の DLL の 内容には、同時に複数のアプリケーションがアクセスできます。 https://msdn.microsoft.com/ja-jp/library/1ez7dh12.aspx •Windows 標準の DLL(Kernel32.dll, User32.dll, GDI32.dll, …) •アプリ固有の DLL
  • 13. Copyright ©2017 JPCERT/CC All rights reserved. DLL の読み込み 13 • (C などの)スタートアップルーチンの初期化の一環として 必要な DLL を読み込み • アプリの中で LoadLibrary() などを使って読み込み 1. 実⾏ファイルがあるディレクトリ (アプリケーションディレクトリ) 2. Windows システムディレクトリ 3. Windows ディレクトリ 4. カレントディレクトリ 5. 環境変数 PATH 0. “KnownDLLs” に登録されているかどうか Windows デスクトップアプリが使用する DLL 検索パス (cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx)
  • 14. Copyright ©2017 JPCERT/CC All rights reserved. DLL 読み込みの様⼦を⾒る 14 •Sysinternals に含まれている Process Monitor (procmon) • DLL 読み込みをはじめ、Win32 API 呼び出しの様⼦などの調査に 役⽴つ •Dependency Walker • DLL の読み込み順序、依存関係を調べる 定番のツール2つ
  • 15. Copyright ©2017 JPCERT/CC All rights reserved. Sysinternals Process Monitor (procmon) ファイル関連の操作やレジス トリ操作などのイベントを記 録できる ⼤量のイベントログのなかか ら、プロセス名、パス名、操 作内容などによるフィルタを かけて必要な部分のみを抽出 できる 15 https://docs.microsoft.com/en-us/sysinternals/downloads/procmon
  • 16. Copyright ©2017 JPCERT/CC All rights reserved. procmon を使った挙動確認 üprocmon.exe を実⾏ (イベント記録開始) üプログラム起動, ひととおり操作 üprocmon.exe でフィルタ設定 üフィルタ後のログ内容を精査 ü必要に応じてログ保存 16
  • 17. Copyright ©2017 JPCERT/CC All rights reserved. procmon の実⾏には管理者権限が必要 起動すると, UAC(ユーザ アカウント制御)で実⾏許 可を求められます. 17 こんなやつ
  • 18. Copyright ©2017 JPCERT/CC All rights reserved. procmon が起動したところ(1) 18
  • 19. Copyright ©2017 JPCERT/CC All rights reserved. procmon が起動したところ(2) 19 プロセス名 操作するファイルのパス名 操作結果
  • 20. Copyright ©2017 JPCERT/CC All rights reserved.20 Procmon のフィルタ設定(0)
  • 21. Copyright ©2017 JPCERT/CC All rights reserved.21 プロセス名, パス名など “begins with”, “contains” など “include”, “exclude” 「プロセス名」が「firefox」で「始まる」ものを選択 Procmon のフィルタ設定(1) “Add” ボタンを押す
  • 22. Copyright ©2017 JPCERT/CC All rights reserved.22 フィルタで使うルールが⼀つ登録された Procmon のフィルタ設定(2)
  • 23. Copyright ©2017 JPCERT/CC All rights reserved.23 “Apply” ボタンを 押す フィルタ内容の更新完了. 以下同様にして、必要なだけルールを追加していく. Procmon のフィルタ設定(3)
  • 24. Copyright ©2017 JPCERT/CC All rights reserved. Teraterm 0.94 インストーラ実⾏時 24 “process name” と “Path” でフィルタを かけたところ.
  • 25. Copyright ©2017 JPCERT/CC All rights reserved. Teraterm 0.94 インストーラ実⾏時 25
  • 26. Copyright ©2017 JPCERT/CC All rights reserved. Teraterm 0.95 インストーラ実⾏時 26
  • 27. Copyright ©2017 JPCERT/CC All rights reserved. 過去を振り返る -- 2010年ころ 27
  • 28. Copyright ©2017 JPCERT/CC All rights reserved. 2010年ころの状況(1) 28 • セキュリティベンダから, DLL 読み込みの脆弱性に対する攻撃 ⼿法が公開され, 注⽬を集める • CERT/CC VU#707943 や US-CERT Technical Alert TA10-238A 公開 • Microsoft からアドバイザリや開発者向けガイダンス⽂書公開 • セキュリティアドバイザリ 2269637 • 「DLLプリロード問題の対策ガイダンス」 [参考] WindowsのDLLだけが危ないのか?DLL hijacking vulnerability概説(前編) https://codezine.jp/article/detail/5441 https://www.jpcert.or.jp/sc-magazine/codezine02-8.html WindowsのDLLだけが危ないのか?DLL hijacking vulnerability概説(後編) https://codezine.jp/article/detail/5442 https://www.jpcert.or.jp/sc-magazine/codezine02-9.html
  • 29. Copyright ©2017 JPCERT/CC All rights reserved. 2010年ころの状況(2) 29 https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
  • 30. Copyright ©2017 JPCERT/CC All rights reserved. 不正な DLL を読み込ませる攻撃とは… 30 - (攻撃者が)ドキュメントファイルと一緒に細工した DLL を置く - 細工した DLL をドキュメントファイルと一緒にダウンロードさ せそのまま実行させる 1. ドキュメントファイルと一緒に細工 した DLL を置く 2. ドキュメントファイルに関連づけら れたアプリを起動 3. カレントディレクトリにある DLL を 使ってしまう https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
  • 31. Copyright ©2017 JPCERT/CC All rights reserved. 「カレントディレクトリ」からの DLL 読み込み 31 1. 実⾏ファイルがあるディレクトリ (アプリケーションディレクトリ) 2. Windows システムディレクトリ 3. Windows ディレクトリ 4. カレントディレクトリ 5. 環境変数 PATH 0. “KnownDLLs” に登録されているかどうか Windows デスクトップアプリが使用する DLL 検索パス (cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx) これ 対策として検索順位が下がった
  • 32. Copyright ©2017 JPCERT/CC All rights reserved. 最近の変化 32
  • 33. Copyright ©2017 JPCERT/CC All rights reserved. DLL読み込みの届け出の増加 33 • 2016年ころから DLL 読 み込みの脆弱性の届け出 が増加 • 対象のほとんどは 「インストーラ」 「⾃⼰解凍書庫」 2016Q4 2017Q1 2017Q2 「JPCERT/CC 活動概要」から (https://www.jpcert.or.jp/pr/)
  • 34. Copyright ©2017 JPCERT/CC All rights reserved. 2010年ころの届出との違い 34 テキストファイルを開く際に… インストーラと同⼀のディレクト リに存在するDLLを…
  • 35. Copyright ©2017 JPCERT/CC All rights reserved. 不正な DLL を読み込ませる攻撃とは (旧) 35 - (攻撃者が)ドキュメントファイルと一緒に細工した DLL を置く - 細工した DLL をドキュメントファイルと一緒にダウンロードさ せそのまま実行させる 1. ドキュメントファイルと一緒に細工 した DLL を置く 2. ドキュメントファイルに関連づけら れたアプリを起動 3. カレントディレクトリにある DLL を 使ってしまう https://www.jpcert.or.jp/sc-magazine/codezine02-8.html
  • 36. Copyright ©2017 JPCERT/CC All rights reserved. 不正な DLL を読み込ませる攻撃とは (新) 36 - (攻撃者が)インストーラと一緒に細工した DLL を置く - 細工した DLL をインストーラと一緒にダウンロードさせその まま実行させる 1. インストーラと一緒に細工した DLL を置く 2. インストーラを起動 3. 同一ディレクトリにある DLL を 使ってしまう 脆弱性のある インストーラ
  • 37. Copyright ©2017 JPCERT/CC All rights reserved. DLL 読み込み: 通常の動作 プログラム起動! プログラムと同じディレクトリから DLL を探し出そうとする 通常は DLL が⾒つからず(NOT FOUND)、次の場所に探しに ⾏く システムディレクトリにある DLL を発⾒して使⽤ 37
  • 38. Copyright ©2017 JPCERT/CC All rights reserved. プログラム起動! プログラムと同じディレクトリから DLL を探し出そうとする 通常は DLL が⾒つからず(NOT FOUND)、次の場所に探しに ⾏く システムディレクトリにある DLL を発⾒して使⽤ 38 DLL を⾒つけ、ロードする 細⼯した DLL をプログラムと同じディレクトリに置く DLL 読み込み: 問題が発⽣するケース
  • 39. Copyright ©2017 JPCERT/CC All rights reserved. 「アプリケーションディレクトリ」からの DLL 読み込み 39 1. 実⾏ファイルがあるディレクトリ (アプリケーションディレクトリ) 2. Windows システムディレクトリ 3. Windows ディレクトリ 4. カレントディレクトリ 5. 環境変数 PATH 0. “KnownDLLs” に登録されているかどうか Windows デスクトップアプリが使用する DLL 検索パス (cf. https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx)
  • 40. Copyright ©2017 JPCERT/CC All rights reserved. システムの保護、アプリのセキュリティ 40 • “Windows” や ”Program Files” といったシステム領域 • アプリ側ではなくシステム側が保護 • 細工された DLL が置かれるといった状況はシステム側の責任 • (もちろんユーザが適切な形で使用している前提) • ユーザディレクトリ • 管理はユーザ側の責任 • フィッシングや水飲み場攻撃など, 世の中はユーザを騙す攻撃がいっぱい • どこまでユーザの責任にする? システム領域外で動作するアプリには, よりセキュアな実装を求めたい インストーラ, 自己解凍書庫, ポータブルアプリなど
  • 41. Copyright ©2017 JPCERT/CC All rights reserved. ユーザが⾏うべき対策 開発者が⾏うべき対策 41
  • 42. Copyright ©2017 JPCERT/CC All rights reserved. ユーザが⾏うべき対策 42 • あやしいファイルを放置しない • インストーラや自己解凍書庫を安全な形で実行する 安全な形で実行 1. (インストーラをダウンロード) 2. 新規にディレクトリを作成 3. 作成したディレクトリにインストーラを移動 4. インストーラを起動
  • 43. Copyright ©2017 JPCERT/CC All rights reserved. 開発者が⾏うべき対策 43 ØDLL の読み込み方法に注意する Øアプリ/インストーラの挙動についてユーザに説明し, 注意を促す DLLの読み込み • SetDefaultDllDirectories() や SetDllDirectory() でアプリ ケーションディレクトリを排除 • DLL 読み込みは可能な限り絶対パスで • インストーラ作成ツールによるインストーラ作成やアーカイ バによる自己解凍書庫作成時にはツールの対応状況を 確認
  • 44. Copyright ©2017 JPCERT/CC All rights reserved. 開発者が対処しきれないケース 44 vアプリのスタートアップ部分で勝手にロード vWindows 標準 DLL が独自に他 DLL をロード vWindows 標準機能 (DLL forwarding, OS 互換機能 の発動など) v動作監視ソフトの影響 vなど DLL の読み込み⽅法 ガンバりたいヒトには, 遅延読み込み指定とフック関数を活⽤して⾃前の読み込みという⼿段もある (それでも100%解決できるわけではないけど) [参考] (https://docs.microsoft.com/en-us/cpp/build/reference/linker-support-for-delay-loaded-dlls) (http://www.ponsoftware.com/archiver/bug.htm) (http://micco.mars.jp/vul/2017/mhsvi20170515_01.htm) (https://ipmsg.org/dllpreload/dllpreload_attack.html) など…
  • 45. Copyright ©2017 JPCERT/CC All rights reserved. まとめ 45 DLL 読み込み案件の扱いに苦労しています ユーザがとるべき対策: 安全な形で実⾏ 開発者がとるべき対策: —どのくらいアプリ側でがんばるか決める —使⽤上の注意をきちんとユーザに説明する DLL読み込みと合わせてコマンド呼び 出しについても注意!!
  • 46. Copyright ©2017 JPCERT/CC All rights reserved. 関連情報(1) 46 JVNTA#91240916: Windows アプリケーションによる DLL 読み込みやコマンド実 行に関する問題 (https://jvn.jp/ta/JVNTA91240916/) JVNVU#707943: Windows プログラムの DLL 読み込みに脆弱性 (https://jvn.jp/vu/JVNVU707943/) 任意のDLL/実行ファイル読み込みに関する脆弱性の注意喚起 (https://www.ipa.go.jp/about/press/20101111.html) Dynamic-Link Library Security (https://msdn.microsoft.com/en-us/library/windows/desktop/ff919712(v=vs.85).aspx)
  • 47. Copyright ©2017 JPCERT/CC All rights reserved.47 Windows DLLプリロード攻撃の新しいパターンと防御法 (https://ipmsg.org/dllpreload/dllpreload_attack.html) UNLHA32.DLL で作成された自己解凍書庫における任意の DLL 読み込 みに関する脆弱性 (http://micco.mars.jp/vul/2017/mhsvi20170515_01.htm) UNLHA32.DLL における任意の DLL 読み込みに関する脆弱性 (http://micco.mars.jp/vul/2017/mhsvi20170515_02.htm) Microsoft Windows における DLL 読み込みに関する脆弱性 (http://www.ponsoftware.com/archiver/bug.htm#load_lib) 関連情報(2)
  • 48. Copyright ©2017 JPCERT/CC All rights reserved. セキュアコーディングに関するお問合せ、インシデント対応のご依頼は 48 JPCERTコーディネーションセンター ̶Tel:03-3518-4600 ̶https://www.jpcert.or.jp/ セキュアコーディングに関するお問い合わせ ̶Email:secure-coding@jpcert.or.jp ̶https://www.jpcert.or.jp/securecoding/ インシデントの報告 ̶Email:info@jpcert.or.jp ̶https://www.jpcert.or.jp/form/