Personal tools
You are here: Home メンバー 菊地時夫 授業 情報社会と情報倫理 ソフトウェアの脆弱性
Document Actions

ソフトウェアの脆弱性

by 菊地時夫 last modified 2008-01-17 09:53

情報危機管理

  • システム管理者として
  • 情報危機管理には
  • ソフトウェア脆弱性に対する対策が重要

脆弱性

  • ぜいじゃくせい
  • = 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) のメンバー

具体例 3つ

  • SQLインジェクション
    • SQL Injection
  • クロス サイト スクリプティング
    • Cross Site Scripting
  • バッファ オーバフロー
    • Buffer Overflow

SQL インジェクション

クロスサイトスクリプティング (1)

  • JavaScript ... Web ブラウザで実行するプログラム
  • たとえば、PC のファイルを読み出し、別のサイトに送る
    • Mail とか FTP とか ...
  • ということをさせないように、ブラウザがセキュリティチェック
    • Windows アップデートをサボっている=やばい
  • 怪しいサイトには行かない

クロスサイトスクリプティング (2)

  • 怪しくないサイト(掲示板)で
  • JavaScript を埋め込んだ投稿があったりする
  • なので、掲示板(など)を開設する場合には、
  • 埋め込まれないようにしないといけない!

クロスサイトスクリプティング (3)

  • Cookie が盗まれたりする
  • Cookie とは、
    • サイトのサーバから渡される文字列
    • そのサイトで認証していることの証明だったりする
  • やってみる

バッファオーバフロー (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) ソフトウェアの脆弱性の原因をひとつ挙げなさい

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: