.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

システム開発工程とセキュリティ対策

工程毎の実施例

要件定義

工程

・・・

実施

方式設計

工程

・・・

実施

  • リスク分析の実施
  • セキュリティ要件の決定
  • セキュリティ基本要件の決定
    • セキュリティ目標
    • 適用 / 準拠 基準
    • セキュリティ基本要件
  • セキュリティ実装要件の決定
    • 識別 / 認証
    • アクセス制御
    • データ保護(暗号化)
    • セキュリティ監視
    • セキュリティ監査
    • マルウェア対策
    • DoS攻撃対策
  • アプリケーション・セキュリティ要件の決定
    • 開発環境のセキュリティ対策要件
    • アプリケーション特性からのセキュリティ要件
    • セキュリティ・テスト方式に関する要件
  • システム・セキュリティ管理要件の決定
    • ID管理
    • 鍵管理
    • パッチ管理
    • 構成 / 設定 / 変更管理
    • ログ管理
    • インシデント / 問題 管理

基本・詳細設計

工程

  • UI設計
  • システム構造設計
  • プログラム構造設計

実施

  • セキュリティ設計 / 構築手順書の整備
  • システム領域
    • 要件:セキュリティ実装要件、システム・セキュリティ管理要件
    • ネットワーク、サーバ機器、セキュリティ製品の構成決定
    • 構築手順書の整備
  • プログラミング領域
    • 要件:セキュリティ実装要件、アプリケーション・セキュリティ要件
    • プログラム構成の決定
    • 共通モジュール、モジュール間I/F仕様の決定
  • セキュア・プログラミング・ガイド文書の整備
    • 文書の整備
    • 開発要員の教育

構築、PG、UT

工程

  • システム基盤構築
  • プログラミング
  • プログラムテスト

実施

  • セキュア・システム基盤構築
  • セキュア・プログラミング
    • プログラム開発
    • ソースコード・レビュー(ホワイト・ボックス)
      • 専門家によるレビュー
      • ツールによるレビュー

テスト

工程

  • 結合テスト
  • システム・テスト
  • 運用テスト→移行

実施

本番前脆弱性検査

  • 専門家による脆弱性検査
  • 脆弱性検査ツール
    • プラットフォーム層診断
    • アプリケーション層診断

運用・保守

工程

・・・

実施

稼働後脆弱性検査

言語毎の留意点

C/C++

バッファ・オーバーフロー(BOF)系

OSコマンド・インジェクション

  • 実践だったら、そもそもサニタイジング・ライブラリ無いなら、
  • ユーザ入力をOSコマンドの入力にもっていくなという話だが、
  • 試験的には、徹底的にメタ文字をチェックしろとしか書いておらず、
  • 具体的に、何をチェックすればOKという話まで書かれていない。

Java

セキュリティ機構

  • サンドボックス・モデル(CASのような仕組)
    • ローカル
    • 外部
      • ネットワーク
  • セキュリティ・ポリシ
  • 設定項目
    • 署名者(signedBy)
    • コードの場所(codeBase)
    • アクセス権(permission)
  • 設定箇所
    • システム・ポリシーファイル ({java.home} 以下)
    • ユーザ・ポリシーファイル ({user.home} 以下)
  • クラスローダ
    • アクセス権を持ったクラス・オブジェクトの定義
    • 上記を統合して、クラスを実行時インストールする
      • サンドボックス・モデル
      • セキュリティ・ポリシ
  • セキュリティモデル
  • セキュリティ・マネージャ
    • セキュリティモデルを、セキュリティ・マネージャに委ねる場合。
    • System.getSecurityManager?SecurityManager?クラスを取得し、
    • security.checkXXXXメソッドでチェックする。
  • アクセス・コントローラ
    • 特定のセキュリティモデルを使用する場合、
    • XXXXPermissionクラスをnewし、
    • AccessController?.checkPermissionメソッドでチェックする。

レース・コンディション

  • 変数
    主に、Instance変数ではない、
    static変数により競合が発生する。
  • RDBMSレコード
    仮予約などの機構で競合し、
    他人の予約を参照できてしまう。

その他

  • 公開不要なメソッド、メンバ変数は、Publicではなく、Privateに設定
  • 不要な、setter / getterは、Interfaceに定義しない
    (そして、ユーザはClassではなくInterfaceを利用)。
  • 継承の末端Classにはfinalを付与

ECMAScript

留意点

グローバル変数でvarを省略しない
(本来、別々の変数が同じ値になったりする)。

その他

  • Cookieを使用可能。
  • Ajax
    • クライアント側ライブラリとしてXMLHttpRequest?を使う。
    • データ・フォーマットとしては主にJSONを使う。
      • eval()は危険なので、JSON.parse()を使用する。

セキュリティ規格・基準

ISO/IEC 15408

PCI DSS

ASVS

OWASP の ASVS

  • ASVS : Application Security Verification Standard
  • アプリケーションセキュリティ検証標準

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-01-15 (水) 10:33:59 (2d)