「マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
目次 †
概要 †
OAuth 2.0 Threat Model and Security ConsiderationsのRoleに着目した脅威モデル。
Client †
Clientに対する攻撃
client_secretの入手 †
影響 †
- Authorization Serverのクライアント認証のバイパスによるアクセストークン・リクエストが可能になる。
- Client Credentialsグラント種別によるアクセストークン・リクエスト。
- リプレイ攻撃によるアクセストークン・リクエスト。
- Authorization Codeグラント種別のcodeによるaccess_tokenの取得
- refresh_tokenによるaccess_token取得
- access_tokenの漏洩により、
Resource Ownerの、そのscopeのリソースにアクセス可能になる。
攻撃 †
- ソースコード(リポジトリ)またはバイナリから取得
- インストール(デプロイ済みクライアント)から取得
- web site (web server)
- device (native application)
対策 †
- ソースコード(リポジトリ)またはバイナリから取得
下記のインストール固有のclient_secretを使用する。
- インストール(デプロイ済みクライアント)から取得
- Webサーバ
システムのセキュリティ対策を実施する。
- ネイティブアプリ
安全なローカル・ストレージに保存
- クライアント
- 脆弱 or 悪意のあるクライアントに公開しない。
- クライアントの自動認可を許可しない(ユーザの同意を要求する)。
refresh_tokenの入手 †
影響 †
- refresh_tokenを用いたアクセストークン・リクエストが可能になる。
(access_token, refresh_tokenの開示)
- ただし、client_secretも必要。
攻撃 †
- Web applicationから
- device (native application)
- ファイルシステムから
- deviceを盗難してから
- deviceを複製してから
対策 †
- 上記から取得されないようにする。
- refresh_tokenのローテーション
- ユーザやデバイスを特定できる場合、
- device (native application)の場合、
- 秘密を安全な記憶域に保管する。
- デバイスロックを使用する。
- トークンにデバイス識別子を同梱
- client_idにトークンをバインド(取り消し処理)
access_tokenの入手 †
影響 †
そのスコープのリソースにアクセス可能になる。
攻撃 †
refresh_tokenの入手と同じ攻撃。
対策 †
組込ブラウザの利用によるフィッシング †
影響 †
- ユーザ・アカウントを含めたあらゆる情報が取得され、
- それが悪用される可能性がある。
攻撃 †
ブラウザによるあらゆる情報のフィッシング
対策 †
clientタイプの検証(例えば、GoogleはWebView?をブロックしている)
オープンリダイレクタ †
登録があるので、Client側にもあるが、
Authorization ServerのAuthorization Endpoint側を参照。
Authorization Endpoint (Authorization Server) †
Authorization ServerのAuthorization Endpointに対する攻撃
偽造Authorization Serverによるフィッシング †
影響 †
- 実装側ではなく、利用者側の問題だが、
- 誘導されるとユーザ・アカウントのフィッシングされ、なんでもできるようになる。
攻撃 †
- 偽造Clientのスターターで、誤った、偽造Authorization Serverに飛ぶ。
- 偽造Authorization Serverによりユーザ・アカウントがフィッシングされる。
対策 †
- SSL/TLS(サーバ証明)の利用
- ユーザの教育(偽造Authorization Serverの識別)
悪意のあるClientに大きなアクセス権を与えてしまう †
影響 †
悪意のあるClientが、不要に大きなscopeを持ったトークンを取得できる。
攻撃 †
- クライアントが登録される。
- 悪意のあるClientのスターターを起動させる。
- 不用意に大きなscopeを要求する。
対策 †
- client_idに対して
- 認可画面を表示する(promptパラメタによらず)。
- 許可するscopeをチェックする。
- ClientのTypeよって許可するscopeをチェックする。
- code : 認可画面を表示。
- token : (通常、)認可画面が表示しない。
悪意のあるClientに既存ログイン・セッションで権限を与えてしまう †
影響 †
ログイン・セッションが生きている場合、
ログイン画面、認可画面、なにも表示されずに権限を与える。
攻撃 †
- クライアントが登録される。
- 悪意のあるClientのスターターを起動させる。
対策 †
- 自動再認証の抑止。
- 自動再認証によって得られたアクセストークンの範囲の制限。
オープンリダイレクタ †
影響 †
codeや、access_tokenの入手に繋がる。
攻撃 †
redirect_uriのインジェクションで攻撃者のサイトに誘導。
対策 †
- redirect_uriのフルパス登録
- redirect_uriのフルパス検証
Token Endpoint (Authorization Server) †
Authorization ServerのToken Endpointに対する攻撃
access_tokenの盗聴 †
影響 †
影響は、コチラと同じ。
攻撃 †
盗聴
対策 †
DBからaccess_tokenを盗難 †
影響 †
すべてのaccess_tokenの開示
攻撃 †
- データベースへのアクセス権を取得
- SQLインジェクション攻撃
対策 †
- システムのセキュリティ対策を実施
- 標準のSQLインジェクション対策を実施
- access_tokenハッシュのみを格納
DBからclient_secretを盗難 †
影響 †
すべてのclient_id / client_secretの開示
攻撃 †
- データベースへのアクセス権を取得
- SQLインジェクション攻撃
対策 †
- システムのセキュリティ対策を実施
- 標準のSQLインジェクション対策を実施
client_secretのオンライン推測 †
影響 †
単一のclient_id / client_secretの開示
攻撃 †
有効な client_id / client_secretのオンライン推測
対策 †
- client_secretに高いエントロピーを使用
- 強力なクライアント認証
- (クライアント認証の)アカウント・ロック
client_id, client_secretの盗聴 †
影響 †
影響は、コチラと同じ。
攻撃 †
盗聴
対策 †
- SSL/TLSを利用する。
- 平文認証を使用しない代替認証を使用する。
Tags: :認証基盤, :クレームベース認証, :OAuth