CyberFix Note
防御・ハードニング

総当たり攻撃と使い回しの悪用から見るログインの守り方

対象の目安: これから学ぶ人 / 入門

アオイ防御・運用担当
・ 約12分で読めます
総当たり攻撃と使い回しの悪用から見るログインの守り方

ログイン画面はIDとパスワードが合致しさえすれば本人とみなして通します。この単純さを逆手に取り、攻撃者は正しい組み合わせを当てる、あるいはどこかから手に入れた組み合わせを試すことで、本人になりすまそうとします。本記事は、パスワードを次々に試す総当たり攻撃と、他サービスから漏れた組み合わせを使い回しに賭けて試すクレデンシャルスタッフィングを、別の攻撃として区別したうえで、それぞれが成立する仕組みと、個人と運用側それぞれの守り方を一次情報に沿って整理します。

総当たり攻撃が多数のパスワードを試して成立する仕組み

総当たり攻撃(ブルートフォース攻撃)は、一つのアカウントに対して、考えられるパスワードを次々に入力して当たりを探す攻撃です。攻撃者はログインを自動化したプログラムを使い、aaaaaaabのように文字の組み合わせを機械的に生成しては送り込みます。正しい組み合わせを事前に知っているわけではなく、合致するまで試行を繰り返す点が特徴です。

この攻撃が現実的な時間で成功するかどうかは、試すべき組み合わせの数で決まります。パスワードが短いほど、また使われる文字の種類が少ないほど、ありうる組み合わせの総数は小さくなり、機械的な試行で当てられる範囲に収まります。逆にパスワードが長くなれば、組み合わせの数は文字数に応じて急激に増え、同じ速度で試しても当たりに行き着くまでの時間が現実離れしていきます。総当たりへの耐性が文字数を増やすことで高まるのは、この組み合わせ数の増え方によります。

ただし、組み合わせの数だけで安全が決まるわけではありません。人が決めたパスワードは完全な無作為ではなく、よく使われる単語や並びに偏ります。攻撃者はこの偏りを突いて試行の順番を工夫するため、文字数が同じでも推測されやすいパスワードは早く当てられます。次に述べる派生は、この偏りを利用して試行を効率化したものです。

辞書攻撃とパスワードスプレーという派生

辞書攻撃は、ありうる組み合わせを端から試すのではなく、よく使われるパスワードや単語をあらかじめ並べた一覧(辞書)を順に試す手法です。password123456のような頻出のパスワード、英単語、人名などが辞書に含まれます。人が記憶しやすいパスワードを選びがちな傾向を突くため、無作為な総当たりより少ない試行で当たることがあります。辞書攻撃は、試す候補を絞り込んだ総当たりの一種と位置づけられます。

パスワードスプレーは、試す方向を変えた派生です。OWASPは、これを一つのアカウントに多数のパスワードを浴びせるのではなく、多数のアカウントに対して少数のよく使われるパスワードを広く試す攻撃として説明しています。一つのアカウントへの試行回数を抑えることで、後述するアカウントロックやレート制限による検知を避けながら、組織全体のどこか一つでも単純なパスワードを使っているアカウントを探し当てようとします。攻撃の起点が「一つのアカウントを深く狙う」から「多数のアカウントを浅く広く狙う」へ変わる点が、通常の総当たりとの違いです。

これらはいずれも、攻撃者がパスワードそのものを推測して当てる点で共通します。次に述べるクレデンシャルスタッフィングは、この推測という前提を持たない別の攻撃です。

推測せずに漏れた認証情報を試すクレデンシャルスタッフィング

クレデンシャルスタッフィング(リスト型攻撃、パスワードリスト攻撃とも呼びます)は、他のサービスから漏えいしたIDとパスワードの組を、別のサービスのログイン画面でそのまま試す攻撃です。OWASPはこの攻撃を、広い意味ではブルートフォース系の一種に位置づけつつ、狭義のパスワード推測とは区別しています。総当たりがパスワードを総当たりで推測するのに対し、こちらはすでに流出した有効そうな認証情報をそのまま試して、使い回されていないかを確かめる点が違いです。攻撃者は、過去の情報漏えいで出回ったIDとパスワードの一覧を入手し、自動化したプログラムで多数のサービスに対して同じ組み合わせを次々に投入します。

総当たりとクレデンシャルスタッフィングは、結果としてどちらも不正ログインを狙いますが、成立の仕方が異なります。総当たりはパスワードを知らない状態から推測で当てにいくのに対し、クレデンシャルスタッフィングは実在した正しい組み合わせを最初から持っており、それが他サービスでも通用するかどうかに賭けます。したがって、総当たりへの耐性を高めるためにパスワードを長くしても、その長いパスワードを複数サービスで使い回していれば、一つの漏えいをきっかけにクレデンシャルスタッフィングで突破されます。両者は守るべき弱点が違うため、同じ対策だけでは塞ぎきれません。

