「[[.NET 開発基盤部会 Wiki>http://dotnetdevelopmentinfrastructure.osscons.jp]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>SC:試験]] --[[基礎>SC:基礎]] --[[脅威>SC:脅威]] --[[脆弱性>SC:脆弱性]] --[[対策技術>SC:対策技術]] --システム開発 --[[マネジメント>SC:マネジメント]] --[[法制度>SC:法制度]] *目次 [#t5ca6726] #contents *概要 [#l817e521] システム開発工程とセキュリティ対策 *工程毎の実施例 [#k4356275] **要件定義 [#k6c184ba] ***工程 [#zcf6cb18] ・・・ ***実施 [#iecb459e] -セキュリティ基本方針の決定 --セキュリティ目標 --セキュリティ品質管理体制 --適用準拠する[[セキュリティ規格・基準>#h12ffca2]] **方式設計 [#k75fa53c] ***工程 [#n1cea0ba] ・・・ ***実施 [#e675c7b4] -リスク分析の実施 -セキュリティ要件の決定 --セキュリティ基本要件の決定 ---セキュリティ目標 ---適用 / 準拠 基準 ---セキュリティ基本要件 --セキュリティ実装要件の決定 ---識別 / 認証 ---アクセス制御 ---データ保護(暗号化) ---セキュリティ監視 ---セキュリティ監査 ---マルウェア対策 ---DoS攻撃対策 --アプリケーション・セキュリティ要件の決定 ---開発環境のセキュリティ対策要件 ---アプリケーション特性からのセキュリティ要件 ---セキュリティ・テスト方式に関する要件 --システム・セキュリティ管理要件の決定 ---ID管理 ---鍵管理 ---パッチ管理 ---構成 / 設定 / 変更管理 ---ログ管理 ---インシデント / 問題 管理 **基本・詳細設計 [#yc37aad2] ***工程 [#bea9d5a1] -UI設計 -システム構造設計 -プログラム構造設計 ***実施 [#xdcfa983] -セキュリティ設計 / 構築手順書の整備 --システム領域 ---要件:セキュリティ実装要件、システム・セキュリティ管理要件 ---ネットワーク、サーバ機器、セキュリティ製品の構成決定 ---構築手順書の整備 --プログラミング領域 ---要件:セキュリティ実装要件、アプリケーション・セキュリティ要件 ---プログラム構成の決定 ---共通モジュール、モジュール間I/F仕様の決定 -セキュア・プログラミング・ガイド文書の整備 --文書の整備 --開発要員の教育 **構築、PG、UT [#u5b21796] ***工程 [#bdf84b24] -システム基盤構築 -プログラミング -プログラムテスト ***実施 [#dd3dbddc] -セキュア・システム基盤構築 --サーバーは「[[ホストの要塞化>SC:対策技術 - ホストの要塞化]]」 --セキュリティ製品による対策 -セキュア・プログラミング --プログラム開発 --ソースコード・レビュー(ホワイト・ボックス) ---専門家によるレビュー ---ツールによるレビュー **テスト [#x1cea273] ***工程 [#y4dfe8df] -結合テスト -システム・テスト -運用テスト→移行 ***実施 [#hc0bd75a] 本番前の[[脆弱性検査 / 診断>セキュリティ脆弱性対策ツール#i529ad67]] **運用・保守 [#l33c406e] ***工程 [#ycc893e9] ・・・ ***実施 [#t6dbee3d] 本番前の[[脆弱性検査 / 診断>セキュリティ脆弱性対策ツール#i529ad67]] *言語毎の留意点 [#z45d933e] **C/C++ [#rf2f1bf5] ***[[バッファ・オーバーフロー(BOF)系>SC:システム開発 - プログラミングによるBOF対策]] [#o65a1ed9] ***OSコマンド・インジェクション [#aaa7ebb4] -実践だったら、そもそもサニタイジング・ライブラリ無いなら、 -ユーザ入力をOSコマンドの入力にもっていくなという話だが、 -試験的には、徹底的にメタ文字をチェックしろとしか書いておらず、 -具体的に、何をチェックすればOKという話まで書かれていない。 **[[Java]] [#f3fb7afe] ***セキュリティ機構 [#u5eaeb6a] -サンドボックス・モデル([[CAS>https://techinfoofmicrosofttech.osscons.jp/index.php?%E3%82%B3%E3%83%BC%E3%83%89%E3%83%BB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%83%BB%E3%82%BB%E3%82%AD%E3%83%A5%E3%83%AA%E3%83%86%E3%82%A3]]のような仕組) --ローカル --外部 ---ネットワーク -セキュリティ・ポリシ --設定項目 ---署名者(signedBy) ---コードの場所(codeBase) ---アクセス権(permission) --設定箇所 ---システム・ポリシーファイル ({java.home} 以下) ---ユーザ・ポリシーファイル ({user.home} 以下) -クラスローダ --アクセス権を持ったクラス・オブジェクトの定義 --上記を統合して、クラスを実行時インストールする ---サンドボックス・モデル ---セキュリティ・ポリシ -セキュリティモデル --セキュリティ・マネージャ ---セキュリティモデルを、セキュリティ・マネージャに委ねる場合。 ---System.getSecurityManagerでSecurityManagerクラスを取得し、 ---security.checkXXXXメソッドでチェックする。 --アクセス・コントローラ ---特定のセキュリティモデルを使用する場合、 ---XXXXPermissionクラスをnewし、 ---AccessController.checkPermissionメソッドでチェックする。 ***レース・コンディション [#u0e28950] -変数~ 主に、Instance変数ではない、~ static変数により競合が発生する。 -RDBMSレコード~ 仮予約などの機構で競合し、~ 他人の予約を参照できてしまう。 ***その他 [#qab4aedc] -公開不要なメソッド、メンバ変数は、Publicではなく、Privateに設定 -不要な、setter / getterは、Interfaceに定義しない~ (そして、ユーザはClassではなくInterfaceを利用)。 -継承の末端Classにはfinalを付与 **[[ECMAScript]] [#z257b5bf] ***留意点 [#xf101412] グローバル変数でvarを省略しない~ (本来、別々の変数が同じ値になったりする)。 ***その他 [#j6d4deb1] -Cookieを使用可能。 -Ajax --クライアント側ライブラリとしてXMLHttpRequestを使う。 ---[[クロス ドメイン接続>https://techinfoofmicrosofttech.osscons.jp/index.php?%E3%82%AF%E3%83%AD%E3%82%B9%20%E3%83%89%E3%83%A1%E3%82%A4%E3%83%B3%E6%8E%A5%E7%B6%9A]]に注意する。 --データ・フォーマットとしては主に[[JSON>https://techinfoofmicrosofttech.osscons.jp/index.php?JSON]]を使う。 ---eval()は危険なので、JSON.parse()を使用する。 *セキュリティ規格・基準 [#h12ffca2] **[[ISO/IEC 15408>高度午前 - 技術要素 - セキュリティ#b5ad2f24]] [#k466dd81] **[[PCI DSS>高度午前 - 技術要素 - セキュリティ#f02e9313]] [#xee2ecd6] **ASVS [#x8b7c2f1] OWASP の ASVS -ASVS : Application Security Verification Standard -アプリケーションセキュリティ検証標準