「マイクロソフト系技術情報 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