JPCERT/CCは2014年に、パスワードの使い回しがこの攻撃の前提になっているとして、利用者に使い回しをやめるよう呼びかけました。IPAも不正ログイン対策の一環として、使い回しの回避と多要素認証の利用を継続して促しています。被害相談が今も寄せられていることから、使い回しが残り続けるかぎり、この攻撃の土台もなくならないと考えられます。

クレデンシャルスタッフィングの定義はOWASP Credential stuffingを、パスワードの使い回しを前提とする攻撃への注意喚起はJPCERT/CCおよびIPAを参照しました。

なぜこれらの攻撃が成立するのか

総当たりとその派生が成立する直接の要因は、短く単純なパスワードです。組み合わせの数が小さいパスワードは機械的な試行で当てられ、頻出の単語や並びに偏ったパスワードは辞書攻撃やパスワードスプレーで早く突破されます。これは個々のパスワード自体の強さに関わる弱点です。

クレデンシャルスタッフィングが成立する要因は、これとは別の、複数サービスでの使い回しです。攻撃が芋づる式に広がる流れは一文で説明できます。利用者があるサービスAとサービスBで同じIDとパスワードを使っていると、Aの情報漏えいで流出した組み合わせがそのままBでも通用してしまうため、Aの一度の漏えいがBへの不正ログインに直結します。ここで効いているのはパスワードの長さや複雑さではなく、同じ組み合わせを二つのサービスが共有していたという事実です。長く複雑なパスワードであっても、使い回していれば漏えい時にこの連鎖を止められません。

このように、パスワードの強さと使い回しの回避は、それぞれ別の攻撃に対応する異なる弱点を塞ぎます。一方だけを満たしても、もう一方の経路は開いたままになります。次に述べる対策が個人側と運用側に分かれるのも、塞ぐべき弱点が複数あることに対応しています。

個人ができるパスワードと認証の守り方

個人がまず取り組むのは、パスワードを長くすることと、サービスごとに違うものを使うことです。NISTのSP 800-63B-4は、パスワードを単独の認証手段として使う場合に最低15文字を要求し、最大では64文字以上を許容するよう求めています。同じガイドラインは、大文字や記号の混在といった構成ルールを課さないこととし、無理に複雑にするより長さを優先する方針を示しています。覚えやすい単語をいくつかつないだ長いパスフレーズは、この方針に沿った作り方の一つです。

使い回しを避けると管理すべきパスワードの数が増えるため、パスワードマネージャーで保管する方法が現実的です。サービスごとに無作為で長いパスワードを生成し、暗号化して保管すれば、人が記憶できる数の制約に縛られずに使い回しを避けられます。JPCERT/CCも、使い回しをやめる手段の一つとしてパスワード管理の仕組みの利用を挙げています。

パスワードに加えて、多要素認証を有効にすると、パスワードが破られた場合の最後の歯止めになります。多要素認証は、パスワードという知識に加えて、手元の端末やセキュリティキーといった別の要素の確認を求めるため、攻撃者がパスワードを当てたり漏えいした組み合わせを持っていたりしても、もう一つの要素がなければログインを完了できません。OWASPのクレデンシャルスタッフィング対策でも、多要素認証は有効な防御として位置づけられています。なお、SMSで送る確認コードのように、要素の種類によっては横取りの余地が残るため、可能であれば認証アプリやセキュリティキーを選ぶと歯止めとしての強度が上がります。

  • パスワードは長さを優先し、単独で使うなら15文字以上を目安に、覚えやすい単語をつないだパスフレーズで作る
  • 同じパスワードを複数のサービスで使い回さない
  • 使い回しを避けるためにパスワードマネージャーで生成と保管を行う
  • 重要なアカウントには多要素認証を設定し、可能なら認証アプリやセキュリティキーを選ぶ
  • 利用中のサービスやメールアドレスが過去の漏えいに含まれていないか、漏えい確認サービスで点検する

自分のアカウントが過去の漏えいに巻き込まれていないかを確かめておくことも、使い回しの危険に早く気づく助けになります。メールアドレスやIDを入力すると、既知の漏えいに含まれていたかを照合できるサービスがあり、該当した場合はそのサービスのパスワードを直ちに変更し、同じ組み合わせを使い回していた他のサービスもあわせて変更します。確認には、ブラウザやパスワードマネージャーに備わる漏えい通知や、信頼できる事業者の照合サービスを使い、パスワード本体を入力させる出所の不明なサイトは避けてください。NISTのSP 800-63B-4は、定期的な変更を一律に強制しないこととしつつ、認証情報が漏えいした証拠がある場合は変更を求めるとしており、漏えいの確認は変更の判断材料になります。

