バッファ・オーバフロー・アタックを動的に 検出するセキュア・キャッシュ ~安全性と消費エネルギーのトレードオフ~

Slides:



Advertisements
Similar presentations
情報理工学系研究科 コンピュータ科学専攻 上嶋裕樹
Advertisements

キャッシュ付PRAM上の 並列クィックソートと 並列マージソート
ヘテロジニアスマルチコアプロセッサ 環境を対象としたキャッシュシステム 自動生成ツールの開発
Chapter11-4(前半) 加藤健.
最新ファイルの提供を保証する代理FTPサーバの開発
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
オペレーティングシステム 第10回 仮想記憶管理(1)
計算機工学III オペレーティングシステム #9 主記憶管理:ページング 2006/06/09 津邑 公暁
10. メモリ 五島 正裕.
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
計算機システムⅡ 主記憶装置とALU,レジスタの制御
オペレーティングシステム 第11回 仮想記憶管理(2)
オペレーティングシステム 第9回 実記憶管理 38号館4階N-411 内線5459
神奈川大学大学院工学研究科 電気電子情報工学専攻
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
メモリ暗号化による Android端末の盗難対策
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
オペレーティングシステム 第12回 仮想記憶管理(3)
画像処理ボード上での 高速テンプレートマッチングの 実装と検証
ネストした仮想化を用いた VMの安全な帯域外リモート管理
Koji Inoue Kyushu University
演算/メモリ性能バランスを考慮した マルチコア向けオンチップメモリ貸与法
クラウドの内部攻撃者に対する安全なリモートVM監視機構
変更文の移動を可能にした 静的単一代入形式上の部分冗長性除去
アスペクト指向プログラミングを用いたIDSオフロード
Flyingware : バイトコード変換による 安全なエージェントの実行
プログラム実行時情報を用いたトランザクションファンクション抽出手法
型付きアセンブリ言語を用いた安全なカーネル拡張
非レイテンシ指向 レジスタ・キャッシュ・システム
分散IDSの実行環境の分離 による安全性の向上
サイバーセキュリティ バッファオーバフロー
オブジェクト指向プログラムにおける エイリアス解析手法の提案と実現
動的スライスを用いたバグ修正前後の実行系列の差分検出手法
仮想メモリを用いた VMマイグレーションの高速化
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
プログラミング言語論 第五回 理工学部 情報システム工学科 新田直也.
オペレーティングシステムJ/K (仮想記憶管理)
第7回 授業計画の修正 中間テストの解説・復習 前回の補足(クロックアルゴリズム・PFF) 仮想記憶方式のまとめ 特別課題について
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
通信機構合わせた最適化をおこなう並列化ンパイラ
メモリ投機を支援する CMPキャッシュコヒーレンスプロトコルの検討
Intel SGXを利用するコンテナの マイグレーション機構
Intel SGXを用いた仮想マシンの 安全な監視機構
軽量な仮想マシンを用いたIoT機器の安全な監視
サービス指向ルータ向け 問合せ処理用ハードウェアの検討
オブジェクト指向言語論 第六回 知能情報学部 新田直也.
プログラミング言語論 第六回 理工学部 情報システム工学科 新田直也.
仮想環境を用いた 侵入検知システムの安全な構成法
Peer-to-Peerシステムにおける動的な木構造の生成による検索の高速化
Cell/B.E.のSPE Isolationモードを用いた監視システム
第5回 メモリ管理(2) オーバレイ方式 論理アドレスとプログラムの再配置 静的再配置と動的再配置 仮想記憶とメモリ階層 セグメンテーション
Ibaraki Univ. Dept of Electrical & Electronic Eng.
コンピュータアーキテクチャ 第 9 回.
マイグレーションを支援する分散集合オブジェクト
実装について 前田俊行.
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
Cell/B.E. のSPE上で動作する 安全なOS監視システム
Mondriaan Memory Protection の調査
コンピュータアーキテクチャ 第 5 回.
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
蓄積されたオブジェクトの動作履歴を用いた 実行履歴削減手法の提案
オブジェクト指向言語論 第五回 知能情報学部 新田直也.
コンピュータアーキテクチャ 第 5 回.
強制パススルー機構を用いた VMの安全な帯域外リモート管理
慶應義塾大学 政策・メディア研究科 修士課程 2年 間 博人
1.2 言語処理の諸観点 (1)言語処理の利用分野
強制パススルー機構を用いた VMの安全な帯域外リモート管理
Presentation transcript:

