ざっくりセキュリティ・バイ・デザイン

## 原典

https://www.ipa.go.jp/files/000100451.pdf

この↑資料自体、もともと簡潔にまとまっていてすごくわかりやすいです。
ただ、開発メンバー全員が全てに目を通すのものコストがかかるので、
かいつまんで大枠どんなことが書かれているのかを以下にまとめました。

-------

## セキュリティ・バイ・デザイン is 何？

> 「情報セキュリティを企画、設計段階から組み込むための⽅策」
> 開発プロセスの早い段階からセキュリティを考慮すること

## メリット is 何？

> 後付けでセキュリティ機能を追加したり、出荷直前になってセキュリティツールを実⾏していては、⼿戻りが多発したり、結果的に開発コストが多くかかってしまう可能性がある。
開発の早い段階でセキュリティ対策を⾏うことで、⼿戻りが少なく、コスト削減に繋がり、保守性の良いシステム・ソフトウェアの作成につながる。

## 何から始めれば良いか

**OWASP SAMMの 「設計」 をやれば良い**

- OWASP SAMM 2.0　とは
    - ソフトウェアセキュリティ対策のための戦略の策定・実施を⽀援するフレームワークである。


## OWASP SAMM 「設計」

以下の3つからなる

- 1.脅威分析(Threat Assessment)
    - 何から守るべきか明らかにする
    - リスクの低減ができる
- 2.セキュリティ要件(Security Requirements)
    - ソフトウェア⾃⾝のセキュアな動作を定義する。
    - 要件の種類
        - システムの機能に関する要件
        - 可⽤性
        - 保守性
        - 性能
        - etc..
- 3.セキュリティアーキテクチャ(Security Architecture)
    - プラットフォームの提供元が推奨しているアーキテクチャをカスタマイズしつつ利⽤

## 1.脅威分析

- SAMM には実施⼿順が具体的に明記されていない。
- ↑だから脅威分析をやるためのフレームワークがあるよ
    - OWASP Threat Modeling / Threat Modeling Process
    - STRIDE
    - Trike
    - 攻撃ツリー
    - **EBIOS** ★今回はこれを取り上げるよ
    - 制御システムのセキュリティリスク分析ガイド（IPA）

## EBIOS

![スクリーンショット 2022-11-04 0.58.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/74301baf-ed63-1929-1219-a48e1b75c4e8.png)
5つのWS(WorkShop)をこなすだけで SAMM の「設計」をほぼカバーできてしまう

## Workshop1：スコープとセキュリティベースライン (Scope and security baseline)

- ビジネススコープの定義
    - このソフトウェアが何を⽬的にして利⽤されるのか、ツールを使⽤する業務⼿順、情報の保管場所などを明確にする
- 事業被害の洗い出しとその深刻度の設定

成果物例：

![スクリーンショット 2022-11-29 0.24.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/60c89ee9-3536-263c-218a-4b08f04768f2.png)


## Workshop2：脅威の特定 (Risk Origins)

1. 自組織にとって脅威となるような攻撃者を選定する
    - ハクティビスト【外部】
    - サイバー犯罪組織【外部】
    - 国家⽀援型組織【外部】
    - 産業スパイ【外部】
    - 個⼈犯罪者【外部】
    - 内部犯【内部】
    - サプライチェーン事業者（仕⼊れ先、下請け業者など）【内部、外部】
    - etc...
1. 上記に以下の指標を追加し、攻撃発生可能性をまとめる
    - 攻撃者が狙う攻撃⽬標 ：攻撃者が狙う資産や情報。攻撃者毎に複数存在しうる
    - 攻撃者のモチベーション：活動の活発さを４段階で評価
    - 攻撃者のリソース ：使える資⾦や⼈数、時間、技術⼒を４段階で評価

![スクリーンショット 2022-11-29 0.15.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/bc782771-0366-55bb-1248-fa11aa764154.png)

![スクリーンショット 2022-11-29 0.16.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/29795451-e99b-fd84-8a82-ae43cfe0b20c.png)


成果物例：
![スクリーンショット 2022-11-04 1.27.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/4cb1637a-d61d-9bc5-096b-133665519928.png)


## Workshop3：戦略的シナリオ (Strategic Scenarios)

### ステークホルダー

>サイバー攻撃に対する⾃組織の防御が⼗全であっても、攻撃を受けてしまうケースが存在する。機器ベンダーや顧客といった、ビジネスのサプライチェーン上におけるステークホルダーが攻撃されることにより、⾃組織が間接的な攻撃を受けてしまう場合がある。

- ステークホルダーの脅威度を算出する
![スクリーンショット 2022-11-04 1.29.43.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/8687d1f8-42df-27c5-1352-2e1d4386e3fb.png)

成果物例：
![スクリーンショット 2022-11-04 1.31.15.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/c6a6cc5d-e317-9282-10a7-c0c4ce9bdc95.png)
- 脅威度に合わせて、脅威度を3段階で割り振る

### ステークホルダーのリスク低減

- 今までの成果物を利用して、事業被害と攻撃⽬標が噛み合っているものを抽出する
- 攻撃シナリオを洗い出す
- セキュリティ対策をまとめる

成果物例：
![スクリーンショット 2022-11-04 1.36.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/819bae3e-218d-a4dd-90e6-09e633d6f32a.png)


## Workshop4：攻撃⼿順シナリオ (Operating Scenarios)

