デジタルトランスフォーメーション(DX)の原動力として、近年急速に普及しているAPI(アプリケーション・プログラミング・インタフェース)。企業は自社でソフトウェアを開発するのではなくAPIを活用することで、ユーザー体験を向上する新しいアプリケーションを迅速かつ安価に開発することができます。
一方サイバー攻撃者にとって、APIは侵入経路を増やして、攻撃領域を拡大できる手段であるほか、ビジネスロジックの悪用や詐欺などのボット攻撃において格好の標的なのです。このようなAPIを悪用した攻撃は、驚異的なペースで増加しています。
Impervaの最新レポート「悪性ボットに関する報告」によると、2022年に発生したAPIを標的とした攻撃のうち、17%はビジネスロジックの悪用を試みるボットで、21%はその他の自動化脅威でした。Open Worldwide Application Security Project(OWASP)は、APIへの最大の脅威は、自動化された脅威の保護の欠如としています。
そこで本稿では、APIがボット攻撃の標的になっている理由を説明します。
APIは、モダンなソフトウェア開発を行う上で不可欠です。Impervaの委託調査によると、企業が管理するAPIは平均300件にも上ります。APIの普及に比例し、攻撃領域も拡大するため、今後APIは攻撃者の最大の標的になるとも考えられます。
可視性の欠如
APIを利用する企業は、自社のすべてのAPIを特定して文書化すべきです。しかし実際のところ、すべてのAPIがインベントリ化されていない、あるいは把握できていないのが多くの企業の現状です。次のようなAPIは、「シャドーAPI」と呼ばれています。
- 非推奨であるにもかかわらず削除されていない古いAPIエンドポイント
- インベントリ化・文書化されていない新規のAPIエンドポイント
- 開発者の不注意が原因で、変更を加えた結果インターネット上に露呈してしまった、本来は非公開であるはずのAPIエンドポイントな
Imperva Threat Researchによると、APIトラフィック全体の14%がシャドーAPIに接続しています。存在すら把握できていないAPIを保護するのは困難です。
さらに、APIへのトラフィックを人間とボット、良性ボットと悪性ボットといったように区別することも、多くの企業にとって課題となっています。APIは自動化クライアント向けに設計されており、すべてのトラフィックをボットとして検知する上、大量のリクエストを処理するため、悪意のあるボットによるトラフィックを発見・阻止するのは困難です。その結果、攻撃者は検知を回避しつつ、ボット攻撃を仕掛けることができてしまうのです。
このような脅威への対策として、APIの対象を一般消費者のみにセグメント化することがあります。多くのAPIは、モバイルアプリやブラウザアプリ上のWebページにデータを提供できるよう設計されています。企業はAPIの対象を特定することで、無許可のクライアントによるAPIの悪用を制限できます。
機密データへの直接的なアクセス
APIは、さまざまな機密情報にアクセスする直接的な経路としての役割を果たします。Impervaの分析によると、APIの13%は、クレジットカード番号や住所など、機密性の高い情報を取り扱っています。このようなAPIに攻撃者がアクセスできた場合、APIが取り扱う全データへのアクセスが可能となり、情報漏洩につながる可能性があります。
APIは性質上、サイバー攻撃の標的になりやすい
APIは機械可読であるため、開発者にとって解析しやすく、一方攻撃者にとっても悪用しやすくなっています。APIはSQLインタフェースと同様、データのクエリを簡素化しますが、そのロジックが公開されます。そのため攻撃者はブラウザを装わずに、ボットなどの自動化ツールを簡単に使用できてしまうのです。
もう1つの特性として、大半の従来型Webアプリがステートフルであるのに対し、APIは一般的にステートレスです。ステートレス・アプリケーションは、ユーザーのセッション情報を追跡せず、各リクエストを独自のトランザクションとして扱い、同一ユーザーによる過去のリクエストに関する情報を保持しません。そのため、ステートレス・アプリケーションはステートフルより高リスクとされています。
APIを標的とした攻撃は比較的シンプルであり、レンタルボットなどを通じ、攻撃の組織化も容易です。攻撃者にとって、APIはコストと労力がかからないうえで、狙いやすい標的なのです。
見落としがちなビジネスロジック
API開発者は、APIを保護するための標準ルールセットは適用するものの、ビジネスロジックは見落としてしまうことが多くなっています。APIに適切な認証・認可のメカニズムが存在する場合でも、実装の欠陥があると、攻撃者がAPIを悪用することが可能になってしまいます。
ビジネスロジックが悪用された結果、データ収集を目的とした悪性ボットが検索APIをスクレイピングし、その後ユーザーアカウントへの不正アクセスを目的としたボットがログインAPIに攻撃を仕掛けるケースなどが考えられます。APIは認証手段としてトークンを用いるため、攻撃者がトークンを窃盗できてしまうと、APIと関連するアカウントやデータが不正アクセスのリスクにさらされてしまうのです。
多くの開発者はボットトラフィックの軽減を試みる際、レート制限、シグネチャベースの検知、ブロッキングプロトコルなどを用いますが、これらの従来型の手法は高度な悪性ボットに対して無効です。
ボットの悪用方法はさまざま
APIのビジネスロジックが悪用された場合のリスクとして、スクレイピングやアカウント乗っ取りのほかに、分散型サービス拒否(DDoS)攻撃も考えられます。攻撃者はボットを活用し、APIにDDoS攻撃を仕掛けることで、APIへのトラフィックを圧倒し、正規ユーザーが利用不能な状態に陥れることができます。
GraphQLベースAPIの場合、ユーザーがクエリを行うデータの柔軟性とクエリの複雑性が増すため、バックエンドデータベースへのリクエストが最適化されない状況が発生し、DDoS攻撃の阻止はさらに困難になることもあります。
ボットは、APIにSQLインジェクションやクロスサイト・スクリプティングなどの脆弱性があるかを調査するためにも使用できます。これは攻撃ではないものの、攻撃者が悪用可能な潜在的な脆弱性を特定するため、偵察段階に実施されます。
ビジネスロジックレベルの脆弱性は多くの場合、APIの実装の欠陥に固有です。例えば過剰にデータが露出されている場合、悪性ボットは本来の機能に必要以上の過剰な量のデータを返すAPIを呼び出すことで、データを流出させることが可能です。攻撃者は、この種のビジネスロジックの脆弱性を発見するための偵察としてもボットを悪用しています。
企業のAPIへの依存が高まる中、保護すべき攻撃領域は大幅に拡大しています。さらに、ボットも常に高度化しており、企業へのリスクは、今後ますます増加の一途をたどることが想定されます。
APIのセキュリティは、多層防御ソリューションを通じた確保を推奨します。企業は正規のユーザー体験に影響を及ぼすことなく、高度なボット攻撃からWebサイト、モバイルアプリ、APIを保護する必要があります。さらに、ボットオペレーター、攻撃者、不道徳な競合他社、詐欺師などによるアプリケーションの悪用、誤用、攻撃を阻止する全体的なアプローチを採用する必要があります。
また、機密データを発見・分類し、全APIを継続的に保護、パブリックAPI、プライベートAPI、シャドーAPIのすべてのAPIを検出できる、効果的なAPIセキュリティモデルを構築することも重要です。
著者プロフィール