• 検索結果がありません。

ソフトウェア開発

ドキュメント内 内閣官房情報セキュリティセンター(NISC) (ページ 141-146)

第6部 個別事項についての対策

6.1 調達・開発にかかわる情報セキュリティ対策

6.1.3 ソフトウェア開発

趣旨(必要性)

ソフトウェアを開発する際には、効果的なセキュリティ対策を実現するため、当該 ソフトウェアが運用される際に関連する情報資産に対して想定される脅威を分析し、そ の分析に基づいて脅威から情報資産を保護するためのセキュリティ機能(真正確認、ア クセス制御、権限管理、証跡管理等)及びその管理機能を適切にソフトウェアに組み込 む必要がある。 

加えて、開発するソフトウェアの処理に対するセキュリティホールの混入(設計及 びコーディングのミス等によりセキュリティホールが埋め込まれてしまうこと、不正な コードが開発者により意図的に埋め込まれること等)についての防止対策も必要となる。 

これらのことを勘案し、本項では、ソフトウェアを開発する際の対策基準を定める。 

遵守事項

(1) ソフトウェア開発体制の確立時 

【基本遵守事項】

(a) 情報システムセキュリティ責任者は、ソフトウェア開発について、セキュリテ ィにかかわる対策事項(本項(2)から(5)の遵守事項)を満たすことが可能な開 発体制の確保を、情報システムを統括する責任者に求めること。 

解説:情報システムを統括する責任者が確立した体制が、セキュリティ維持の 側面からも実施可能な開発体制(人員、機器、予算等)となるように求 める事項である。

なお、「情報システムを統括する責任者」とは、情報システムのライフサ イクルの全般にわたって情報システムの開発・運用等に責任を持ち、そ の責務を全うするために人員、機器、予算等の資源を確保する者を想定 している。

(b) 情報システムセキュリティ責任者は、ソフトウェア開発を外部委託する場合に は、委託先が実施すべき対策事項(本項(2)から(5)の遵守事項)の中から必要 な事項を選択し、当該対策事項が実質的に担保されるよう、委託先に実施につ いて保証させること。 

解説:ソフトウェア開発を委託先に行わせる場合には、ソフトウェア開発を実 施する者に実施の責任を負わせるセキュリティにかかわる要件を選択し、

それを委託先に保証させることを求める事項である。「委託先に実施につ いて保証させる」手段は、契約(付随する確認書等を含む。)によること となる。

(2) ソフトウェア開発の開始時 

【基本遵守事項】

(a) 情報システムセキュリティ責任者は、ソフトウェアの開発工程における情報セ キュリティに関連する開発手順及び環境について定めること。 

解説:ソフトウェア開発にかかわる情報資産を保護するための手順及び環境を 定めることを求める事項である。「手順」とは、例えば、仕様書、ソース コード等の成果物に対してソフトウェアのライフサイクル全般にわたっ て一貫性を確保及び維持するための構成管理の手順及び利用するツール を指し、「環境」とは、例えば、ドキュメント、ソースコードに対するア クセス権、開発に利用する電子計算機の設置場所、アクセス制御の方法 等を指す。

なお、ソフトウェア開発を外部委託する場合は、委託先に対するセキュ リティ要件定義の策定手順や導入時のセキュリティ評価試験手順等を整 備しておく必要がある。

(b) 情報システムセキュリティ責任者は、ソフトウェアの開発及び試験を行う情報 システムについては、情報セキュリティの観点から運用中の情報システムと分 離する必要性の有無を検討し、必要と認めたときは分離すること。 

解説:運用中の情報システムを利用してソフトウェアの開発及び試験を行うこ とにより、運用中の情報システムに悪影響が及ぶことを回避することを 求める事項である。

(3) ソフトウェアの設計時 

【基本遵守事項】

(a) 情報システムセキュリティ責任者は、開発するソフトウェアが運用される際に 関連する情報資産に対して想定されるセキュリティ脅威の分析結果、及び当該 ソフトウェアにおいて取り扱う情報の格付けに応じて、セキュリティ機能の必 要性の有無を検討し、必要と認めたときは、セキュリティ機能を適切に設計し、

設計書に明確に記述すること。 

解説:開発するソフトウェアに必要となるセキュリティ機能について、その設 計を適切に行うとともに、設計書に明確に記録することを求める事項で ある。

なお、汎用ソフトウェアをコンポーネントとして情報システムを開発す る場合はもとより、すべてを独自開発する場合であっても、外部から察 知される脅威(例えば、SQLインジェクション、バッファオーバーフ

ロー等)は存在するため、開発するソフトウェアの機能、ネットワーク の接続状況等から、想定される脅威を分析する必要がある。

(b) 情報システムセキュリティ責任者は、開発するソフトウェアが運用される際に 利用されるセキュリティ機能についての管理機能の必要性の有無を検討し、必 要と認めたときは、管理機能を適切に設計し、設計書に明確に記述すること。 

