Views
ソフトウェアの脆弱性
情報危機管理(2)
前々回(12/7)の問題
- あなたがやってみたい大規模(長時間 or 大メモリー必要)計算問題を考えてそのために何が必要かを答えてください
- 回答例
π, e, √2 などの計算 ... 11
暗号解読 ... 8
気候、温暖化、地震予測、地震対策、惑星の軌道、フィボナッチ列のエントロピー
勘違いしている答え
- 日本全国の苗字が「XX」の人の分布
「調査に時間がかかる」ということであって、計算時間とは別。
統計学を勉強すればしらみつぶしに調査する必要もないことがわかる。
- ハノイの塔の問題
O(2**N) 時間がかかることがわかっているが、解法は単純なので、むなしいだけでは?
話を戻して
- システム管理者として
- 情報危機管理には
- ソフトウェア脆弱性に対する対策が重要
脆弱性
- ぜいじゃくせい
- = Vulnerability
- 日本語で難しい漢字の言葉
- 英語ではラテン語/ギリシャ語起源が多い
- Vulnera = to wound (傷付ける)
- = 傷付きやすいこと
脆弱性とは
- 他のユーザ権限でコマンド実行できる
- データアクセス制限に反してそのデータを利用できる
- 他人になりすますことができる
- サービス拒否 (DoS: denial of service) ができる
- そのほか「情報漏えい」に繋がること
脆弱性情報
- JPCERT
- 有限責任中間法人 JPCERT コーディネーションセンター
- Japan Computer Emergency Response Team Coordination Center
- FIRST (Forum of Incident Response and Security Teams) のメンバー
具体例
- ...
SQL インジェクション
- Web 入力に SQL コマンド(の一部)を書く
- 例 誰でもWeb管理画面に入れる気前のいい会社
クロスサイトスクリプティング (1)
- JavaScript ... Web ブラウザで実行するプログラム
- たとえば、PC のファイルを読み出し、別のサイトに送る
- Mail とか FTP とか ...
- ということをさせないように、ブラウザがセキュリティチェック
- Windows アップデートをサボっている=やばい
- 怪しいサイトには行かない
クロスサイトスクリプティング (3)
- 怪しくないサイト(掲示板)で
- JavaScript を埋め込んだ投稿があったりする
- なので、掲示板(など)を開設する場合には、
- 埋め込まれないようにしないといけない!
バッファオーバフロー (1)
バッファオーバフロー (2)
- 残念ながら、君たちが
- 書いているような Cプログラムは
- たいがい、バッファオーバフローする
- 実例(iMac で実演)~tkikuchi/edu/se2006/C
バッファオーバフローだけでは
- 単に、プログラムが異常終了するだけだが、
- スタックの戻り番地を使って短いプログラムを実行させる
- こともできる。
- 短いプログラムは シェルを起動 するだけでよい。
- シェルコード (Shellcode) で検索してみてください。
対策(開発者として)
- 文字列やバッファを使うときは、大きさに注意
- gets() でなく fgets() を使う
- scanf() でなく fgets() + sscanf() を使う
- printf() でなく snprintf() を使う
- C でなく Python を使う
対策(ユーザとして)
- Windows Update を忘れずに実行
- ウィルス対策ソフトを過信しないこと
- 他の OS (Unix, Mac) でも同様
- ネットワークアプリケーションはオープンソースを使う
- なるべく早く最新バージョンに更新
- セキュリティ情報を入手 (JPCERT/CC)
問題
- (1) 次の漢字によみがなをつけなさい
脆弱性
- (2) ソフトウェアの脆弱性の原因をひとつ挙げなさい