第9回 マイクロソフトの技術による 各問題の対処

第9回
マイクロソフトの技術による
各問題の対処
NECラーニング
山崎 明子
マイクロソフトが提供する
セキュリティ機能

Windowsのセキュリティ機能



Server製品群



ACL
IPSec
IIS
SQL Server
.NET Frameworkの機能


アプリケーションのセキュアな実行
セキュリティ関連のクラスライブラリ
.NET Framework の
セキュリティ機能


安全なアプリケーションの開発を支援
実行環境(ランタイム)が管理


クラスライブラリ



コンポーネント/コントロール
暗号化
Web アプリケーション/サービスのセキュリティ


安全な実行をサポート
ASP.NETの機能
Windows のセキュリティ機能を補完
復習:SQL インジェクション
効果的な対処

Webアプリケーションの場合・・・

ASP.NETの検証コントロール





入力があるか?
データ型は適切か?
予定している範囲内のデータか?
正規表現の適用
検証コントロールを組み合わせて必要な検証をシン
プルに実現
復習:クロスサイトスクリプティング
効果的な対処

入力されたデータをチェック

ASP.NETを利用している場合・・・


ASP.NET検証コントロールを利用
生成されるHTMLやURLを無害化

ASP.NETを利用している場合・・・


HTML 出力のエンコード
 HttpUtility.HtmlEncode メソッド
URL 出力のエンコード
 ttpUtility.UrlEncode(urlString)メソッド
復習:バッファ オーバーフロー
効果的な対処

VBやC#を利用する


基本的にバッファーオーバーフローはC/C++で発生
.NETの安全な文字列

Stringクラス


データのコピー、連結には常に新規の領域が確保される
StringBuilderクラス

バッファ境界をチェックできるクラス
効果的な対処

C/C++の/GSオプション

範囲を超えて上書きしたら気づくような仕組み


データ領域とリターンアドレスの間にちょっとしたデータを
おいておく
もし、それが変化していたらリターンアドレスもかわってい
る!・・・と判断
ちょっとしたデータ
リターンアドレス
XXXXXXXXX
スタック領域
復習:DoS攻撃
効果的な対処


ディスクリソースを枯渇させる攻撃には・・・
分離ストレージが効果的

データ書き込みを許容できる範囲を制限
IsolatedStorageFile isoStore =
IsolatedStorageFile.GetUserStoreForAssembly();


アプリケーション毎
ユーザー毎
復習:暗号化
共有キー暗号方式

アルゴリズムを選択する





DESCryptoServiceProvider
TripleDESCryptoServiceProvider
RijndaelManaged
共有キーを生成
共有キーを使用してデータを暗号化/復号化
公開キー暗号方式

アルゴリズムを選択する




RSACryptoServiceProvider
DSACryptoServiceProvider
秘密キーと公開キーのペアを生成
データを暗号化または復号化
ハッシュアルゴリズム

各種ハッシュアルゴリズム







HMACSHA1
MACTripleDES
MD5CryptoServiceProvider
SHA1Managed
SHA256Managed
SHA384Managed
SHA512Managed
まとめ

.NET Frameworkのセキュリティ機能を利用

各種攻撃への対処



明示的な対処法
暗黙の対処法
Windowsやサーバー製品のセキュリティ機能を補完


組み合わせて利用
多層防御の考え方
リファレンス

開発者のためのセキュリティサイト


MSDNデベロッパーセキュリティセンター
 http://www.microsoft.com/japan/msdn/security/
開発者向け セキュリティ オンライン セミナー
 http://www.microsoft.com/japan/msdn/security/seminars/
 アプリケーションセキュリティの基礎
 実践! セキュアなコード記述 Part 1
 実践! セキュアなコード記述 Part 2
 実践! .NET Framework を利用したアプリケーション セキュリ
ティの実装