ブログ

ユーザー名列挙を防ぐ方法 | Secure Code Warrior

October 9, 2017
ピーター・デ・クレーメル
ユーザー名とパスワードの入力フィールドがあるログイン画面。パスワードはアスタリスクで伏せ字になっています。

サイドチャネル攻撃とは、ソフトウェアのアルゴリズム上の理論的な弱点やコードのバグを突くのではなく、ソフトウェアシステムの物理的な実装から情報を収集する攻撃手法のことです。

これを分かりやすく説明するために、ユーザー名列挙を例に挙げます。ユーザー名列挙とは何か、なぜ危険なのかを知りたい方は、当社のウェブサイトで動画解説をご覧いただくか、チャレンジに挑戦して、コード内の脆弱性を特定できるか試してみてください。

サイドチャネル攻撃によるユーザー名列挙の仕組みを理解するには、現代のウェブアプリケーションでパスワードがどのように扱われているか(あるいは扱われるべきか)を知る必要があります。優れたウェブアプリケーションは、ユーザーのパスワードを把握しておらず、どこにも保存しません。では、入力されたパスワードが正しいことをどのように確認するのでしょうか。それは、パスワードをハッシュ化することで実現しています。

ハッシュ関数とは、一方向の計算は容易(ただし計算コストはかかる)ですが、逆算は非常に困難な数学的操作です。優れたハッシュアルゴリズムでは、入力値に応じて一意の出力が得られます。ウェブサイトに登録する際、保存されるのはパスワードそのものではなく、このハッシュ値です。つまり、ログインのたびに、ウェブアプリケーションは入力されたパスワードをハッシュ化し、保存されているハッシュ値と比較します。 安全なパスワードストレージについて詳しく学びたい方は、当社のプラットフォームをご利用ください。

Hacker in hooded sweatshirt accessing a screen showing user data with passwords and credit card numbers.

コンピュータにとってハッシュ化の計算には時間がかかるため、開発者はユーザー体験を向上させるためにコードの最適化を常に試みます。プログラムを高速化する一つの方法は、不要な場合にハッシュ化をスキップすることです。例えば、ユーザー名が存在しない場合(パスワードの照合が不要な場合)、即座に応答を返すことで、パスワードのハッシュ化という低速な計算を省略できます。ユーザー名が正しい場合にのみ、パスワード入力をハッシュ化して保存されたハッシュ値と比較します。

ここまでで、どこに問題があるかお気づきかもしれません。実際にはハッシュ化に数ミリ秒しかかかりませんが、ハッカーはこのわずかな遅延を利用して、入力したユーザー名が正しいかどうかを判断できます。ユーザー名が間違っている場合はハッシュ化が行われないため、応答がわずかに速くなるからです。このようなサイドチャネル攻撃は「タイミング攻撃」と呼ばれ、非機能要件同士が相反する好例です。コードは、常に高速かつ安全であるとは限らないのです。

つまり、パスワードの処理が完璧で、表示されるメッセージが「ユーザー名またはパスワードが間違っています」といった汎用的なものであっても、システムは依然として脆弱です。解決策は単純で、常にパスワードをハッシュ化するか、ハッシュ化にかかる時間分だけ応答を遅延させることです。

攻撃者は取得した情報を利用して、システム上のユーザーリストを作成できます。この情報は、ブルートフォース攻撃やデフォルトのユーザー名/パスワード攻撃など、ウェブアプリケーションへのさらなる攻撃に悪用される可能性があります。

https://www.owasp.org/index.php/Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)

タグライン

AI主導の開発をリリース前にガバナンスする

AIを活用したリスク測定、コミット時のセキュアコーディングポリシーの強制、そしてSDLC全体を通じたセキュアなデリバリーの加速を実現します。

デモを予約する
リソースライブラリ

他のブログ記事を見る

セキュアコーディング、AIガバナンス、ソフトウェアリスク管理に関する専門的なコンテンツをご覧ください。

すべて表示
導入事例
フィルターラベル
これはdivブロック内のテキストです。

Supercharged Security Awareness: How Tournaments are Inspiring Developers at Erste Group

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

Security as culture: How Blue Prism cultivates world-class secure developers

Learn how Blue Prism, the global leader in intelligent automation for the enterprise, used Secure Code Warrior's agile learning platform to create a security-first culture with their developers, achieve their business goals, and ship secure code at speed

詳細はこちら
導入事例
フィルターラベル
これはdivブロック内のテキストです。

セキュリティ文化の統一:Sageはいかにしてチャンピオンプログラムを構築したか

Sageがどのようにして柔軟かつ関係性を重視したアプローチでセキュリティを強化し、200名以上のセキュリティチャンピオンを育成して、目に見えるリスク低減を実現したのかをご紹介します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

2026年サイバーセキュリティ意識向上月間:企業防衛に不可欠なAIセキュリティの理解

主要なAI企業の多くが、安全対策が追いつくまでの間、AI開発を世界的に減速させるよう公に呼びかける事態となっています。しかし現実には、深刻なセキュリティ問題はすでに顕在化しています。AI導入に伴う金銭的コストやリスクが増大し続ける中、多くのセキュリティリーダーや経営陣は差し迫った状況に追い込まれています。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

イネーブラー8:プログラムのブランディング

セキュアコーディングプログラムを成功させるには、優れたコンテンツ以上のものが必要です。イネーブラー8では、ブランディングによって参加を「憧れのステータスを得る体験」へと変える方法を解説します。

詳細はこちら
ブログ
フィルターラベル
これはdivブロック内のテキストです。

すべての従業員が今、AIサイバーセキュリティの最前線に立っている

エンタープライズテクノロジーの状況は、手遅れになるまで誰も予測できなかったほどの速さで変化しています。私たちは今、人間が書いたコードと基本的なコパイロット支援の時代から、エージェント型開発ライフサイクル(ADLC)の時代へと正式に足を踏み入れました。自律型AIエージェントは、複数の機能にわたってかつてない効率性をもたらす一方で、全く新しい種類のセキュリティリスクや規制リスクも引き起こしています。

詳細はこちら

AIを活用した開発をリリース前にセキュアに

開発者のリスクを可視化し、ポリシーを適用することで、ソフトウェア開発ライフサイクル全体における脆弱性を未然に防ぎます。

デモを予約する
該当する項目が見つかりません。