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

サイドチャネル攻撃とは、ソフトウェアのアルゴリズム上の理論的な弱点やコードのバグを突くのではなく、ソフトウェアシステムの物理的な実装から情報を収集する攻撃手法のことです。
これを分かりやすく説明するために、ユーザー名列挙を例に挙げます。ユーザー名列挙とは何か、なぜ危険なのかを知りたい方は、当社のウェブサイトで動画解説をご覧いただくか、チャレンジに挑戦して、コード内の脆弱性を特定できるか試してみてください。
サイドチャネル攻撃によるユーザー名列挙の仕組みを理解するには、現代のウェブアプリケーションでパスワードがどのように扱われているか(あるいは扱われるべきか)を知る必要があります。優れたウェブアプリケーションは、ユーザーのパスワードを把握しておらず、どこにも保存しません。では、入力されたパスワードが正しいことをどのように確認するのでしょうか。それは、パスワードをハッシュ化することで実現しています。
ハッシュ関数とは、一方向の計算は容易(ただし計算コストはかかる)ですが、逆算は非常に困難な数学的操作です。優れたハッシュアルゴリズムでは、入力値に応じて一意の出力が得られます。ウェブサイトに登録する際、保存されるのはパスワードそのものではなく、このハッシュ値です。つまり、ログインのたびに、ウェブアプリケーションは入力されたパスワードをハッシュ化し、保存されているハッシュ値と比較します。 安全なパスワードストレージについて詳しく学びたい方は、当社のプラットフォームをご利用ください。

コンピュータにとってハッシュ化の計算には時間がかかるため、開発者はユーザー体験を向上させるためにコードの最適化を常に試みます。プログラムを高速化する一つの方法は、不要な場合にハッシュ化をスキップすることです。例えば、ユーザー名が存在しない場合(パスワードの照合が不要な場合)、即座に応答を返すことで、パスワードのハッシュ化という低速な計算を省略できます。ユーザー名が正しい場合にのみ、パスワード入力をハッシュ化して保存されたハッシュ値と比較します。
ここまでで、どこに問題があるかお気づきかもしれません。実際にはハッシュ化に数ミリ秒しかかかりませんが、ハッカーはこのわずかな遅延を利用して、入力したユーザー名が正しいかどうかを判断できます。ユーザー名が間違っている場合はハッシュ化が行われないため、応答がわずかに速くなるからです。このようなサイドチャネル攻撃は「タイミング攻撃」と呼ばれ、非機能要件同士が相反する好例です。コードは、常に高速かつ安全であるとは限らないのです。
つまり、パスワードの処理が完璧で、表示されるメッセージが「ユーザー名またはパスワードが間違っています」といった汎用的なものであっても、システムは依然として脆弱です。解決策は単純で、常にパスワードをハッシュ化するか、ハッシュ化にかかる時間分だけ応答を遅延させることです。
攻撃者は取得した情報を利用して、システム上のユーザーリストを作成できます。この情報は、ブルートフォース攻撃やデフォルトのユーザー名/パスワード攻撃など、ウェブアプリケーションへのさらなる攻撃に悪用される可能性があります。
AI主導の開発をリリース前にガバナンスする
AIを活用したリスク測定、コミット時のセキュアコーディングポリシーの強制、そしてSDLC全体を通じたセキュアなデリバリーの加速を実現します。
他のブログ記事を見る
セキュアコーディング、AIガバナンス、ソフトウェアリスク管理に関する専門的なコンテンツをご覧ください。
%252520%252520(3).avif)
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.

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
AIを活用した開発をリリース前にセキュアに
開発者のリスクを可視化し、ポリシーを適用することで、ソフトウェア開発ライフサイクル全体における脆弱性を未然に防ぎます。



.avif)