解説:「管理機能」とは、真正確認及び権限管理等のセキュリティ機能を管理す るための機能のほか、故障、事故及び障害等の発生時に行う対処及び復 旧にかかわる機能、事故発生時の証跡保全の機能等を指し、これらの必 要性をソフトウェアの設計時から検討することにより、必要がある場合 にはソフトウェアに組み込むことを求める事項である。

(c) 情報システムセキュリティ責任者は、ソフトウェアの設計について、その情報 セキュリティに関する妥当性を確認するための設計レビューの範囲及び方法 を定め、これに基づいて設計レビューを実施すること。 

解説:ソフトウェアの設計について、脆弱性の原因となる設計の不具合をなく すために、設計レビューの実施を求める事項である。

一般にソフトウェア開発における設計レビューには、①レビュー対象内 にあるエラーの発見を第一目的とし、開発責任者等が実施する確認手法

(インスペクション)、②開発担当者自身が開発関係者を集め、レビュー 対象プログラムを実行の流れに従って追跡し確認する手法(ウォークス ルー)等があり、これらを、いつ、誰が、何に対して実施するのか、と いったことを定める必要がある。

(d) 情報システムセキュリティ責任者は、開発するソフトウェアにおいて処理する データ及び入出力されるデータの情報セキュリティに関する妥当性を確認す る機能の必要性の有無を検討し、必要と認めたときは、その方法を適切に設計 し、設計書に明確に記述すること。 

解説:ソフトウェアの内部及び入出力するデータについて、処理の誤りや意図 的な改ざん等を検出するための機能、又はセキュリティホールの原因と なり得る不正な入出力データを排除する機能等を組み込むことを求める 事項である。

「データの妥当性」とは、例えば、HTMLタグやスクリプトなどとして 機能する不正な文字列や通信過程において生じたデータ誤りなど、適切 なデータ処理の障害になる情報がデータ内に含まれない状態であること を意味している。データの妥当性を確認する方法として、不正な文字列 を変換し、又は削除する機能(いわゆるサニタイジング)の付加、チェ ックデジット(検査数字)による処理の正当性を確認する機能の付加等 がある。

(e) 情報システムセキュリティ責任者は、開発するソフトウェアに重要なセキュリ ティ要件がある場合には、これを実現するセキュリティ機能の設計について第 三者機関によるセキュリティ設計仕様書(ST:Security Target)の ST 評価・

ST 確認を受けること。ただし、当該ソフトウェアを要素として含む情報システ

ムについてセキュリティ設計仕様書の ST 評価・ST 確認を受ける場合、又はソ フトウェアを更改し、若しくは開発中に仕様変更が発生した場合であって、見 直し後のセキュリティ設計仕様書において重要なセキュリティ要件の変更が 軽微であると認めたときは、この限りでない。 

解説:重要なセキュリティ要件があるソフトウェアについては、セキュリティ 機能が確実に実装されることを目的として、ISO/IEC 15408に基づきセ キュリティ設計仕様書のST評価・ST確認を行うことを求める事項であ る。

「ST 評価・ST確認を受けること」とは、ST評価・ST確認がなされた 状態になることを意味し、具体的な手続としては、申請と確認書入手が なされることである。ソフトウェアの開発が終了するまでにセキュリテ ィ設計仕様書について、ST 評価・ST 確認済みとなっている必要がある が、セキュリティ設計仕様が適切であると判断できた上で設計段階から 開発段階に移るべきであることから、申請行為は設計段階のうちに行わ れていることが通常の手順である。

なお、ソフトウェア開発を外部委託する場合には、契約時に条件として 含め納品までにST評価・ST確認を受けさせることになる。

(4) ソフトウェアの作成時 

【基本遵守事項】

(a) 情報システムセキュリティ責任者は、ソフトウェア開発者が作成したソースコ ードについて、不必要なアクセスから保護するとともに、バックアップを取得 すること。 

解説:ソフトウェア開発者が悪意を持って脆弱性を持つソースコードを組み込 んでしまうことを防ぐための変更管理や、ソースコードが流出すること を防ぐための閲覧制限のためのアクセス制御、ソースコードの滅失及び き損等に備えたバックアップの取得等を求める事項である。

(b) 情報システムセキュリティ責任者は、情報セキュリティの観点からコーディン グに関する規定を整備すること。 

解説:ソフトウェア開発者が意図せずに脆弱性の存在するソフトウェアを作成 してしまわないように、ソフトウェア開発者が実施するコーディングに 関する規定を定めるように求める事項である。

「コーディングに関する規定」とは、コードの可読性の向上や記述ミス の軽減のため、ソフトウェア開発担当者間のコードの記述スタイルのガ イドラインとして、使用を控える構文、使用禁止語等を定めたいわゆる コーディング規約に相当する規定を指す。例えば、バッファオーバーフ ローによる情報の改ざんを防ぐために、データを更新する処理を実行す る場合には、そのデータ量が適正であることを確認する処理を付加する ことを義務付ける等の規定が挙げられる。

【強化遵守事項】

ドキュメント内 内閣官房情報セキュリティセンター(NISC) (ページ 141-146)