Coders Conquer Security:シェアして学ぶシリーズ - 不十分な自動化対策

2019年04月04日掲載
ジャープ・カラン・シン著
ケーススタディ

Coders Conquer Security:シェアして学ぶシリーズ - 不十分な自動化対策

2019年04月04日掲載
ジャープ・カラン・シン著
リソースを見る
リソースを見る

古い酒場や地下のクラブのドアに行くところを想像してみてください。扉の小さな穴がスライドして開き、太った用心棒がパスワードを尋ねる。訪問者はパスワードを知らないので、推測します。それが間違っていたので、用心棒は彼らを中に入れませんでした。

これが通常の流れです。ここで、間違ったパスワードを推測したお客様が、すぐに再挑戦し、間違ってしまい、再びアクセスを拒否されたとします。そして、その訪問者が辞書を開いて単語を読み上げ、ツチノコのようなものから始めて、ありとあらゆる単語を試していくとします。

しかし、自動化対策が不十分なWebサイトやアプリケーションでは、そのような行為が行われてしまいます。ユーザーは、適切なキャッチフレーズに出会うまで、自動化技術を使ってでもパスワードを試し続けることができるのです。

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

  • 不十分な自動化を悪用する攻撃者の手口
  • 反自動化が不十分なアプリケーションが危険な理由
  • この脆弱性を修正することができる技術

攻撃者はどのようにして不十分な自動化を利用するのか?

今回の酒場の訪問者のように、自動化や辞書を使った攻撃を行うことは、サイバーセキュリティの世界では新しいことではありません。実際、ブルートフォース(総当り)方式の攻撃は、これまでに展開された最初のハッカー技術の一部でした。また、コンピュータが高速化するにつれて、その効率も向上していきました。高速なコンピュータであれば、攻撃側のコンピュータと標的となるシステムの間の接続速度にもよりますが、わずか数分で単語の辞書全体を使い切ることができます。

このような自動化された攻撃のために、自動化防止ソフトウェアや技術が生まれたのです。これにより、ユーザーの行動が人間の典型的な行動の規範から外れているかどうかをアプリケーションが判断することができるようになります。

アプリケーションに自動化防止のチェックが十分に行われていない場合、攻撃者は、一致するものが見つかるまでパスワードを推測し続けることができます。また、自動化ソフトウェアを使用して、ウェブサイトのフォーラムへのコメントをスパムするなど、別のことをするかもしれません。

なぜ不十分な自動化は危険なのか?

悪意のあるユーザーが自動化を利用してセキュリティを回避しようとすることは危険です。コンピュータの黎明期から現在に至るまで自動化型の攻撃が続いているのは、非常に効果的だからです。自動化プログラムに無制限の時間を与えてパスワードを送信し、間違った推測をしても何の影響も受けないようにすれば、最終的に正しいパスワードを見つけることができます。

フォーラムなどで使用される場合、明らかにスクリプト化されたコメントが次々と表示されると、有効なユーザーを苛立たせたり、システムリソースを浪費することで一種のサービス拒否攻撃のような働きをしたりするかもしれません。また、自動投稿は、できるだけ多くの人にルアーを見せるために、フィッシングなどの攻撃のツールとして使われることもあります。

不十分な自動化対策問題の修正

自動化対策が不十分であるという問題を解決するためには、すべてのアプリケーションに、実行されているアクションが人間によるものなのか自動化ソフトウェアによるものなのかを判断する機能を持たせる必要があります。最も一般的で広く使用されている技術の1つに、Completely Automated Public Turing test to tell Computers and Humans Apart (CAPTCHA)があります。

CAPTCHAは、1950年にコンピュータ科学者のアラン・チューリングが提唱した、人間とコンピュータの行動を分離・識別するためのチューリング・テストが基本となっています。最近のCAPTCHAは、人間には簡単に解ける問題でも、コンピュータには苦手な問題、あるいは単に解けない問題を提示しています。よく知られているのは、グリッドで区切られた写真を提示し、花や顔などの特定のアイテムが写っているすべてのセクターを特定するよう求めるものです。コンピュータは何を要求されているのか理解できないので、画像をスキャンすることもできません。たとえできたとしても、画像認識は、特別に作られていないほとんどのプログラムでは不可能です。

CAPTCHAの他の例としては、ぼやけた文字を表示したり、簡単な論理的質問をしたり、質問を大声で再生したりするものがあります。CAPTCHAチャレンジをパスワード入力時など、アプリケーションの重要なポイントに導入することで、自動化プログラムを途中で止めることができます。

また、同じソースからの間違った推測の数を制限するだけで、自動化プログラムを停止させることも可能です。あまりにも多くの間違った推測が送られてきた場合、アカウントを一時的にロックアウトして、自動化プログラムが有用でなくなるのを遅らせたり、人間の管理者がロックを解除する必要があるかもしれません。このようにして、アプリケーション内の自動化防止の脆弱性を防ぐことができます。

不足している自動化の詳細情報

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

今すぐ不十分な自動化防止機能を見つけて修正する準備はできていますか?あなたのスキルをゲームアリーナで試してみませんか?[Start Here]をクリックしてください。

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