運用側がログイン機能で備える対策

サービスを運用する側は、攻撃者が試行を無制限に繰り返せないようにする仕組みで防ぎます。レート制限は、同一のIDや送信元から短時間に届くログイン試行の回数に上限を設け、上限を超えた試行を一時的に拒む仕組みです。これにより、総当たりや辞書攻撃が必要とする膨大な試行を、現実的な時間内には完了させにくくします。アカウントロックは、一定回数続けて認証に失敗したアカウントを一時的にログイン不能にする仕組みで、一つのアカウントを集中的に狙う総当たりに対して効きます。

ただし、アカウントロックには副作用があり、設定の仕方によっては別の弱点を生みます。正規の利用者が誤入力でロックされる不便が生じるほか、攻撃者がわざと失敗を起こして正規利用者をロックアウトする妨害にも使われ得ます。パスワードスプレーは、各アカウントへの試行回数をロックの閾値より低く抑えることでこの検知をすり抜けるため、アカウント単位のロックだけでは防ぎきれません。OWASPは、回数制限に加えて、送信元や挙動の異常を見て自動化されたアクセスを抑える対策を組み合わせるよう示しています。

クレデンシャルスタッフィングに対しては、回数制限だけでは不十分です。攻撃者は正しい組み合わせを持っており、一つのアカウントへの試行回数が少なくても成功し得るためです。ログインの時点で効く対策と、パスワードを設定する時点で効く対策は分けて考える必要があります。ログイン時には、OWASPが最も効果的な防御の一つに挙げる多要素認証と、自動化されたログインや異常な挙動を見分ける仕組みが要になります。一方、パスワードを設定する時点の対策として、NISTのSP 800-63B-4は、新規設定や変更の際に既知の漏えいや頻出のパスワードを集めたブロックリストと照合し、該当するものを拒むよう求めています。これは利用者が漏えい済みのパスワードを新たに使うことを防ぐ措置であり、ログイン試行そのものを止める仕組みではありませんが、再利用される組み合わせを入口で減らせます。

運用側の優先順位の付け方

  1. 1

    ログイン試行へのレート制限を入れ、短時間の大量試行を抑える

  2. 2

    アカウントロックを導入する際は、正規利用者のロックアウトや妨害の副作用を踏まえて閾値と解除方法を設計する

  3. 3

    多要素認証を提供し、重要な操作では必須化を検討する

  4. 4

    新規・変更時のパスワードを、既知の漏えいや頻出パスワードのブロックリストと照合して拒む

  5. 5

    送信元や挙動の異常から自動化されたアクセスを見分け、回数制限と組み合わせて検知する

回数を絞る対策(レート制限やアカウントロック)は推測を前提とする総当たりに効き、漏えい照合や多要素認証は推測を伴わないクレデンシャルスタッフィングに効きます。守る対象が異なるため、どちらか一方だけでは両方の攻撃を塞げません。運用側は、自サービスがどの攻撃を主に受けているかを踏まえつつ、複数の対策を重ねて備えます。

あわせて読みたい

安全なパスワードの作り方と管理。長さ優先・使い回し回避をNISTの考え方から解説

あわせて読みたい

多要素認証(MFA)の選び方と導入の勘所。方式比較から運用まで徹底解説

あわせて読みたい

パスキーとは。パスワードのない世界へ、仕組みと使い方・移行を解説

あわせて読みたい

情報窃取型マルウェアがセッションCookieを盗んで多要素認証を回避する仕組み

出典・参考

この記事をシェア

関連する記事

防御・ハードニング

スマホを使わない多要素認証に使うハードウェアOTPトークンの選び方

スマートフォンなしで多要素認証を足すハードウェアOTPトークン(TOTPやHOTP)の位置づけを整理します。プリセット型とプログラマブル型の違い、対象サービスの対応、電池寿命の見方といった選び方に加え、偽サイトに認証情報を渡さないフィッシング耐性はFIDO2やパスキーが担い、OTPトークンは持たないという役割の差を、一次情報に基づいて解説します。

防御・ハードニング

PCのパスワードレス化に使う生体認証デバイス(指紋・顔)の選び方

WindowsのログインをPINやパスワードから指紋や顔に置き換える外付けの指紋リーダーとIRカメラについて、生体情報が端末内で暗号化保存される仕組み、Windows Hello対応や接続方式といった選び方、フィッシング耐性を担うFIDO2やパスキーとの役割の違いを、Microsoft公式やメーカー情報に基づいて整理します。