バッファ・オーバフロー・アタックを動的に 検出するセキュア・キャッシュ ~安全性と消費エネルギーのトレードオフ~ 福岡大学/科学技術振興機構さきがけ  井上弘士

安全で安定した情報化社会システムの実現に向けて 安全性の向上(特にウィルス問題) 毎月800の新種ウィルスが誕生(*) 気づかないうちに侵入して突然暴走 個人の財産に対する直接的な脅威 低消費エネルギー化 バッテリ寿命の延長 利用者数の爆発 地球規模でのエネルギー問題 (*)板倉正俊「インターネット・セキュリティとは何か」日経BP社

バッファ・オーバフロー攻撃 バッファ・オーバフロー 解決策 最も多く活用される脆弱性の1つ CERTバッファ・オーバフロー勧告 R.B.Lee, D.K.Karig, J.P.McGregor, and Z.Shi, “Enlisting Hardware Architecture to Thwart Malicious Code Injection,” Proc. of the Int. Conf. on Security in Pervasive Computing, Mar. 2003. バッファ・オーバフロー 最も多く活用される脆弱性の1つ Blaster@2003, CodeRed@2001 戻りアドレスの改ざん プログラム実行制御の乗っ取り 解決策 Static:→コード解析や再コンパイル SASI[WNSP99] StakcGuard[USENIX98] Dynamic: SW: LibSafe, LibVerify[USENIX00] →ライブラリの更新、性能オーバヘッド SW: StackGhost[USENIX01] →SPARCアーキテクチャ特有 HW: SRAS[SPC03] →プロセッサ内部の変更、LIFO動作のみHWで対応

本研究のポイント 戻りアドレス改ざんの新しい動的検出方式を提案 安全性と消費エネルギーに関する定量的評価 Dynamic+HWアプローチ→コード互換性を完全保障 キャッシュでの実装(1)→プロセッサとの分離 キャッシュでの実装(2)→大容量、ランダム・アクセス キャッシュでの実装(3) →コスト削減 安全性と消費エネルギーに関する定量的評価 ベンチマークを用いたプロセッサ・シミュレーション 0.18μm CMOSプロセスを用いたSRAM設計に基づく消費エネルギーの測定 安全性/消費エネルギーのトレードオフ解析

発表手順 はじめに バッファ・オーバフロー・アタック セキュア・キャッシュ・アーキテクチャ 評価 おわりに 実験環境と評価モデル 安全性と消費エネルギー 性能オーバヘッド おわりに

バッファ・オーバフロー・アタック スタックの破壊(スタック・スマッシング) データ境界を越えた書込み 悪質コードへ制御が移行 悪質コードの挿入 戻りアドレスの改ざん データ境界を越えた書込み C標準ライブラリ内に存在(strcpyなど) 多くのシステムが有する脆弱性 悪質コードへ制御が移行 改ざん後の戻りアドレスがPCへ設定 プログラム実行の乗っ取り 関数呼出し側ではなく悪質コードを実行

