The Journey to Stars〜未知への探求〜

好奇心の赴くままに。学んだことを中心に書いています。

  当サイトの記事には、広告・プロモーションが含まれています

<CISSP勉強メモ-ドメイン8>ソフトウェア開発セキュリティ

CISSPを勉強した際の自分用のメモです。参考程度にとどめてください<(*_ _)>

関連記事はこちら⬇︎

受験記録
ドメイン1
ドメイン2
ドメイン3
ドメイン4
ドメイン5
ドメイン6
ドメイン7

 

SDLC(software development life cycle)

ソフトウェアの開発システムを容易するための、構造化したフレームワークのこと。NIST-SP 800-34で定義されている。以下の7つのステージ(フェーズ)がある

  1. 概念の定義
  2. 機能要件の決定
  3. コントロール仕様の策定
  4. 設計レビュー
  5. コードレビュー
    -人手による手法と自動化された手法を組み合わせることも可能
    -レビュー対象のコードを書いていない開発者も参加して相互評価しなければならない
    -開発者は、1時間当たり約300行のレビューを行うことが期待されている.
  6. システムテストレビュー
  7. 保守および変更管理

CASE(Computer Aided Software Engineering)

ツールや自動化を用いてソフトウェアの開発・設計・実装を支援すること

ソフトウェアテストの手法

ミューテーションテスト

プログラムをわずかに変異させ(ミュータント)、テストで見破ることができるか、テストの品質や設計を確認する手法

ファジング

問題を起こしそうなデータをファザーというツールを使って作成してソフトウェアに入力し、その応答で脆弱性を抽出する手法

インターフェーステスト

結合テストの手法の一つ。モジュール間でのデータ引渡しが適切に行われ、個々の機能が正しく連携するかを確認するテスト

回帰テスト(リグレッションテスト)

プログラムを変更した際に、その変更が既存のプログラムに影響を与えていないを確認するためのテスト。多数のテストケースを繰り返し実行する

静的テスト

コードを実行せずに、ドキュメントやソースコードの確認によってバグや脆弱性の抽出を行う方法

動的テスト

プログラムを実行して、ソフトウェアの動作確認やバグや脆弱性の抽出を行うテスト

シンセティック(合成)モニタリング

シュミレーション用トラフィックを使い、Webサイトのパフォーマンスを監視することで、問題を抽出する手法

コードレビューの手法
Fagan検査

IBM の Michael Fagan によって開発された手法。ソフトウェア開発の様々な段階で欠陥を見つけようとする。事前に定められた第三者がドキュメントをレビューする。

計画→概要説明→準備→インスペクション→コードの修正→フォローアップのプロセスで行う

パスアラウンドレビュー

成果物をメールなどでレビュワーに送って確認してもらう方法

開発手法

ウォーターフォール

滝のように、開発の一つ一つの工程を完了してから次の段階に進む開発手法

スパイラルモデル

サブシステム機能ごとに、設計→実装→テスト→修正のサイクルを繰り返し、システム全体を作っていく開発手法

アジャイル

機能ごとに開発→リリースを繰り返す開発手法

JAD(Joint Application Development)

開発者とユーザが協同しながらシステムを開発する手法

RAD(Rapid Application Development)

プロトタイプを作成し、評価改良を繰り返しながら完成品に近づける開発手法。従来の開発モデルと比べて、開発期間を短縮できるというメリットがある

MPM(Modified Prototype Model)

改良プロトタイプモデル。基本的な機能を作り、その上でユーザのフィードバックを受けて、機能を拡張していく開発手法

成熟度モデル

CMMI(Capability Maturity Model Integration)レベル

主にソフトウェア開発における組織の成熟度を測る指標

  1. 初期 Initial
  2. 管理された Managed
  3. 定義された Defined
  4. 定量的に管理された Quantitavely Managed
  5. 最適化された Optimizing
IDEALモデル

ソフトウェアプロセス改善のモデル

  1. 開始 Initiationg
  2. 診断 Diagnosing
  3. 確立 Establishing
  4. 行動 Acting
  5. 学習 Leveraging

ソフトウェアの脅威モデリング

ソフトウェアに潜む脆弱性を事前に抽出すること

オブジェクト指向プログラミング(Object-Oriented-Design)

特定の構造と動作を行う「オブジェクト」を組み合わせてソフトウェアを作るという考え方。オブジェクト指向では、高凝集(特定の機能に責任を持ち、正しくまとまっていること)•疎結合(低結合)が望ましい。基本コンセプトに、カプセル化ポリモーフィズム、継承がある

データベースマネジメント

データベーステーブルの次数

テーブル内の属性の数

ロストアップデート

複数のユーザが同時にアクセスすることで更新したはずのデータが失われてしまうこと

ダーティーリード

トランザクションが更新されている最中に、別のデータベースからデータを読み込めてしまう現象のこと

ACID原則

トランザクションにおいて必要とされる以下の4つの要素の頭文字をとったもの

  • 原子性 (Atomicity)-トランザクションの処理は実行されるか、されないかのどちらかであることが保証される性質
  • 一貫性 (Consistency)-一定のルールに従って処理されるという性質
  • 独立性(Isolation)-トランザクションは互いに独立して行われるという性質
  • 永続性(Durabirity)-一度コミットされたトランザクションは永続的にデータベースに記録されるという性質