Coders Conquer Security:シェア&ラーンシリーズ - 認証

2019年4月11日発行
ジャープ・カラン・シン著
ケーススタディ

Coders Conquer Security:シェア&ラーンシリーズ - 認証

2019年4月11日発行
ジャープ・カラン・シン著
リソースを見る
リソースを見る

このブログでは、ウェブサイトを運営している企業や、従業員にコンピュータリソースへのリモートアクセスを許可している企業(ほとんどの企業)が直面する最も一般的な問題の1つを取り上げます。このブログでは、Webサイトを運営している企業や、従業員がリモートでコンピュータリソースにアクセスする際に直面する最も一般的な問題の1つである「認証」について取り上げます。

ハッカーが有効なユーザー名とパスワードを使って管理者としてシステムにログインするだけであれば、ネットワーク防御に対抗するための高度な技術を導入する必要はありません。システムがドアを開けて攻撃者を侵入させるだけです。さらに悪いことに、攻撃者があまり突飛なことをしなければ、その存在を検知することはほとんど不可能です。なぜなら、ほとんどの防御システムは、攻撃者を有効なユーザーまたは管理者が自分の仕事をしていると見なすからです。

認証の脆弱性のカテゴリーは非常に大きいのですが、ここでは、ユーザーのログインプロセスに誤って組み込まれがちな、最も一般的な問題について説明します。これらの穴を塞ぐことで、認証に関する問題の大部分を組織から取り除くことができます。

このエピソードでは、以下のことを学びます。

  • 一般的な認証の脆弱性がどのように利用されるか
  • なぜ彼らは危険なのか
  • 認証の脆弱性を排除するために、どのようなポリシーやテクニックを用いることができるか。

攻撃者はどのようにして認証の脆弱性を利用するのか?

認証システムに入り込む可能性のある認証の脆弱性は非常に多く、ハッカーはそれぞれの脆弱性を少しずつ悪用しています。まず、最も一般的な脆弱性について説明し、次にそれらの脆弱性がどのように悪用されるかを示す例を挙げてみましょう。

最も一般的な認証の脆弱性は以下の通りです。

  • 弱いまたは不適切なパスワードポリシーを持つこと。
  • 無制限のログイン試行を許可する。
  • ログインに失敗したときに攻撃者に情報を提供する。
  • 認証情報を安全でないチャンネルで送信すること。
  • パスワードを弱くハッシュ化すること。
  • そして、安全ではないパスワード回復プロセスを持っていること。

パスワードポリシーが脆弱であることは、最も一般的な脆弱性であると考えられます。ユーザーが何の制限もなくパスワードを作成できるとしたら、あまりにも多くのユーザーが簡単に推測可能なパスワードを使用してしまうでしょう。毎年、様々なコンピュータ関連の報道機関が「最も使われているパスワード」を発表していますが、「123456」や「password」は常にトップ5に入っています。他にもあります。管理者は「God」をよく使います。確かに、これらはどれもユーモアがあって覚えやすいですが、同時に非常に推測しやすいものでもあります。ハッカーは最も一般的なパスワードを知っていて、システムに侵入しようとするときにまずそれを試します。そのようなパスワードを許している組織では、いずれ侵入されてしまうでしょう。

あまり目立たないが、それでも危険な脆弱性は、ログインに失敗したときにユーザに情報を返すことです。これは、ユーザ名が存在しない場合に1つのメッセージを返し、ユーザ名は存在するがパスワードが不正である場合に別のメッセージを返すと、攻撃者がシステム上の有効なユーザをマッピングし、それらのユーザ名のためだけにパスワードを推測することに集中できるようになるからです。これが、パスワードを無制限に推測できる認証の脆弱性と組み合わさると、攻撃者は見つけた有効なユーザーに対して辞書攻撃を行うことが可能になり、パスワードが簡単に推測できる場合には、かなり早くシステムに侵入できるかもしれません。

認証の脆弱性はなぜ危険なのか?

アメリカの旧西部には、ある偏執狂的な開拓者の物語がある。彼は玄関に3重の鍵をかけ、窓を塞ぎ、たくさんの銃を手の届くところに置いて寝ていた。朝、彼は死体で発見された。裏口に鍵をかけるのを忘れたため、攻撃者に狙われてしまったのです。認証の脆弱性はそれとよく似ています。攻撃者が有効なユーザ名とパスワードを使ってネットワークに侵入することができれば、どのような監視ツールやプロアクティブなコントロールを導入していても、専門のアナリストをどれだけ雇っていても、実際には問題になりません。

いったん侵入してしまえば、攻撃者ができることにはほとんど制限がありません。管理者アカウントを侵害した場合には、かなり広範囲に及ぶユーザー権限の範囲内で行動する限り、深刻な問題を防ぐのに間に合うように攻撃者が捕まる可能性は非常に低くなります。このため、認証クラスの脆弱性は、あらゆるシステムで最も危険なものの1つとなっています。