関数呼出し/復帰時の動作 関数f ( )の実行 関数g( )の呼出し 文字列コピー 関数f( )へ復帰 int f ( ) { … g (s1); } int g ( char *s1) { char buf [10]; strcpy(buf, s1); 実行 コード 関数f ( )の実行 関数g( )の呼出し 文字列コピー 関数f( )へ復帰 処理 手順

関数呼出し/復帰時の動作 正常時 関数f ( )の実行 関数g( )の呼出し 文字列コピー 関数f( )へ復帰 int f ( ) { … g (s1); } int g ( char *s1) { char buf [10]; strcpy(buf, s1); 正常時 g()呼出し の次命令 実行 コード 関数f ( )の実行 関数g( )の呼出し 文字列コピー 関数f( )へ復帰 処理 手順

関数呼出し/復帰時の動作 正常時 関数f ( )の実行 関数g( )の呼出し 文字列コピー 関数f( )へ復帰 int f ( ) { … g (s1); } int g ( char *s1) { char buf [10]; strcpy(buf, s1); 正常時 g()呼出し の次命令 実行 コード 文字列 関数f ( )の実行 関数g( )の呼出し 文字列コピー 関数f( )へ復帰 処理 手順

関数呼出し/復帰時の動作 正常時 関数f ( )の実行 関数g( )の呼出し 文字列コピー 関数f( )へ復帰 int f ( ) { … g (s1); } int g ( char *s1) { char buf [10]; strcpy(buf, s1); g()呼出し の次命令 実行 コード 文字列 関数f ( )の実行 関数g( )の呼出し 文字列コピー 関数f( )へ復帰 処理 手順 正常時

スタック・スマッシングによる実行制御の乗っ取り int f ( ) { … g (s1); } int g ( char *s1) { char buf [10]; strcpy(buf, s1); 正常時 文字列 g()呼出し の次命令 実行 コード 関数f ( )の実行 関数g( )の呼出し 文字列コピー 関数f( )へ復帰 処理 手順

スタック・スマッシングによる実行制御の乗っ取り int f ( ) { … g (s1); } int g ( char *s1) { char buf [10]; strcpy(buf, s1); 異常時 正常時 文字列 g()呼出し の次命令 g()呼出し の次命令 実行 コード 関数f ( )の実行 関数g( )の呼出し 文字列コピー 関数f( )へ復帰 処理 手順

スタック・スマッシングによる実行制御の乗っ取り int f ( ) { … g (s1); } int g ( char *s1) { char buf [10]; strcpy(buf, s1); 異常時 g()呼出し の次命令 正常時 文字列 g()呼出し の次命令 攻撃コー ドの先頭 攻撃 コード 実行 コード 関数f ( )の実行 関数g( )の呼出し 文字列コピー 関数f( )へ復帰 処理 手順

スタック・スマッシングによる実行制御の乗っ取り int f ( ) { … g (s1); } int g ( char *s1) { char buf [10]; strcpy(buf, s1); 異常時 正常時 文字列 g()呼出し の次命令 攻撃コー ドの先頭 攻撃 コード 実行 コード 関数f ( )の実行 関数g( )の呼出し 文字列コピー 関数f( )へ復帰 処理 手順

発表手順 はじめに バッファ・オーバフロー・アタック セキュア・キャッシュ・アーキテクチャ 評価 おわりに 実験環境と評価モデル 安全性と消費エネルギー 性能オーバヘッド おわりに

動的な戻りアドレス改ざん検出 ~Secure Cache: SCache~ 問題点: スタックに書込んだ戻りアドレスが改ざんされる 解決策: 主記憶スタックに書込む前に必ずキャッシュにストア キャッシュで戻りアドレスを保護しよう! 手段: 戻りアドレス書込み時に複製(レプリカ・ライン)を作成 戻りアドレス読出し時に複製と比較 不一致であれば戻りアドレス改ざん発生と判定

内部構成 レプリカ・フラグ(1b) レプリカ・ライン用選択回路 ヒット条件 ワード比較器(32b)

動作(戻りアドレス書込み時) Original Replica 生成レプリカ数(Nrep)=2の場合 キャッシュ・ヒット時

動作(戻りアドレス読出し時) Original Replica 生成レプリカ数(Nrep)=2の場合 キャッシュ・ヒット時

SCacheの特徴(利点と欠点) Pros Cons 戻りアドレス改ざんの動的検出が可能 レプリカ数を変更可能 ただし、レプリカ・ラインが存在する場合のみ プロセッサの内部構成へ与える影響は極めて小さい アクセス時間/面積オーバヘッドは極めて小さい レプリカ数を変更可能 安全性と消費エネルギーのバランスを決定可能 レプリカ作成に伴うヒット率の低下 平均メモリアクセス時間の増大 下位階層メモリへのアクセス消費エネルギー増大 レプリカ作成に伴う消費エネルギーの増加 書込みエネルギーの増大 ライトバック・エネルギーの増大 読出しエネルギーの増大(他低消費電力キャッシュと比較して)

SCacheの設計選択肢 レプリカ・ラインのキャッシュ滞在期間を延長 レプリカ・ライン数の増加 レプリカ・ラインの配置アルゴリズム (→安全性の向上) レプリカ・ライン数の増加 最大 W-1個まで(Wはキャッシュの連想度) レプリカ・ラインの配置アルゴリズム LRU MRU 追出し禁止(この場合はレプリカ・ラインの開放が必要)

発表手順 はじめに バッファ・オーバフロー・アタック セキュア・キャッシュ・アーキテクチャ 評価 おわりに 実験環境と評価モデル 安全性と消費エネルギー 性能オーバヘッド おわりに

評価環境 SimpleScalar3.0 SPEC2000 4KB SRAM設計 Hspiceシミュレーション 安全性/消費エネルギー/性能 16KB 4-way Dキャッシュ ラインサイズ:32B アウト・オブ・オーダ実行 SPEC2000 7個のintプログラム 4個のfpプログラム Small input(完全実行) 4KB SRAM設計 0.18μm CMOSプロセス 16KBキャッシュの1ウェイ 8bメモリセルが1個のラッチ型センスアンプを共有 Hspiceシミュレーション カスタム・レイアウトと容量抽出(周辺回路は含まない) ビット当たりのアクセス消費エネルギー測定

評価モデル 危険度 評価対象モデル 消費エネルギー モデル レプリカ生成ポリシ 配置 数 LRU1R LRU 1 LRU2R 2 MRU1R Vulnerability = (Nv-rald / Nrald) * 100 モデル レプリカ生成ポリシ 配置 数 LRU1R LRU 1 LRU2R 2 MRU1R MRU MRU2R ALL ----- 3 CONV MRUウェイ予測 安全性を保障できない 戻りアドレス・ロード回数 全戻りアドレス ロード回数 消費エネルギー Etotal = Erd + Ewt + Ewb + Emp 読出し 書込み キャッシュ・ミス レプリカ生成に伴う ライトバック

実験結果(危険度) LRU1R LRU2R MRU1R MRU2R ALL ALL: 99.3%以上の戻りアドレス・ロードを保護 5.4% LRU1R LRU2R MRU1R MRU2R ALL MRU1R: 88.5%以上の戻りアドレス・ロードを保護 ALL: 99.3%以上の戻りアドレス・ロードを保護

実験結果(消費エネルギー) LRU1R LRU2R MRU1R MRU2R ALL ALL: 最大23%のエネルギー増加

実験結果(EV積) LRU2R MRU1R MRU2R ALL

実験結果(性能オーバヘッド) LRU1R LRU2R MRU1R MRU2R ALL ALL: 最大1.1%の性能低下

発表手順 はじめに バッファ・オーバフロー・アタック セキュア・キャッシュ・アーキテクチャ 評価 おわりに 実験環境と評価モデル 安全性と消費エネルギー 性能オーバヘッド おわりに

おわりに まとめ 今後の課題 SCache:関数戻りアドレス改ざんを動的に検出 安全性、消費エネルギー、性能オーバヘッドの評価 安全性重視型:ALLモデル 多くのプログラム(9/11)で99.3%以上の戻りアドレスロードを保護 最大で23%のキャッシュ消費エネルギー増加 消費エネルギー重視型:MRU1Rモデル 多くのプログラムで(9/11)で98.5%以上の戻りアドレスロードを保護 最大で9.9%のキャッシュ消費エネルギー増加 今後の課題 脆弱性を含む実アプリケーションでの評価 SCacheの完全設計 適切なレプリカ・ライン数を決定する最適化手法の確立(動的/静的)

Back-Up Slides …

キャッシュ・ミス率 IRA: Issued Return Address CA: Cache Access Miss Rate (%) #IRA Load (#IRA/#CA) CONV LRU1R LRU2R MRU1R MRU2R ALL 164.gzip 5.22 5.23 5.25 4,930,467 (0.3%) 175.vpr 3.53 3.56 3.63 3.59 3.66 3.74 5,627,709 (4.3%) 176.gcc 4.26 4.29 4.37 4.33 4.43 4.64 37,519,156 (2.0%) 181.mcf 20.02 20.03 20.05 20.06 20.10 992,419 (0.3%) 197.parser 4.13 4.18 4.44 4.23 4.55 5.07 45,466,527 (3.0%) 255.vortex 1.75 1.79 1.91 1.82 1.94 2.32 22,101,265 (2.1%) 256.bzip 2.31 2.45 18,147,017 (0.8%) 177.mesa 0.14 0.15 0.16 1.08 4,727,396 (1.0%) 179.art 42.93 32,466 (0.004%) 183.equake 2.44 2.46 2.47 2.52 3,580,827 (0.8%) 188.ammp 36.27 36.28 36.31 36.30 36.38 6,307,839 (0.6%)

Cache Design (0.18μm CMOS)

実験結果(消費エネルギー内訳) LRU1R LRU2R MRU1R MRU2R CONV ALL Emp Ewb Ewt Erd

こんなご経験はありませんか?