- 攻撃者が⽬的を達成するまでの⼿順をフローチャートとして図に書き起こす。
- 攻撃の⼿順を４段階に分けて記述し、それに対して実現可能性と難易度の２観点で脅威度のスコア付けを⾏う。

成果物例：

![スクリーンショット 2022-11-29 0.19.28.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/3252e858-cd95-1217-f8f1-4c97c87bba76.png)


## Workshop5：リスクへの対策 (Risk Treatment)

- リスクの評価を行う：Workshop1の成果物(深刻度)とWorkshop4の成果物(発生可能性)から計算をする
- シナリオを 深刻度 と 発生可能性 のマトリクスを配置し、自組織にとってリスクの高いシナリオを洗い出す
- リスクの高いシナリオの発生可能性を下げるように対策を立てる
    - 対策は進捗管理をすると良い

```
リスク = 事業被害の深刻度 × シナリオの発⽣可能性
```

深刻度 x 発生可能性 のマトリクス
![スクリーンショット 2022-11-29 0.30.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/0db5650e-872b-99a4-be79-7a953c21a96f.png)

進捗管理
![スクリーンショット 2022-11-29 0.33.19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/221098f4-544c-9cb5-7576-c92ddf19be2a.png)


## 2.セキュリティ要件

### セキュリティ要件の定義

- 手法は様々なやり方があるので、適切なものを選ぶべし

#### 例

- 概要図を作成する

![スクリーンショット 2022-11-29 0.45.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/24746dc8-f29f-5520-927f-a74cad6e8352.png)

- 機能要件の各項⽬に対して「C:情報流出しそうか？」「I:改竄されそうか？」「A:機能停⽌しないか？」という点からセキュリティ要件を定める手法

![スクリーンショット 2022-11-29 0.46.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/71e3379e-8edf-00fe-46e0-c9c914171214.png)


- データセキュリティ、アクセス制御、トランザクションの完全性、ビジネス機能の重大度、職務分掌、稼働時間に関する期待を⽰し、それに対するセキュリティ要件を考える手法

![スクリーンショット 2022-11-29 0.50.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/316089bf-7c0d-ae32-3e1d-92e22bdfb64a.png)


### ガイドラインに準拠する

- ここではSAMM における SR2 セキュリティ要件定義の実施⽅法を取り扱う。 SR2 では機能要件以外の要素からセキュリティ要件を定義する
    - 業界毎のガイドライン
    - 法令や法的ガイドライン
    - etc...
- ガイドラインの採用は以下の条件を考える
    - 実装が可能であり、コスト効率の良いもの
    - 特定の技術やホスティング環境に依存しないもの
- ガイドラインの採用はバランスよく

![スクリーンショット 2022-11-29 0.58.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/b716365c-b9fa-5c2e-e9ee-f1c76ffd9975.png)

- OWASP ASVS がおすすめ

https://www.saj.or.jp/documents/NEWS/pr/20200903_OWASP_ASVS4.0-ja.pdf

### 対応するセキュリティ要件の決定

- 全て対応するのは難しい
- 優先度を決めて見える化する

![スクリーンショット 2022-11-29 1.03.14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/ca92d2b8-06d3-5a10-b73f-67840247d200.png)

### 決定して終わりじゃない。随時ブラッシュアップする

- 設計⼯程でセキュリティ要件をブラッシュアップする 
- 開発プロセス全体でセキュリティ要件の実装状況をチェックする仕組みを作る

## 3.セキュリティアーキテクチャ

### セキュリティアーキテクチャ is 何?

> IT 製品において、脅威に対抗するセキュリティ機能そのものを安全に実装するための、設計⽅針・プログラムの構造・しくみのこと

### 何をするの?

1. 設計作業に⼊る前にセキュリティ原則を記述したリストを作成する
    - リストに記述する原則は OWASP SAMM、ASVS や情報セキュリティの 3 要素 (機
密性、完全性、可⽤性)、業界毎のガイドラインを参照して定義する
2. ツールや技術の選定
    - 共通機能はSAMMではサードパーティライブラリを使うことが推奨されている
        - ただし、出自に注意する
        - Black Duck などを用いれば、サードパーティ製のセキュリティや品質などの管理が行える



## その他

## シフトレフト

![スクリーンショット 2022-11-29 1.28.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/34a846a1-d425-05b0-269b-65190a1343c1.png)

### シフトレフト is 何？

>安全なものを開発するための現状把握や振り返り、対策へのフィードバック、改善を⾏うプロセスのこと

### メリット is 何？

>これまで後⼯程で⾏っていたセキュリティに関する問題について発⽣原因まで遡り、その発⽣原因に対して根本的な解決を⾏うことで、従来よりも早い段階にセキュリティ対策を組み込むことができるというものである。

### 勘違いしないでね

>「動的な脆弱性スキャンを何回もかけること」⾃体をシフトレフトであると⽿にするが、これは⼿段であってシフトレフトの本質とは少し異なる。

### 例

> ユーザ企業側の受け⼊れテスト時に、重⼤な脆弱性がたくさん出て、⼤規模なソースコードの変更や、OSS のバージョンアップが必要になった。

- ↑こうした問題が発生した場合に、 **根本解決** として、教育の実施、セキュリティスキャンの自動実施をする

![スクリーンショット 2022-11-29 1.34.22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/632997/892c52e3-c482-1b04-8179-1e78a3fd8770.png)