エンジニアが挑むセキュリティ:共有&学習シリーズ - 認証

本ブログでは、Webサイトを運営している組織や、従業員にリモートアクセス環境を提供している組織が直面する、最も一般的な問題の一つについて解説します。これは、ほぼすべての組織に当てはまることでしょう。お察しの通り、今回は「認証」について取り上げます。
ハッカーが有効なユーザー名とパスワードを使って管理者としてシステムにログインできてしまえば、ネットワーク防御を突破するために高度な技術を駆使する必要はありません。システムが自ら扉を開け、攻撃者を招き入れてしまうからです。さらに悪いことに、攻撃者が極端な行動をとらなければ、その存在を検知することはほぼ不可能です。ほとんどの防御システムは、彼らを正当なユーザーや管理者が業務を行っているものとして認識してしまうからです。
認証の脆弱性には多くの種類がありますが、ここではユーザーのログインプロセスに意図せず組み込まれてしまいがちな、最も一般的な問題を取り上げます。これらの穴を塞ぐことで、組織における認証関連の問題の大半を排除することが可能です。
本エピソードでは、以下の内容を学びます。
- 一般的な認証の脆弱性がどのように悪用されるか
- なぜそれほど危険なのか
- 認証の脆弱性を排除するためのポリシーと技術
攻撃者はどのように認証の脆弱性を悪用するのか?
認証システムには多くの脆弱性が潜んでいる可能性があり、ハッカーはそれぞれ異なる手法で悪用を試みます。まずは最も一般的な脆弱性を確認し、そのうちのいくつかがどのように悪用されるかの例を見ていきましょう。
主な認証の脆弱性は以下の通りです:
- 脆弱または不十分なパスワードポリシー
- ログイン試行回数の無制限
- ログイン失敗時に攻撃者へ情報を与えてしまう
- 安全でない経路での認証情報の送信
- パスワードのハッシュ化が不十分
- パスワード復旧プロセスが安全でない
パスワードポリシーの不備は、おそらく最も一般的な脆弱性です。ユーザーが制限なしにパスワードを作成できるようにしていると、推測されやすいパスワードを使うユーザーが後を絶ちません。毎年、さまざまなコンピュータ関連のニュースサイトが「最も使われているパスワード」のリストを公開していますが、「123456」や「password」は常にトップ5に入っています。他にも、管理者が「God」を好んで使うケースもよく見られます。これらは覚えやすく面白いかもしれませんが、非常に推測されやすいものです。ハッカーはこうした一般的なパスワードを熟知しており、システム侵入を試みる際にまずそれらを試します。組織でこのようなパスワードの使用を許容していれば、いずれ必ず侵入を許すことになるでしょう。
あまり目立ちませんが、依然として危険な脆弱性に、ログイン失敗時のエラーメッセージによる情報漏洩があります。ユーザー名が存在しない場合と、ユーザー名は正しいがパスワードが間違っている場合で異なるメッセージを返すと、攻撃者はシステム上の有効なユーザーを特定し、そのユーザー名に対してパスワード推測を集中させることが可能になります。これにログイン試行回数無制限の脆弱性が組み合わさると、攻撃者は見つけた有効なユーザーに対して辞書攻撃を仕掛けることができ、パスワードが単純であれば短時間でシステムへの侵入を許してしまう恐れがあります。
なぜ認証の脆弱性はこれほど危険なのか?
アメリカの西部開拓時代に、ある被害妄想の農夫が玄関に三重の鍵をかけ、窓に板を打ち付け、手の届くところに銃を置いて寝ていたという有名な話があります。しかし、翌朝彼は死体で発見されました。攻撃者は、彼が裏口の鍵をかけ忘れていたために侵入できたのです。認証の脆弱性もこれとよく似ています。攻撃者が有効なユーザー名とパスワードを使ってネットワークに侵入できるのであれば、どんなに優れた監視ツールや予防的制御を導入していても、どれほど専門的なアナリストを雇っていても、ほとんど意味がありません。
一度侵入を許せば、攻撃者ができることに対する制限はほとんどありません。管理者アカウントが乗っ取られていれば権限は非常に広範囲に及び、深刻な被害を防ぐために十分な速さで検知される可能性は極めて低くなります。このため、認証に関する脆弱性は、あらゆるシステムにおいて最も危険なものの一つとされています。
認証の脆弱性を排除する
ネットワークから認証の脆弱性を排除する最善の方法の一つは、適切で包括的なパスワードポリシーを強制することです。ユーザーや管理者が「password」のような単純なパスワードを使用することを制限するだけでなく、辞書攻撃や一般的なフレーズを用いた攻撃が通用しないレベルの複雑さを強制する必要があります。保護対象のシステムの重要度に応じて独自のパスワード作成ルールを策定しましょう。そうすることで、攻撃者がパスワードを推測したり、総当たり攻撃を仕掛けたりすることが非常に困難になります。
また、ログイン失敗回数を制限し、例えば3回間違えたらアカウントをロックアウトするように設定すべきです。ロックアウトは一時的なものでも構いません。数分間の遅延があるだけでも、自動化された辞書攻撃を阻止できるからです。あるいは、管理者が解除するまで永続的にロックアウトする設定も有効です。いずれの場合も、ロックアウトが発生した際にはセキュリティ担当者に通知が届くようにし、状況を監視できるようにしておく必要があります。
攻撃者への情報漏洩を防ぐもう一つの有効な方法は、ユーザー名やパスワードが間違っていた場合に、常に汎用的なメッセージを表示することです。どちらの場合も同じメッセージを表示することで、ハッカーはユーザーが存在しないために拒否されたのか、パスワードが間違っていたために拒否されたのかを判断できなくなります。
認証の脆弱性は、多くのシステムにおいて最も一般的かつ危険な脅威の一つです。しかし、これらは比較的容易に発見し、排除することが可能です。
認証の脆弱性に関する詳細情報
詳細については、OWASPの認証チートシートをご覧ください。また、習得した防御知識を試すには、サイバーセキュリティチームを最強のサイバー戦士へと育成するSecure Code Warriorプラットフォームの無料デモをご活用ください。この脆弱性やその他の脅威への対策について詳しくは、Secure Code Warriorブログをご覧ください。
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)