「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>OAuth 2.0 Threat Model and Security Considerations]]

* 目次 [#g74fa095]
#contents

*概要 [#l9cda007]
OAuth 2.0 Threat Model and Security ConsiderationsのRoleに着目したセキュリティに関する考慮事項。

*Client [#ef02f106]
Clientに対する攻撃

**client_secretの入手 [#he26ebe9]
***影響 [#f31879b2]
-Authorization Serverのクライアント認証のバイパスによるアクセストークン・リクエストが可能になる。

--Client Credentialsグラント種別によるアクセストークン・リクエスト。
--リプレイ攻撃によるアクセストークン・リクエスト。
---Authorization Codeグラント種別のcodeによるaccess_tokenの取得
---refresh_tokenによるaccess_token取得

-access_tokenの漏洩により、~
Resource Ownerの、そのscopeのリソースにアクセス可能になる。

***攻撃 [#re7b0c76]
-ソースコード(リポジトリ)またはバイナリから取得
-インストールされた(デプロイ済み)クライアントから取得
--web site (web server)
--device (native application)

***対策 [#h5cf70d2]
-ソースコード(リポジトリ)またはバイナリから取得~
下記のインストール固有のclient_secretを使用する。

-インストールされた(デプロイ済み)クライアントから取得
--Webサーバ~
システムのセキュリティ対策を実施する。
--ネイティブアプリ~
安全なローカルストレージに保存

-パブリック・クライアント
--脆弱 or 悪意のあるパブリック・クライアントに公開しない。
--パブリック・クライアントの自動認可を許可しない(ユーザの同意を要求する)。

-client_secret取り消し処理の実装。

**refresh_tokenの入手 [#hf690590]

***影響 [#q32f5f26]
-refresh_tokenを用いたアクセストークン・リクエストが可能になる。~
(access_token, refresh_tokenの開示)
-ただし、[[client_secret>#he26ebe9]]も必要。

***攻撃 [#x0940232]
-Web applicationから
-device (native application)
--ファイルシステムから
--deviceを盗難してから
--deviceを複製してから

***対策 [#re6dbcc8]
-上記から取得されないようにする。
-refresh_tokenのローテーション
-ユーザやデバイスを特定できる場合、
--refresh_token取り消し処理の実装。
--[[client_secret>#he26ebe9]]取り消し処理の実装。

-device (native application)の場合、
--秘密を安全な記憶域に保管する。
--デバイスロックを使用する。
--トークンにデバイス識別子を同梱

-client_idにトークンをバインド(取り消し処理)

**access_tokenの入手 [#a1503bb7]
***影響 [#p9ed9279]
そのスコープのリソースにアクセス可能になる。

***攻撃 [#dd9400d4]
[[refresh_tokenの入手と同じ攻撃>#x0940232]]。

***対策 [#oaf650d4]
-有効期間を短くする。
-スコープを制限する。
-一時メモリやプライベート・メモリに保持する。
-その他、[[refresh_tokenの入手と同じ対策>#re6dbcc8]]。

**組込ブラウザの利用によるフィッシング [#d3b27ac8]
***影響 [#p3666314]
-ユーザ・アカウントを含めたあらゆる情報が取得され、
-それが悪用される可能性がある。

***攻撃 [#v7eba959]
ブラウザによるあらゆる情報のフィッシング

***対策 [#dacdd1ee]
clientタイプの検証(例えば、GoogleはWebViewをブロックしている)

**オープンリダイレクタ [#o8844619]
登録があるので、Client側にもあるが、~
[[Authorization ServerのAuthorization Endpoint>#mb0f0219]]側を参照。

*Authorization Endpoint (Authorization Server) [#eaff28b5]
Authorization ServerのAuthorization Endpointに対する攻撃

**偽造Authorization Serverによるフィッシング [#e5716621]

***影響 [#v6a2fe62]
-実装側ではなく、利用者側の問題だが、
-誘導されるとユーザ・アカウントのフィッシングされ、なんでもできるようになる。

***攻撃 [#i6228cf9]
-偽造Clientのスターターで、誤った、偽造Authorization Serverに飛ぶ。
-偽造Authorization Serverによりユーザ・アカウントがフィッシングされる。

***対策 [#pa0bb6ea]
-SSL/TLS(サーバ証明)の利用
-ユーザの教育(偽造Authorization Serverの識別)

**悪意のあるClientに大きなアクセス権を与えてしまう [#u4ee57c0]
***影響 [#l39ca2ca]
悪意のあるClientが、不要に大きなscopeを持ったトークンを取得できる。

***攻撃 [#lfd61396]
-パブリック・クライアントが登録される。
-悪意のあるClientのスターターを起動させる。
-不用意に大きなscopeを要求する。

***対策 [#s6dcb449]
-client_idに対して
--認可画面を表示する(promptパラメタによらず)。
--許可するscopeをチェックする。

-ClientのTypeよって許可するscopeをチェックする。
--code : 認可画面を表示。
--token : (通常、)認可画面が表示しない。

**悪意のあるClientに既存ログイン・セッションで権限を与えてしまう [#t0fc9494]
***影響 [#o109fdf9]
ログイン・セッションが生きている場合、~
ログイン画面、認可画面、なにも表示されずに権限を与える。

***攻撃 [#wa40aec0]
-パブリック・クライアントが登録される。
-悪意のあるClientのスターターを起動させる。

***対策 [#xc1ef149]
-自動再認証の抑止。
-自動再認証によって得られたアクセストークンの範囲の制限。

**オープンリダイレクタ [#mb0f0219]
***影響 [#l0449bd3]
codeや、access_tokenの入手に繋がる。

-code : Authorization Codeグラント種別~
codeは、実装によるが[[client_secret>#he26ebe9]]も必要。

-access_token : Implicitグラント種別~
[[access_tokenは、そのまま利用可能なので影響度が大きい。>#a1503bb7]]

***攻撃 [#hbcafb5a]
redirect_uriのインジェクションで攻撃者のサイトに誘導。

***対策 [#yc51a4f8]
-redirect_uriのフルパス登録
-redirect_uriのフルパス検証

*Token Endpoint (Authorization Server) [#c71ce08a]
Authorization ServerのToken Endpointに対する攻撃

**access_tokenの盗聴 [#z740f86b]
***影響 [#ic513655]
影響は、[[コチラ>#a1503bb7]]と同じ。

***攻撃 [#oca8c65a]
盗聴

***対策 [#ff6fbc1d]
-SSL/TLSの利用

-SSL/TLSの利用できない場合。
--有効期間を短くする。
--スコープを制限する。

**DBからaccess_tokenを盗難 [#q4548fa9]
***影響 [#q1b21783]
すべての[[access_tokenの開示>#a1503bb7]]

***攻撃 [#e1a0cd43]
-データベースへのアクセス権を取得
-SQLインジェクション攻撃

***対策 [#me5f0e23]
-システムのセキュリティ対策を実施
-標準のSQLインジェクション対策を実施
-access_tokenハッシュのみを格納

**DBからclient_secretを盗難 [#w147d517]
***影響 [#ub531f6c]
すべての[[client_id / client_secretの開示>#f31879b2]]

***攻撃 [#g6911933]
-データベースへのアクセス権を取得
-SQLインジェクション攻撃

***対策 [#k9db948e]
-システムのセキュリティ対策を実施
-標準のSQLインジェクション対策を実施

**client_secretのオンライン推測 [#w016901a]
***影響 [#i9e52064]
単一の[[client_id / client_secretの開示>#f31879b2]]

***攻撃 [#d451391d]
有効な client_id / client_secretのオンライン推測

***対策 [#v4adde7e]
-client_secretに高いエントロピーを使用
-[[強力なクライアント認証>JWT bearer token authorizationグラント種別]]
-(クライアント認証の)アカウント・ロック

**client_id, client_secretの盗聴 [#b6500536]
***影響 [#ic513655]
影響は、[[コチラ>#f31879b2]]と同じ。

***攻撃 [#oca8c65a]
盗聴

***対策 [#ff6fbc1d]
-SSL/TLSを利用する。
-平文認証を使用しない代替認証を使用する。

----
Tags: [[:認証基盤]], [[:クレームベース認証]], [[:OAuth]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS