「[[マイクロソフト系技術情報 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]] * 目次 [#m202f7bf] #contents *概要 [#h8c47a31] OAuth 2.0 Threat Model and Security Considerationsの~ Authorization Serverの各Endpointに適用されるセキュリティ考慮事項。 *code [#fdd9b505] **対象 [#n20003b7] codeを使用したアクセストークン・リクエスト **脅威 [#ec01e3cd] codeの不正使用(オンライン推測) **対策 [#af2ddda9] 不正使用(オンライン推測)が検出された場合、トークンを自動失効する。 *refresh_token [#tf3e1153] **対象 [#iae18d98] refresh_tokenを使用したアクセストークン・リクエスト **脅威 [#db115a06] refresh_tokenの不正使用 -refresh_tokenの漏洩/盗難 -デバイスの盗難 -脆弱なクライアント -クリック・ジャッキング攻撃 -Resource Ownerの偽装 **対策 [#t1aca042] -制限付き発行 --認可タイプ ---対話型 ---非対話型 --役割 ---Client ---Resource Server ---Resource Owner -ローテーション処理の実装 --refresh_tokenを並行して使用しようとする試みを自動的に検出して防止 --リフレッシュ要求ごとにrefresh_token値を変更する -[[失効処理の実装>OAuth 2.0 Token Revocation]] -デバイス識別~ デバイスIDにバインド -X-FRAME-OPTIONSヘッダ~ IFRAME防止によるクリックジャック攻撃の防止 *Client認証 [#u4b01da1] **対象 [#i06a6f19] -Clientの認証 -Client ( ---> Authorization Serverの各Endpoint ) **脅威 [#z01e8fcb] -脆弱なクライアント --XSS攻撃 --client_secret漏洩 -悪意のあるクライアント --codeフィッシング攻撃 --オープンリダイレクタ **対策 [#ue0d953d] クライアント認証により、Authorization Server・Resource ServerがClientを識別する。 -脆弱なClientに資格情報を発行しない。 -クライアントの自動認可を許可すべきでない。 -client_id/(client_secret/)redirect_uriを要求。 --対象 ---認可リクエスト ---アクセストークン・リクエスト --要件 ---インストール固有のclient_secretを使用する。 ---redirect_uriのフルパス登録・検証 ---取り消し可能なclient_id/client_secret -[[強力なクライアント認証>JWT bearer token authorizationグラント種別]] *End-User許可 [#z95f0c96] **対象 [#p4cf22aa] -End-UserによるClientの許可 -Client ( ---> Authorization Serverの各Endpoint ) **脅威 [#w676b11a] -脆弱なクライアント -悪意のあるクライアント **対策 [#wfa63e53] -認証・認可の自動処理でクライアント認証を要求 --client_id/(client_secret/)redirect_uri --[[強力なクライアント認証>JWT bearer token authorizationグラント種別]] -インフォームド・デシジョン --認可画面の表示 --Clientに何のscopeをどの期間許可するか? -クライアント・プロパティ検証 --Webサイト名 --アプリケーション名 -client_id/(client_secret/)redirect_uriへのバインディング --code --access_token --refresh_token *Clientセキュリティ [#eef988d2] **対象 [#w709e12f] -Clientのセキュリティ -Client ( ---> Authorization Serverの各Endpoint ) **脅威 [#jc7f8357] -脆弱なクライアントに対する攻撃 --リエンジ攻撃 --Clientの脆弱性に対する攻撃 **対策 [#ga404253] -Clientパッケージ内に資格情報を保存しない(デプロイごとに変更)。 -refresh_tokenストレージを信頼できるバックエンドにスワップ -サーバ:セキュリティ対策を実施 --システムのセキュリティ対策を実施 --標準のSQLインジェクション対策を実施 -モバイル: --デバイスロック(パスワード、PIN、指紋認証、顔認証) --安全なローカル・ストレージに保存 ---パーソナル分離ストレージ ---アプリケーション固有ストレージ -ClientはUserAgentセッションにstateパラメタを追加 *Resource Server [#le69104f] **対象 [#df0d3f91] Resource Server ( ---> Authorization Serverの各Endpoint ) **脅威 [#dafe4632] -Resource Serverからの漏洩 -偽造Resource Serverによるトークン悪用 **対策 [#ra99d42c] -Authorizationヘッダの利用 --HTTPプロキシとサーバによって認識され、特別に扱われる。 --これにより、漏洩または意図しない永続化の可能性が低減される。 -認証済みリクエストの利用~ アサーションのsubと認証済みリクエストのidを検証 -SSL/TLSを代替する署名されたリクエストの利用~ 一意に識別可能で、1回だけ処理される。 *ClientとResource Owner間のやり取り [#vb22a0b4] **対象 [#a29261fb] ユーザ操作 **脅威 [#ec012fa2] -一般ユーザ(Resource Owner)にとって、認可画面の意味が不明 --認可画面で「はい」と回答した結果を理解する専門知識を持たない。 --要求の文言に微妙な違いを見ることができない。 -エンドユーザーデバイス上でのソフトウェア脆弱性の脅威は強く、緩和も困難。 --WWWブラウザの脆弱性 --人気のあるクライアントの脆弱性 -インストールしたクライアント・ソフトウェアの使用を制限 ---一部の限定的な環境では実用的。 ---しかし、一般的な環境では実用的ではなく、~ 事実回復後のメカニズムが整備されているべき(? -自動再認証、認可画面非表示により、認証認可プロセスを隠す。 --攻撃者は、侵害されたまたは悪意のある役割上で資格情報を盗む可能性がある。 **対策 [#i19fe730] -自動再認証、認可画面非表示の問題に解決策はなく、~ UXとセキュリティ間のトレード・オフを考慮して決定する必要がある。 -デバイスにインストールしたクライアント・プロパティのアサート --検証できないプロパティを明示的に指摘 --特定のクライアントへのアクセス許可に関連するリスクをエンド・ユーザーに示す。 ---- Tags: [[:認証基盤]], [[:クレームベース認証]], [[:OAuth]]