Fundamental Information Technology Engineer Examination study materials
Fundamental Information Technology Engineer Examination study resources

連番セッションIDとソルトなしハッシュによる不正ログインの封じ込め

Fundamental Information Technology Engineer Examination · Put your knowledge to work in context.

All case studies

連番セッションIDとソルトなしハッシュによる不正ログインの封じ込め

あるECサイトは、10万件の顧客アカウントを保有し、ログイン機能を自社で実装している。パスワードはSHA-256でソルトなしにハッシュ化して保存している。セッションIDはログイン時に連番(SID=10001, 10002, …)で発行し、ログイン後も再生成していない。直近1週間のログに、海外の複数IPから1時間あたり約5,000回のログイン失敗が記録され、その後、ある顧客アカウントで1回だけ成功し、同じセッションIDが翌日に別の国から使用されていた。該当顧客のパスワードは8文字の英小文字のみで、他サービスと同一であった可能性がある。ログイン成功後の操作履歴はなく、住所変更画面を開いた形跡だけがある。WAFには「UNION SELECT」を含むリクエストの検知ログが数件あるが、ブロック件数は0件である。クレジットカード情報は外部決済代行に委託しており、自社DBには保持していない。サポート窓口の処理能力は1日2,000件、全面パスワードリセットの連絡は10万件に及ぶ。経営層は「サービス停止は避けたい」としている。インシデント対応チームは、原因特定、封じ込め、恒久対策の優先順位を求めている。

1. ログから実際に成立した可能性が高い攻撃を特定し、根拠を3つ挙げよ。WAFのSQLインジェクション検知ログは、この攻撃の成立根拠になるか?

Read the worked answer

成立した可能性が高いのは、クレデンシャルスタッフィング(credential stuffing)による不正ログインと、その後のセッションハイジャックである。根拠は、①海外の複数IPから大量の失敗が続いた後に1回だけ成功している点、②セッションIDが連番で推測可能かつログイン後に再生成されておらず、翌日に別国から同じIDが使われている点、③パスワードが8文字英小文字で他サービスと同一の可能性があり、突破されやすい点である。WAFのUNION SELECT検知ログは、SQLインジェクションの試行があったことを示すが、ブロック0件かつDB侵害の形跡がないため、今回のログイン突破の直接根拠にはならない。ただし、WAFが検知のみの運用であれば、別の攻撃面として調査が必要である。

2. サービスを停止せずに封じ込めるための即時対応を、優先順位付きで3つ提案せよ。サポート処理能力1日2,000件の制約を考慮すること。

Read the worked answer

優先順位は、①全セッションの無効化とログイン後のセッションID再生成(サービスは継続でき、10万ユーザーは再ログインになるが、パスワードリセット連絡は不要)、②不審なログインがあったアカウント(海外IP、大量失敗、住所変更操作など)に限定したパスワードリセットと本人通知(対象を数百件に絞り、1日2,000件の処理能力内に収める)、③WAFをブロックモードに切り替え、SQLi試行と大量失敗を遮断、④該当アカウントの住所変更を保留し、本人確認を実施、である。全面リセットは10万件で50日かかり、サービス停止に近い影響が出るため避ける。IPブロックは分散型には効果が薄い。

3. 恒久対策として、パスワード保存方式とセッション管理の変更を説明せよ。移行コストと利用者影響にも触れよ。

Read the worked answer

パスワードはbcryptやArgon2idなどの適応的ハッシュにソルト付きで変更する。全員一斉変更はせず、次回ログイン時に平文を受け取った時点で新方式に再ハッシュする方式(ログイン時移行)を採る。これにより利用者影響とサポート負荷を抑えられる。セッションIDはCSPRNGで128ビット以上を生成し、ログイン成功時に必ず再生成する。CookieにはHttpOnly、Secure、SameSiteを付与し、アイドルタイムアウトと絶対タイムアウトを設定する。セッションはサーバ側で失効可能なストアに保持する。コストは実装とテストが中心で、大規模なパスワードリセットより安い。