JALのログイン機能にはアカウントロックの機能があります。パスワードの間違いが一定回数続くと、アカウントがロックされ、パスワードを試すことができなくなります。一定回数とは何回くらいでしょうか。数字6桁のパスワードだと5回くらいではないですかね。次に検討すべきは辞書攻撃ですね。パスワードを総当たりに試すのではなく、利用者がつけそうなパスワードの一覧(辞書)を用いて攻撃します(下図)。アカウントロックの閾値が5回のパスワード間違いだとすると、辞書攻撃に使う辞書には4種類のパスワードしか載せられません。いや、そうでもないのですが、いったん次の攻撃方法を説明しましょう。次に考えられるのは、リバースブルートフォースアタック(攻撃)です。なんだかプロレスの必殺ワザみたいな名前ですね。これは、パスワードを適当に固定して、ユーザIDの方を変えながらログインできるか試す方法です(下図)。123456は各種のパスワード統計でもっとも人気のあるパスワードですが、JALの場合は違います。禁止されているからですよ。あーー、そうすると、123123くらいですか。しておいて、ユーザID(お得意様番号)の方を変えていきます。具体的な番号の一覧が公開されている訳ではありませんが、ある程度の規則性はあるようですね。あとは、総当たり的に試すのでしょう。こちらの記事によると、JMBの会員数は2700万人ということですから、100万で割ると、1つのパスワードあたり平均では27人の利用者がいることになります。根気よく試すと、平均27人の認証が通ってしまうのですか。123123のように設定率の高いパスワードだと、もっといくでしょうね。対策していなかった可能性が高いですね。こちらの記事(アーカイブ)によると、被害にあった利用者の被害者はすべて同一のIPアドレスからアクセスされたようです。いうことは、IPアドレス毎に連続したログイン試行の監視やロックをしていなかったと思われます。リバースブルートフォース攻撃の対策は、IPアドレス毎にログインを見張っていて大量の試行があればロックすればよいのですね。それが、そう単純でもないのです。対策が完全ではないと言うことと、副作用があるということの2つの理由からです。攻撃者側がIPアドレスを変えながら攻撃する場合が多いです。GitHubに対する不正ログインの事例が典型的ですね(参考:GitHubに大規模な不正ログイン試行)。なると、IPアドレス単位でのロックは掛けにくいです。したいところですが、複数の利用者が同じIPアドレスを共有している可能性を考慮する必要があります。企業からのアクセスはプロキシによりIPアドレスを共有している場合が多いですし、最近はスマートフォンからの3GアクセスはNATですので、IPアドレス単位でロックすると、「道連れ」が大量に出る可能性があります。なると、閾値をゆるめに設定しておかないと支障がでてきますね。すると、閾値に達するまでに、被害に遭う可能性が高くて調整が難しいことと、GitHubのようにIPアドレスをこま目に変えられると対策としては不十分です。完全でないのと副作用というのは、これを指しているのですね。