認証の脆弱性を排除する

ネットワークから認証の脆弱性を排除する最良の方法の1つは、グローバルに施行される優れたパスワード・ポリシーを持つことです。ユーザーはもちろん、管理者であっても、「password」のようなパスワードの使用を制限するだけでなく、攻撃者が辞書攻撃や常套句攻撃を行うことができないような複雑なレベルのパスワードを追加する必要があります。保護するシステムの重要性に応じて、独自のパスワード作成のルールを作ることができます。そうすることで、攻撃者がパスワードを推測したり、ブルートフォース攻撃をしたりすることが非常に難しくなります。

また、不正なパスワードが3回以上入力された場合、ユーザーがロックアウトされるように、ログイン試行の失敗回数を制限する必要があります。ロックアウトは一時的なものでも構いません。数分遅れるだけで、自動化された辞書攻撃が続くのを防ぐことができます。また、管理者がアカウントのロックを解除しない限り、永久的にロックアウトされることもあります。いずれの場合も、このようなロックアウトが発生した場合には、セキュリティ担当者に警告し、状況を監視できるようにする必要があります。

攻撃者による情報収集を防ぐもう一つの良い方法は、不正なユーザー名またはパスワードが入力された場合に、一般的なメッセージを作成することです。ユーザーが存在しないために拒否されたのか、パスワードが間違っているために拒否されたのか、ハッカーにはわからないように、どちらの場合も同じメッセージを表示する必要があります。

認証の脆弱性は、ほとんどのシステムで最も一般的で危険なものの一つです。しかし、これらの脆弱性を発見し、排除することはかなり容易です。

認証の脆弱性に関する詳細情報

さらに読みたい方は、OWASP認証チートシートをご覧ください。また、サイバーセキュリティチームを究極のサイバー戦士に育成するSecure Code Warrior プラットフォームの無料デモで、新たに得た防御の知識を試すこともできます。この脆弱性やその他の脅威の対策についての詳細は、Secure Code Warrior ブログをご覧ください。

Secure Code Warrior プラットフォームで認証の脆弱性に正面から向き合うステップアップ。[Start Here] (ここからスタート)

リソースを見る
リソースを見る

著者

Jaap Karan Singh

もっと知りたい?

セキュアコーディングに関する最新の知見をブログでご紹介しています。

当社の豊富なリソースライブラリは、安全なコーディングアップスキルに対する人間的なアプローチを強化することを目的としています。

ブログを見る
もっと知りたい?

開発者主導のセキュリティに関する最新の研究成果を入手する

ホワイトペーパーからウェビナーまで、開発者主導のセキュアコーディングを始めるために役立つリソースが満載のリソースライブラリです。今すぐご覧ください。

リソース・ハブ

Coders Conquer Security:シェア&ラーンシリーズ - 認証

2019年4月11日発行
Jaap Karan Singh著

このブログでは、ウェブサイトを運営している企業や、従業員にコンピュータリソースへのリモートアクセスを許可している企業(ほとんどの企業)が直面する最も一般的な問題の1つを取り上げます。このブログでは、Webサイトを運営している企業や、従業員がリモートでコンピュータリソースにアクセスする際に直面する最も一般的な問題の1つである「認証」について取り上げます。

ハッカーが有効なユーザー名とパスワードを使って管理者としてシステムにログインするだけであれば、ネットワーク防御に対抗するための高度な技術を導入する必要はありません。システムがドアを開けて攻撃者を侵入させるだけです。さらに悪いことに、攻撃者があまり突飛なことをしなければ、その存在を検知することはほとんど不可能です。なぜなら、ほとんどの防御システムは、攻撃者を有効なユーザーまたは管理者が自分の仕事をしていると見なすからです。

認証の脆弱性のカテゴリーは非常に大きいのですが、ここでは、ユーザーのログインプロセスに誤って組み込まれがちな、最も一般的な問題について説明します。これらの穴を塞ぐことで、認証に関する問題の大部分を組織から取り除くことができます。

このエピソードでは、以下のことを学びます。

  • 一般的な認証の脆弱性がどのように利用されるか
  • なぜ彼らは危険なのか
  • 認証の脆弱性を排除するために、どのようなポリシーやテクニックを用いることができるか。

攻撃者はどのようにして認証の脆弱性を利用するのか?

認証システムに入り込む可能性のある認証の脆弱性は非常に多く、ハッカーはそれぞれの脆弱性を少しずつ悪用しています。まず、最も一般的な脆弱性について説明し、次にそれらの脆弱性がどのように悪用されるかを示す例を挙げてみましょう。

最も一般的な認証の脆弱性は以下の通りです。

  • 弱いまたは不適切なパスワードポリシーを持つこと。
  • 無制限のログイン試行を許可する。
  • ログインに失敗したときに攻撃者に情報を提供する。
  • 認証情報を安全でないチャンネルで送信すること。
  • パスワードを弱くハッシュ化すること。
  • そして、安全ではないパスワード回復プロセスを持っていること。

