「[[.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
-アプリケーションセキュリティ検証標準

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS