EoPカードゲームを使った脅威モデリング

## どういうお話？
シフトレフトの実践に使える [The Elevation of Privilege Threat Modeling Card Deck](https://github.com/adamshostack/eop) を日本語化したものを [無償公開している](https://github.com/KiiCorp/eop-ja) ので、ぜひぜひ使ってみてくださいねーというお話です。

![2020-12-02_10h32_44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30239/77588628-91b5-421f-f056-c5264c36c15f.png)

## シフトレフト、超大事！
今年も、いろいろ大きめのセキュリティ事件が発生しました。

* [某教育プラットフォームに対する不正アクセス＆情報漏えい](https://piyolog.hatenadiary.jp/entry/2020/04/15/072934)
* [某オンライン口座を悪用した不正引き出し](https://piyolog.hatenadiary.jp/entry/2020/09/08/054431)

この手のインシデントが発生した際によく言われるのが「なんでそんな明らかな脆弱性を放置してたんや…」です。そんなの、システム設計の段階で気づくべきだろ、的なツッコミですね。
（そういえば昨年の [某モバイル決済サービスの不正利用](https://piyolog.hatenadiary.jp/entry/2019/07/04/065925) のときも、ものすごいツッコまれてました）

言いたいことはよくわかります。

システムリリース後に脆弱性を突かれて「わーわー」対応をするのではなく、システム設計の段階でセキュリティ対策を組み込み、潜在的な脆弱性に対処しておく。システム開発の早期の段階でセキュリティ対応することにより、リスクの低減だけではなくコスト削減にもつながる。

いわゆる「シフトレフト (Shift Left)」と呼ばれているやつですね。
「セキュリティバイデザイン (Security by Design)」と呼ばれることもあるかと思います。

うん、シフトレフト、超大事。
完全に理解した。

## シフトレフト、どうやる？

が、しかし、実際にシフトレフトを実践してみようとすると、これが結構難しい。

セキュリティインシデント発生後の分析であれば、ピンポイントで脆弱性を特定することが可能。
一方、シフトレフトの場合、セキュリティインシデント発生前に脆弱性を特定することになりますが、潜在的な脆弱性のあぶり出しとなるため、網羅的にシステム分析をやるしかない。
これ、難易度がぜんぜん違う。

うん、シフトレフト、超ムズい。
なにもわからない。

### STRIDEによる脅威モデリング

そこで色々調べてみると、STRIDEを使った脅威モデリングという良さげな枠組みを発見。
STRIDEというのは、以下に挙げた代表的な6つの脅威分類の頭文字になっており、これらの脅威と照らし合わせてシステム分析を行うことで潜在的な脆弱性をあぶり出すという手法です。

- **S: Spoofing**（なりすまし）
- **T: Tampering**（改ざん）
- **R: Repudiation**（否認）
- **I: Information Disclosure**（情報漏えい）
- **D: Denial of Service**（サービス妨害）
- **E: Elevation of Privilege**（権限昇格）

※ STRIDEの詳細は、以下の記事が詳しく解説されているのでそちらをご参照ください。
[Threat Modeling: ソフトウェアの脅威を洗い出す手法](https://qiita.com/takutoy/items/688b6b0517003f35e79a)

なるほどなるほど。
これらの観点からシステムを分析して、潜在的な脆弱性を洗い出せばよいのか。
サンキュー、シフトレフト！
今度こそ完全にりかいし… いや、ちょっと待って

例えば「なりすまし」について分析する場合、具体的にどのような検討をすればよいのか？
セキュリティに詳しい人ならさておき、あまり詳しくない人に網羅的に分析せよというのはちょっと無理ゲーなのではなかろうか？

### EoP Threat Modeling Card Game

ということでさらに調べた結果、[EoP Threat Modeling Card Deck](https://github.com/adamshostack/eop) というスグレモノを発見。
こちら、STRIDEのそれぞれの脅威分類について代表的な脅威シナリオが書かれたカードゲームでございます [^1]。

実際のカードはこんな感じ。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30239/6122e5a5-8572-1e7f-76fa-116848cdb884.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30239/61714834-f22b-5ab3-0bcb-c6a5730993f1.png) ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30239/dcc424e2-ecac-49c2-146f-1c93ef555871.png)
これはいい。
セキュリティに詳しくない人でも [^2]、カードに書かれた脅威シナリオを参考にシステム分析することで、脆弱性のあぶり出しができる。
これで勝つる！

うん、シフトレフト、実践への道が見えてきた。
チョットデキル（気がしてきたヨー）

[^1]: 同様のカードゲームとして、[OWASP](https://owasp.org/) が公開している [OWASP Cornucopia](https://owasp.org/www-project-cornucopia/) なんてのもあります。

[^2]: と書いたものの、カードに書かれた脅威の中には、セキュリティに詳しくない人にはちょっと意味が分かりにくいものがあるかもしれません。書かれている脅威の詳細は、EoPカードゲームの原作者さんが書かれた本 ([Threat Modeling: Designing for Security](https://www.amazon.co.jp/dp/B00IG71FAS/)) で解説されているので、そちらも併せて参照するとよいかも。この本、とってもいい本なんですが、日本語訳がないんですよね… (´・ω・`)

## シフトレフト、もっと楽しく！
ということで、早速こちらのカードゲームを使った脅威分析を、職場で実際に試してみました。
結果、そこそこ好感触。

しかし、以下のようなネガティブな反応も。

- 英語つらいとです…
- イメージしにくい脅威シナリオがあるとです…
- カードゲームっぽくないとです…

いずれも日本語に訳せば解決するかと思いきや、そんな簡単な話でもない模様。
さて、どうしよう？

例えば Spoofingの2 のカードに書かれたこちら。

> An attacker could squat on the random port or socket that the server normally uses

アタッカーがスクワット…
ランダムポートやソケットにスクワット…
サーバがノーマリーユージーズにスクワット…

なるほど、確かに脅威シナリオがスッと頭に入ってこないかもしれない。
これをイメージしやすく＆カードゲームっぽくするには、どうすればよいのか？

スクワット…
　スクワット… スクワット… 
　　スクワット… スクワット… スクワット…

スクワット… スクワット… スクワット… スクワット…

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30239/d60bfcfc-c601-d6af-883f-0c7392e3334d.png" width="33%">

**！！？**

そうだ。
我らが日本には、コレがありました。
コレを使えば、課題が一気に解決できそうな気がします。

そんなこんなで、圧倒的閃きをもとに、EoPカードゲームにアレンジを加えた結果がこちらです。
ご精査ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30239/d9d77358-33fe-0e5d-41ef-4840415f4dd5.png)　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30239/07ef67ab-c575-a596-29c5-30f169daf238.png)　![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/30239/8b8ef7a2-826f-bd38-48de-5b131eb04782.png)
[Elevation of Privilege 脅威モデリングカードゲーム](https://github.com/KiiCorp/eop-ja)

サンキュー、[いらすとや](https://www.irasutoya.com/)！[^5]
~~ノリで~~ 熟考の果てに魔改造をした結果、ものすごく脅威がイメージしやすくなりました。
これならいけそうです。

[^5]: 非商用利用であれば、点数に関係なくイラストの利用を無料で認めてくれているのが本当にスゴイ。一生ついていきます！

改めてこちらの版を使って職場でシフトレフト分析を実施したところ、軒並み大好評 [^3]。
頑張って全カードを日本語化＆いらすとや化した甲斐がありました（楽しい苦行でした…）

[^3]: さらにEoPカードゲームの原作者さんに「こんなの作ったよー」と連絡をしたところ、ものすごいウケました。結果、[公式サイト](https://www.threatmodelingbook.com/resources)からリンクされました（笑）

## シフトレフト、皆さんもレッツトライ！

以上、シフトレフトの実践に使える The Elevation of Privilege Threat Modeling Card Deck を日本語化してみたよー、というお話でした。

このカードゲーム、よくできている（と個人的には思っている）ので、少しでも興味を持たれた方は、騙されたと思ってぜひ一回プレイしてみてくださいませ [^4]。

うん、シフトレフト、カードゲーム [無償公開中！](https://github.com/KiiCorp/eop-ja) 
ミンナモデキル！



[^4]: カードゲームのルールなどは、カードゲームに記載されております。