SIGSTAのみなさま
DNVGLの松並です。STRIDEをちゃんと理解しようと思いまして、
MSのThreat Modeling Toolを使ってみているのですが理解ができないところがありまして、
ご存知の方がいらっしゃるかと思いましてPOSTしてみます。
(https://docs.microsoft.com/ja-jp/azure/security/azure-security-threat-modeling-tool)
添付の図のように、Trust Boundary(PC)の中にProcess(API)とData Store(DATABASE)を
設置しまして、Data Flow(USERDATA)でつないでみました。
これらの要素はTrust Boundary(PC)内に閉じているので、脅威(攻撃)は想定しないものだと
(Trust BoundaryをまたぐData Flowのところに脅威(攻撃)があると考えるものだと)思って
いたのですが★、Threat Modeling Toolは添付の図のように2つの脅威(攻撃)を生成します。
ID11: Spoofing of Destination Data Store Generic Data Store
DATABASE may be spoofed by an attacker and this may lead to data being written to the attacker's
target instead of DATABASE. Consider using a standard authentication mechanism to identify the
destination data store.
[ご参考:Google翻訳] データベースが攻撃者によって偽装されている可能性があり、データベース
の代わりに攻撃者の標的にデータが書き込まれる可能性があります。 宛先データストアを識別する
ために標準の認証メカニズムを使用することを検討してください。
ID12: Potential Excessive Resource Consumption for Generic Process or Generic Data Store
Does API or DATABASE take explicit steps to control resource consumption? Resource consumption
attacks can be hard to deal with, and there are times that it makes sense to let the OS do the job.
Be careful that your resource requests don't deadlock, and that they do timeout.
[ご参考:Google翻訳] APIまたはデータベースは、リソース消費を制御する明示的な手順を講じますか?
リソース消費の攻撃は扱いにくい場合があり、OSにその仕事をさせることが理にかなっていることも
あります。 リソース要求がデッドロックしないように注意し、タイムアウトが発生するようにして
ください。
知りたいことは、なぜTrust Boundary内に閉じているData Flow(USERDATA)において、
脅威(攻撃)が導出されているのか?ということです。★部分の認識が誤っているのかもしれない
と思ったりしていますが、それならばTrust Boundaryは何のために必要なのかが不明になります。
何かしらご存知のかたはいらっしゃますか?
----
松並 勝 <masaru.m...@dnvgl.com>
機能安全部 / サイバーセキュリティグループ
DNV GL - Business Assurance Japan
https://www.dnvgl.jp/assurance/
渥美様、みなさま
松並@DNVGLです。図を見やすくするためにHTMLメールにしました。HTMLメールが嫌いな方、すみません。
カーハッカーズハンドブックの例示で考える場合は、APIとDBは一つの箱になっていてデータが保存されるかどうかすら分からない状況で調査を始めるようにとの記述があります。
STRIDE分析する前にDFDを作成しますが、そのDFD作成においてまず最初にContext diagramと呼ばれる最も抽象度の高いDFDを書くべきとのことですね。↓のMS本p.110にContext diagramのことが書いてありますね。
THE SECURITY DEVELOPMENT LIFECYCLE
Context diagramの中心となるプロセスを次の段階にブレークダウンすると、下図のようにこれまで添付していたDFD(Level-0 DFD)になります。(この図ではBoundaryをLineにしてみました。カーハッカーズ・ハンドブックでは↑のMS本でいうContext diagramをLevel-0と表現しているようですね。)ただこれも分析手順の話ですし、疑問点はSTRIDEによる脅威の導出方法なので、これはちょっと別の話です。
> 脅威導出がどういう実装になっているのか興味があります。
ですよね。ここがわたしの知りたいところでこのPOSTの起点になっている疑問です。一応、↑の本p.119には次のような記載があります。DFD内の個々の要素のそれぞれに、要素タイプに応じて検討すべき脅威をXで示してありまして、機械的手順により脅威を導出できるというものです。
ただTable 9-5の使い方について、本書のこの後を読みましてもtrust boundaryにより脅威の導出をどのように制御するかといった記載はありません。ですがTMTはtrust boundaryの有無により導出する脅威に差があります。。。
SIGSTAのTM本勉強会で勉強した↓には、↑のTable 9-5をSTRIDE-per-Elementと呼んでいまして、さらに別のSTRIDE-per-Interactionというのがありまして、もしかするとTMTはこっちのほうを実装しているのかなと想像したり。。。
http://as.wiley.com/WileyCDA/WileyTitle/productCd-1118809998.html
買いました!カーハッカーズ・ハンドブック1章 脅威モデルの理解に書かれた脅威分析の手法では、DFDやDREADは使っているもののSTRIDEは使っていませんね。Expertなハッカーならシステム構成をDFDで見れば、湧き水のように脅威を思いつくでしょうからSTRIDEは要らないんでしょうJ
松並@DNVGL
-----Original Message-----
From: sig...@googlegroups.com [mailto:sig...@googlegroups.com] On Behalf Of Kiyotaka ATSUMI
Sent: Monday, July 2, 2018 1:03 PM
To: Matsunami, Masaru <Masaru.M...@dnvgl.com>; sig...@googlegroups.com
Cc: kiyotak...@lac.co.jp
Subject: Re: [sigsta] STRIDE の Trust Boundry 内の脅威(攻撃)?
# This mail may have signature.asc as a PGP e-signature.
# このメールのsignature.ascはPGPによる電子署名です。
松波様
株式会社ラックの渥美です。
--
このメールは Google グループのグループ「脅威分析研究会 SIGSTA」の登録者に送られています。
このグループから退会し、グループからのメールの配信を停止するには sigsta+un...@googlegroups.com にメールを送信してください。
その他のオプションについては、https://groups.google.com/d/optout にアクセスしてください。
松並様、みなさま
松田@アルパインです。HTMLメールは歓迎します(文字化けしないので)。
TMT2016を試用してみました。
Trust Boundaryを定義しない場合、識別される脅威は4つ。
そのうちID34、ID35は松並さんが疑問に思われたものです(DATABASEのなりすまし、API/DATABASEに対する負荷攻撃)。
つまりこの2つはTrust Boundaryに関係なく、Elementとその相互の関係から識別される脅威のようですね。
Trust Boundaryがないと、信用できるものがないのですべての脅威が識別されるかというとそうではないようです。
ということは、TMTの脅威識別はSTRIDE per-ElementやSTRIDE per-Interactionのようなテーブル、Element間の相互作用(Data Flow)に加えてTrust BoundaryとElementの関係も使っていることは間違いなさそうですね。でも、ID34のDATABASEのなりすまし(Spoofing)はSTRIDE per-ElementでもSTRIDE per-Interactionでも導出できなさそう(Data StoreはSに☓がついていない)なので、何か秘密のロジックがありそうです。
==========================================
Hitoki Matsuda
Advanced Development DEPT.
ALPINE ELECTRONICS, INC.
20-1, Yoshima Industrial Park
Iwaki, Fukushima, Japan
970-1144
email hit-m...@apn.alpine.co.jp
Phone 0246-36-4111 ext:3770
============================================
rom: sig...@googlegroups.com [mailto:sig...@googlegroups.com]
On Behalf Of Matsunami, Masaru
Sent: Monday, July 2, 2018 6:42 PM
To: Kiyotaka ATSUMI <kiyotak...@lac.co.jp>; sig...@googlegroups.com
Subject: RE: [sigsta] STRIDE の Trust Boundry
内の脅威(攻撃)?
渥美様、みなさま
松並@DNVGLです。図を見やすくするためにHTMLメールにしました。HTMLメールが嫌いな方、すみません。
カーハッカーズハンドブックの例示で考える場合は、APIとDBは一つの箱になっていてデータが保存されるかどうかすら分からない状況で調査を始めるようにとの記述があります。
STRIDE分析する前にDFDを作成しますが、そのDFD作成においてまず最初にContext diagramと呼ばれる最も抽象度の高いDFDを書くべきとのことですね。↓のMS本p.110にContext diagramのことが書いてありますね。
THE SECURITY DEVELOPMENT LIFECYCLE
Context diagramの中心となるプロセスを次の段階にブレークダウンすると、下図のようにこれまで添付していたDFD(Level-0 DFD)になります。(この図ではBoundaryをLineにしてみました。カーハッカーズ・ハンドブックでは↑のMS本でいうContext diagramをLevel-0と表現しているようですね。)ただこれも分析手順の話ですし、疑問点はSTRIDEによる脅威の導出方法なので、これはちょっと別の話です。
> 脅威導出がどういう実装になっているのか興味があります。
ですよね。ここがわたしの知りたいところでこのPOSTの起点になっている疑問です。一応、↑の本p.119には次のような記載があります。DFD内の個々の要素のそれぞれに、要素タイプに応じて検討すべき脅威をXで示してありまして、機械的手順により脅威を導出できるというものです。
--
このメールは Google
グループのグループ「脅威分析研究会 SIGSTA」に登録しているユーザーに送られています。
このグループから退会し、グループからのメールの配信を停止するには sigsta+un...@googlegroups.com
にメールを送信してください。
その他のオプションについては https://groups.google.com/d/optout
にアクセスしてください。
松田様、みなさま
松並@DNVGLです。ご反応いただいてありがとうございます!(なんか変な日本語ですが。)
つまりこの2つはTrust Boundaryに関係なく、Elementとその相互の関係から識別される脅威のようですね。
そのような動きですよね。Templateにthreat generation rule(includeとかexcludeとか)が記述されているようなのですが、Templateの記述を覗いてみたら結構複雑でして、もしかすると単にTemplateの記述ミスの可能性もゼロではありません。ということで↓のようにMSのThreat Modeling ToolのTeamに問い合わせメールしてみております。T2(ターミネータ?)という方が調査してくれるそうです。返事がありましたら共有いたします。
Hello Matsunami,
Thank you for contacting Threat Modeling Tool Support Team. We have created the VSTS Task# 2669155 to track this issue. Your issue is escalated with standard urgency. T2 will begin investigation as soon as possible, but no later than 2-3 business days.
(FILTERED)
Security Services Operations Center
From: Matsunami, Masaru <Masaru.M...@dnvgl.com>
Sent: Monday, July 2, 2018 3:56 AM
To: Threat Modeling Tool External Support <tmtext...@microsoft.com>
Subject: Why does the threat modeling tool generates threats inside of a trust boundary?
Dear Threat Modeling Tool team,
I tried to post the following question to the https://social.msdn.microsoft.com/Forums/en-US/home?forum=sdlprocess, but an error ‘Body text cannot contain images or links until we are able to verify your account.’ occurred. So I am sending this email to you.
I'm interested in a threat generating rule of the Microsoft Threat Modeling Tool(TMT). I'm using it with version 7.0.40724.1.
I drawed very simple diagram, an attached PNG file, in order to understand the role of a trust boundary in TMT’s threat generation. In this diagram, PROC and DB are placed inside of the same trust boundary, as a machine perimeter, and both have no connection to outside the boundary. So I think both are safe, and the TMT doesn't generate any threats. But it generates two threats as shown in the PNG.
Of course If I put another trust boundary between the PROC and the DB, TMT generates more threats. It makes sense because new trust boundary means the gap of the privilege level between them.
What I want to know is the reason why TMT generates threats on the DATAFLOW, although the PROC and the DB are placed in same privilege level.
Best regards,
Masaru Matsunami
DNV GL - Business Assurance Japan
みなさま
続報です。MSからお返事がないので催促してみたら、窓口の人が「T2チームに催促する」とお返事をもらいました。つまり進展は1か月ありませんでした。面倒な質問をしてしまったのでしょうか。。。以上、報告でした。
松並@DNVGL
みなさま
DNVGLの松並です。Microsoftから3か月前の質問に回答がありましたのでご報告します。7月にこんな質問をMicrosoftにしていました。
I'm interested in a threat generating rule of the Microsoft Threat Modeling Tool(TMT). I'm using it with version 7.0.40724.1.
I drawed very simple diagram, an attached PNG file, in order to understand the role of a trust boundary in TMT’s threat generation. In this diagram, PROC and DB are placed inside of the same trust boundary, as a machine perimeter, and both have no connection to outside the boundary. So I think both are safe, and the TMT doesn't generate any threats. But it generates two threats as shown in the PNG.
Of course If I put another trust boundary between the PROC and the DB, TMT generates more threats. It makes sense because new trust boundary means the gap of the privilege level between them.
What I want to know is the reason why TMT generates threats on the DATAFLOW, although the PROC and the DB are placed in same privilege level.
そして今朝帰ってきた回答はこちら。That’s a great question! That’s one of the current limitations of… というあたりから、Threat Modeling Toolの動きが変では?という指摘は正しかったようです。ツールのルールエンジンとルール記述文法に制約があるというのが原因らしいのですが、、、このツールの動きはよく分かりません。このツールはとても有名ですが、気を付けて使う必要があるということですね。
Hello Matsunami,
Apologies for the delay on this.
That’s a great question! That’s one of the current limitations of the rules engine and grammar in that we cannot write a rule that is triggered due to the presence (or absence) of a specific stencil type within (or outside) of a trust boundary box. The rules engine and grammar support data flow centric rules (e.g. source/ target being a specific stencil type, or flow crossing a boundary). You can see examples of rules in the template that is published in our public GitHub repo at: https://github.com/Microsoft/threat-modeling-templates/blob/master/Azure%20Cloud%20Services.tb7.
For example, on line 2070:
<GenerationFilters>
<Include>flow crosses 'SE.TB.TMCore.AzureTrustBoundary'</Include>
<Exclude>flow.23e2b6f4-fcd8-4e76-a04a-c9ff9aff4f59 is 'No'</Exclude>
</GenerationFilters>
Hope this helps,
以上、ご報告まで。
追伸:drawの過去形はdrewですね。。。