著者

Jaap Karan Singh

もっと知りたい?

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

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

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

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

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

リソース・ハブ

Coders Conquer Security:シェアして学ぶシリーズ - 不十分な自動化対策

2024年1月22日発行
Jaap Karan Singh著

古い酒場や地下のクラブのドアに行くところを想像してみてください。扉の小さな穴がスライドして開き、太った用心棒がパスワードを尋ねる。訪問者はパスワードを知らないので、推測します。それが間違っていたので、用心棒は彼らを中に入れませんでした。

これが通常の流れです。ここで、間違ったパスワードを推測したお客様が、すぐに再挑戦し、間違ってしまい、再びアクセスを拒否されたとします。そして、その訪問者が辞書を開いて単語を読み上げ、ツチノコのようなものから始めて、ありとあらゆる単語を試していくとします。

しかし、自動化対策が不十分なWebサイトやアプリケーションでは、そのような行為が行われてしまいます。ユーザーは、適切なキャッチフレーズに出会うまで、自動化技術を使ってでもパスワードを試し続けることができるのです。

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

  • 不十分な自動化を悪用する攻撃者の手口
  • 反自動化が不十分なアプリケーションが危険な理由
  • この脆弱性を修正することができる技術

攻撃者はどのようにして不十分な自動化を利用するのか?

今回の酒場の訪問者のように、自動化や辞書を使った攻撃を行うことは、サイバーセキュリティの世界では新しいことではありません。実際、ブルートフォース(総当り)方式の攻撃は、これまでに展開された最初のハッカー技術の一部でした。また、コンピュータが高速化するにつれて、その効率も向上していきました。高速なコンピュータであれば、攻撃側のコンピュータと標的となるシステムの間の接続速度にもよりますが、わずか数分で単語の辞書全体を使い切ることができます。

このような自動化された攻撃のために、自動化防止ソフトウェアや技術が生まれたのです。これにより、ユーザーの行動が人間の典型的な行動の規範から外れているかどうかをアプリケーションが判断することができるようになります。

アプリケーションに自動化防止のチェックが十分に行われていない場合、攻撃者は、一致するものが見つかるまでパスワードを推測し続けることができます。また、自動化ソフトウェアを使用して、ウェブサイトのフォーラムへのコメントをスパムするなど、別のことをするかもしれません。

なぜ不十分な自動化は危険なのか?

悪意のあるユーザーが自動化を利用してセキュリティを回避しようとすることは危険です。コンピュータの黎明期から現在に至るまで自動化型の攻撃が続いているのは、非常に効果的だからです。自動化プログラムに無制限の時間を与えてパスワードを送信し、間違った推測をしても何の影響も受けないようにすれば、最終的に正しいパスワードを見つけることができます。

フォーラムなどで使用される場合、明らかにスクリプト化されたコメントが次々と表示されると、有効なユーザーを苛立たせたり、システムリソースを浪費することで一種のサービス拒否攻撃のような働きをしたりするかもしれません。また、自動投稿は、できるだけ多くの人にルアーを見せるために、フィッシングなどの攻撃のツールとして使われることもあります。

不十分な自動化対策問題の修正

自動化対策が不十分であるという問題を解決するためには、すべてのアプリケーションに、実行されているアクションが人間によるものなのか自動化ソフトウェアによるものなのかを判断する機能を持たせる必要があります。最も一般的で広く使用されている技術の1つに、Completely Automated Public Turing test to tell Computers and Humans Apart (CAPTCHA)があります。

CAPTCHAは、1950年にコンピュータ科学者のアラン・チューリングが提唱した、人間とコンピュータの行動を分離・識別するためのチューリング・テストが基本となっています。最近のCAPTCHAは、人間には簡単に解ける問題でも、コンピュータには苦手な問題、あるいは単に解けない問題を提示しています。よく知られているのは、グリッドで区切られた写真を提示し、花や顔などの特定のアイテムが写っているすべてのセクターを特定するよう求めるものです。コンピュータは何を要求されているのか理解できないので、画像をスキャンすることもできません。たとえできたとしても、画像認識は、特別に作られていないほとんどのプログラムでは不可能です。

CAPTCHAの他の例としては、ぼやけた文字を表示したり、簡単な論理的質問をしたり、質問を大声で再生したりするものがあります。CAPTCHAチャレンジをパスワード入力時など、アプリケーションの重要なポイントに導入することで、自動化プログラムを途中で止めることができます。

また、同じソースからの間違った推測の数を制限するだけで、自動化プログラムを停止させることも可能です。あまりにも多くの間違った推測が送られてきた場合、アカウントを一時的にロックアウトして、自動化プログラムが有用でなくなるのを遅らせたり、人間の管理者がロックを解除する必要があるかもしれません。このようにして、アプリケーション内の自動化防止の脆弱性を防ぐことができます。

不足している自動化の詳細情報

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

今すぐ不十分な自動化防止機能を見つけて修正する準備はできていますか?あなたのスキルをゲームアリーナで試してみませんか?[Start Here]をクリックしてください。

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

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