パスワードポリシーが脆弱であることは、最も一般的な脆弱性であると考えられます。ユーザーが何の制限もなくパスワードを作成できるとしたら、あまりにも多くのユーザーが簡単に推測可能なパスワードを使用してしまうでしょう。毎年、様々なコンピュータ関連の報道機関が「最も使われているパスワード」を発表していますが、「123456」や「password」は常にトップ5に入っています。他にもあります。管理者は「God」をよく使います。確かに、これらはどれもユーモアがあって覚えやすいですが、同時に非常に推測しやすいものでもあります。ハッカーは最も一般的なパスワードを知っていて、システムに侵入しようとするときにまずそれを試します。そのようなパスワードを許している組織では、いずれ侵入されてしまうでしょう。

あまり目立たないが、それでも危険な脆弱性は、ログインに失敗したときにユーザに情報を返すことです。これは、ユーザ名が存在しない場合に1つのメッセージを返し、ユーザ名は存在するがパスワードが不正である場合に別のメッセージを返すと、攻撃者がシステム上の有効なユーザをマッピングし、それらのユーザ名のためだけにパスワードを推測することに集中できるようになるからです。これが、パスワードを無制限に推測できる認証の脆弱性と組み合わさると、攻撃者は見つけた有効なユーザーに対して辞書攻撃を行うことが可能になり、パスワードが簡単に推測できる場合には、かなり早くシステムに侵入できるかもしれません。

認証の脆弱性はなぜ危険なのか?

アメリカの旧西部には、ある偏執狂的な開拓者の物語がある。彼は玄関に3重の鍵をかけ、窓を塞ぎ、たくさんの銃を手の届くところに置いて寝ていた。朝、彼は死体で発見された。裏口に鍵をかけるのを忘れたため、攻撃者に狙われてしまったのです。認証の脆弱性はそれとよく似ています。攻撃者が有効なユーザ名とパスワードを使ってネットワークに侵入することができれば、どのような監視ツールやプロアクティブなコントロールを導入していても、専門のアナリストをどれだけ雇っていても、実際には問題になりません。

いったん侵入してしまえば、攻撃者ができることにはほとんど制限がありません。管理者アカウントを侵害した場合には、かなり広範囲に及ぶユーザー権限の範囲内で行動する限り、深刻な問題を防ぐのに間に合うように攻撃者が捕まる可能性は非常に低くなります。このため、認証クラスの脆弱性は、あらゆるシステムで最も危険なものの1つとなっています。

認証の脆弱性を排除する

ネットワークから認証の脆弱性を排除する最良の方法の1つは、グローバルに施行される優れたパスワード・ポリシーを持つことです。ユーザーはもちろん、管理者であっても、「password」のようなパスワードの使用を制限するだけでなく、攻撃者が辞書攻撃や常套句攻撃を行うことができないような複雑なレベルのパスワードを追加する必要があります。保護するシステムの重要性に応じて、独自のパスワード作成のルールを作ることができます。そうすることで、攻撃者がパスワードを推測したり、ブルートフォース攻撃をしたりすることが非常に難しくなります。

また、不正なパスワードが3回以上入力された場合、ユーザーがロックアウトされるように、ログイン試行の失敗回数を制限する必要があります。ロックアウトは一時的なものでも構いません。数分遅れるだけで、自動化された辞書攻撃が続くのを防ぐことができます。また、管理者がアカウントのロックを解除しない限り、永久的にロックアウトされることもあります。いずれの場合も、このようなロックアウトが発生した場合には、セキュリティ担当者に警告し、状況を監視できるようにする必要があります。

攻撃者による情報収集を防ぐもう一つの良い方法は、不正なユーザー名またはパスワードが入力された場合に、一般的なメッセージを作成することです。ユーザーが存在しないために拒否されたのか、パスワードが間違っているために拒否されたのか、ハッカーにはわからないように、どちらの場合も同じメッセージを表示する必要があります。

認証の脆弱性は、ほとんどのシステムで最も一般的で危険なものの一つです。しかし、これらの脆弱性を発見し、排除することはかなり容易です。

認証の脆弱性に関する詳細情報

さらに読みたい方は、OWASP認証チートシートをご覧ください。また、サイバーセキュリティチームを究極のサイバー戦士に育成するSecure Code Warrior プラットフォームの無料デモで、新たに得た防御の知識を試すこともできます。この脆弱性やその他の脅威の対策についての詳細は、Secure Code Warrior ブログをご覧ください。

Secure Code Warrior プラットフォームで認証の脆弱性に正面から向き合うステップアップ。[Start Here] (ここからスタート)

弊社製品や関連するセキュアコーディングのトピックに関する情報をお送りする許可をお願いします。当社は、お客様の個人情報を細心の注意を払って取り扱い、マーケティング目的で他社に販売することは決してありません。

フォームを送信するには、「Analytics」のCookieを有効にしてください。完了したら、再度無効にしてください。