OpenIDに仕掛けられやすい5つの攻撃
セキュリティーから見たOpenIDの危険性
第1回は、OpenIDが注目される背景や理由、そして基本的な認証の流れについてみていきました。では、OpenIDをセキュリティーという観点で見た場合のポイントはどこにあるでしょうか。
通常、Webの開発を行う場合、ある程度セキュリティーを考慮しながらプログラミングします。しかし、開発の状況によってはセキュリティーのチェックがついつい後回しになったり、抜けモレなどが発生することがあるのではないでしょうか。
今回は、少しでもセキュリティーを意識しながら開発することができるように、なるべく平たい言葉でセキュリティーの課題について説明します。ここで、OpenIDの認証の流れを再確認するために、第1回での例えを使ってもう一度見てみましょう。
スモークガラスの車が、駐車場の入り口に入ってくる。車の中から係員に話しかける。
「駐車場を利用したいんだけど」
「通行証を見せて」
「Aの通行証でも大丈夫だよね」
「大丈夫だよ。じゃあ、Aのゲートがあるからそこで許可とってきて。案内するから」
「わかった」
係員は、Aゲートに電話してから、Aゲートの場所まで車を誘導し、車はそのままAゲートに入っていく。
Aゲートの中はよく見ないが、Aゲートの中にも係員がいて、通行証の確認をしているのだろう。そのAゲートの中から程なく車が出てきて、また元の入り口にいる係員のところに戻ってきた。車の中からまた係員に話しかける。
「AゲートでOKもらったよ。証拠もあるよ」
「それならオッケーだ。中に入っていいよ」
「じゃあ、遠慮なく」
スモークガラスの車、駐車場、係員の例えを使った説明はここまでです。
上記のたとえでは、まずスモークガラスの車が駐車場に入ってきて、入り口の係員に話しかけますが、もし大量の車が一気に何度も来たらどうでしょうか。入り口は満杯になり、ほかの車が入ってこられない状態になることは容易に想像がつきます。また、Aゲートに大量に車が押し寄せたらどうでしょうか。
これは、いわゆる「サービス拒否攻撃」と呼ばれます。
言葉は悪いですが、よってたかってサービスを利用することによって、ほかの人の利用をできないようにするという嫌がらせに近い攻撃です。実際には、この攻撃にはあまり対処の方法がありませんが、入り口やAゲートに入る車の数を減らしたり、間隔を設けるといった対処が必要となります。
しかし悪意のない善良なユーザーを拒否してしまっては、元も子もありませんから、あやしい車を識別して対処しなければなりません。具体的には、ログからあやしい挙動をしているIPを調べ、そのIPのアクセスを制限します。
入り口の係員が別のゲートに誘導する:フィッシング
次に考えられるのは、入り口の係員が悪人の場合です。これは3つの攻撃方法が考えられます。
まず1つ目は、係員はやさしい顔をして、Aのゲートまで連れて行くように見せかけて、Aゲートと見た目がそっくりのA'ゲートに案内する方法です。ユーザーは、それがAゲートだと信じて疑わないので、A'ゲートで認証を行います。つまり、自分のIDやパスワードを入力してしまうのです。ひどい場合には、もっといろいろな情報を要求されて、入力してしまうかもしれません。大事なIDとパスワードを取られるだけでなく、身ぐるみはがされてしまう危険性があるのです。
これが、いわゆる「フィッシング(phishing)」と呼ばれる攻撃です。
OpenIDの利用サービスは、OP(OpenID発行サイト)に認証をゆだねるため、必ず自分のサイトからOPへのリダイレクトを行います。ユーザーは、基本的に「見た目」でそのリダイレクト先を信用するので、ロゴや画面デザインが見慣れていればOpenIDを取得したサイトだと認識してしまう可能性があるのです。
ブラウザからソースを自由に表示できるので、ロゴやデザインをまねたそっくりのサイトを作るのは簡単です。つまり「見た目」はすぐにまねできてしまうのです。
ユーザーの立場からすると、そうしたフィッシングにひっかからないためには、信用できる利用サービスを使うことや、リダイレクト先のURLを見て判断することが挙げられるでしょう。
OP側も基本的にどこからリダイレクトされてきたのか、これからどこにリダイレクトするのかといった情報をきちんと開示していますので、そうした情報をチェックすることも必要です。yahoo.co.jpでは、認証する際にそれがフィッシングページではないことを証明するログインシールをつけることを推奨しています。
OpenIDのセキュリティーが語られる場合は、大抵このフィッシングが最初に取り上げられます。それは認証のためにOPにリダイレクトするというその仕様が、OpenIDの本質と切っては切り離せないためです。
続いて、ほかの攻撃についてみてみましょう。
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- これならわかる!OpenIDの仕組み
- セキュアなWebアプリケーションについて
- 診断の現場からの提言!Webサイトの脆弱性が潜む場所を知る
- 悪意のある攻撃から身を守るには?
- JPCERT/CC、バッファローのネットワーク機器に存在する脆弱性に関する注意喚起
- 日本トータルシステムが提供するグループウェア「GroupSession」に脆弱性、JPCERTが注意喚起
- 平成31年度 春期試験 午後Ⅰ問題対策① ―問1
- JPCERT/CC、NTT東日本および西日本の「ひかり電話ルータ」に存在する脆弱性について発表
- APIセキュリティのハードニング
- 注目のWebAuthnと公式より早いKeycloak最新動向を紹介!OSSセキュリティ技術の会 第5回勉強会