「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
OAuth 2.0を実装するクライアントおよびサーバーの
セキュリティ要件およびその他の推奨事項について説明
詳細 †
クレデンシャル漏洩 †
Redirect URI 検証 †
完全一致でない場合、漏れる。
- オープンリダイレクタ
部分一致ではQueryString?のReturnURL等を悪用される事がある。
- 攻撃者のPublicクライアントへクレデンシャル送る。
- Authorization Codeであればcodeを盗むことができる。
- Implicitであれば直接Tokenを盗むことができる。
- 推奨事項
- Redirect URIの完全一致
- 追加の推奨事項
HTTPリファラからのcode漏洩 †
- response_mode=queryの場合、HTTPリファラからのcode漏洩
- response_mode=fragmentが既定のモノはqueryに変更できないので漏れない。
- 対策
- HTMLリンク属性「rel="noreferrer"」の使用
- "referrer"メタリンク属性の使用
- 中間ページにリダイレクト(履歴をサニタイズ)
ブラウザ履歴からのcode漏洩 †
ブラウザ履歴からのtoken漏洩 †
- response_mode=fragmentが既定のモノは
queryに変更できないので漏れない。
Clientが悪意のあるResourceServer?にTokenを渡す。 †
- 記名式トークン(PoP、Token Binding)
- AS(Authorization Server)のMeta Data
ミックスアップ攻撃によるcodeやtokenの漏洩 †
- ミックスアップ攻撃とは、攻撃者のプロキシが、
攻撃者のIdPを使用してログインするように書き換える攻撃らしい。
- これにより以下の様な動作になる。
- Clientは攻撃者のIdPを使用するものと考える。
- しかし、Resource Ownerは正規のIdPに対してログオンする。
- リダイレクト後、Clientは正規のIdPが発行したcodeやtokenを攻撃者のIdPに送付してしまう。
- 対策
そもそも、攻撃者のプロシキに書き換えられないようにHTTP使えという話。
- 緩和策
- issを検証する。
- IdP毎にredirect_uriを分ける。
クレデンシャル注入 †
codeの注入 †
- codeの注入の場合、攻撃者のcodeか他人のcodeかで攻撃の内容が異なる。
- 他人に自分のアカウントで処理させる。
- 自分が他人のアカウントで処理できるようにする。
- 対策
- codeとredirect_uriのバインド
- state, nonce, verifierの適切な使用
- Token BindingによるAuthorization ServerとClientのバインド
tokenの注入 †
- 攻撃者のcodeか他人のcodeかで攻撃の内容が異なる。
- 他人に自分のアカウントで処理させる。
- 自分が他人のアカウントで処理できるようにする。
- 対策
codeと違って、code → token変換処理でのガードは不可
- Token Bindingによるtoken自体への記名
- Hybrid Flow + nonce(OIDC)
- 暗号バインディング
XSRF †
Private-Use URI Scheme上書き攻撃的な。
その他の攻撃 †
...。
参考 †
Tags: :IT国際標準, :認証基盤, :クレームベース認証, :OAuth