※本ブログは米国時間2025年8月4日に公開されたA10本社ブログの日本語訳です。原文はこちらからご覧ください。

APIは攻撃対象として非常に人気が高く、APIエンドポイントに対する攻撃のほぼ全ては、大規模な連携型ボットネットを活用しています。近年、攻撃手法は必ずしも大きく変化しているわけではありませんが、ソフトウェアロボットの活用により、攻撃は自動化・高度化され、回避能力も強化されています。

ボットによる攻撃を始めて知るという方のために、まずは背景を説明します。

ボットとは?

ボットとは、タスクを実行するプログラムであり、通常はネットワーク経由で動作し、特定のタスクを自動化するソフトウェアロボットです。おそらく皆さんのインフラにも、システムを監視したり、ビルドを開始したり、CI/CDパイプラインで自動化されたテストを実行したりするボットが存在しているでしょう。ボットは、システム管理やサービス提供における多くの面倒な作業を軽減してきました。これは、ロボットが食事を作ったり芝刈りをしてくれたりする世界を人類が初めて夢見て以来、ロボット工学が抱いてきた期待です。

アイザック・アシモフは、未来の世界を描いた著書の中で、ロボットのファームウェアに「人間に危害を加えてはならない」というルールを組み込んだことで有名です。しかし、私たちが懸念しているロボットは、アシモフのロボット3原則の第1法則に必ずしも従っているわけではありません。

これらは、不正な活動を自動化し、正当なシステムの脆弱性を突き、サイバー犯罪の下働きをなくすために書かれた、悪質なボットです。

アシモフの有名な警告に明らかに違反して、これらのボットは攻撃を行うために設計されています。技術が進歩するにつれて、サイバー犯罪者も大規模な攻撃、偵察、発見、回避のためにボットを使用しているのです。

スケーリング攻撃(ボットネット)

単一のソフトウェアロボットは大きな被害をもたらす可能性がありますが、動作が遅く、検出やブロックも容易です。巧妙な攻撃者は、多数のコンピュータを巧みにシステムネットワークに組み込み、それぞれに何らかの攻撃を実行させることで、この課題を回避しようとします。こうしたシステムネットワークこそが、皆さんがよく耳にする「ボットネット」です。

攻撃者はボットネットの処理能力を構築、購入、またはレンタルし、それぞれが独自のIPアドレスを持つシステムの連合としてボットが動作するように設計します。こうすることで、攻撃者は攻撃の速度、頻度、強度を高めると同時に、ネットワーク内の単一のノードが発見されブロックされた場合でも、自身の犯罪行為への巻き添え被害を軽減します。

これらのボットネットの規模は驚異的であり、攻撃者は大きく3段階で利用します。まず、偵察活動を連携させることで、サイトに関する調査資料を迅速に構築します。次に、防御側と防御システムの双方を惑わそうと、数百、数千のボットが生成するトラフィックストリームの中に真の目的を隠すための圧倒的なノイズを生成します。そして3つ目に、これらのボットネットを悪用して正規のシステムを機能不全に陥れ、お馴染みの分散型サービス拒否攻撃(DDoS攻撃)で圧倒します。

ボットによる探索

最近、攻撃者が攻撃の偵察段階に多くの時間を費やしていることが観察されています。特にAPIは、通常、より多くのビジネスロジックを公開し、それによってより多くのデータや個人識別情報(PII)が漏洩する可能性があるためです。攻撃者がこの段階でボットを使用するのは、検知されることなく迅速に調査、情報収集、テストを行えるためです。

例えば、攻撃者は価値の高い標的や脆弱な標的を特定しようとする際、数千台のホストに分散されたボットネットを頻繁に利用します。各ホストには固有のIPアドレスがあり、従来の防御システムではIPアドレスを主要な制御プレーンとして利用しているため、こうした偵察活動はしばしば見過ごされてしまいます。セキュリティチームが、単一のホスト(単一のIPアドレスを持つ)がすべてのURLまたはパスにアクセスしようとしているのを観察しているとしましょう。これは明らかに疑わしいものです。しかし、その活動が複数のIPアドレスに分散されている場合、異なるユーザがアプリケーションの異なる機能を利用しているように見えます。そのため、不正な活動は迅速に検出されない可能性があります。

新しいCVE(Common Vulnerabilities and Exposures:共通脆弱性識別子)が発表されるたびに、このようなシナリオがよく見られます。セキュリティ専門家が、ある潜在的な攻撃パターンが単一のIPアドレスから50万回も侵入してきたと確認した場合、それは明らかに悪意のある攻撃です。そのボットはブロックされます。しかし、同じ攻撃者がボットネット内の数百、数千のホストに攻撃活動を分散させた場合、各ホストのIPアドレスからの侵入は検出閾値を下回り、攻撃は検知されません。

結局のところ、攻撃者の最終目標は、ボットネットとその規模を利用して、API エンドポイントの弱点を調査する際に目立たないようにすることです。

ボットによる攻撃

攻撃者は発見と偵察の後、その結果を活用して攻撃を開始します。ここでもボットが大きな役割を担い、攻撃ボットの連合ネットワークに作業を委託することで、攻撃を「低速かつゆっくりと」進めることができ、防御側による検知を困難にすることができます。

それほど遠くない昔は、攻撃は比較的容易に発見できました。DDoS攻撃やクレデンシャルスタッフィング攻撃を受けると、サーバにアクセスしようとするIPアドレスの数が急増し、攻撃を仕掛けたりログイン認証情報を入手しようとしたりしていました。これは異常で不審な活動として容易に特定できます。しかし今日では、攻撃者が広範囲に分散したIPアドレスを使用する、低速でゆっくり進行する攻撃がますます多くなっています。各IPアドレスは1分ごと、あるいは5分ごとに1つのリクエストしか送信しません。これらのリクエストは正当なものに見えますが、実際には認証情報を盗もうとしているのです。

このように複数のIPアドレスへの負荷分散により、1つのIPアドレスがブロックされても、攻撃継続可能なIPアドレスが数千も残ります。驚くべきことに、この手法は自己認識(self-awareness)へと進化しています。Skynetが感覚を持つようになったら何が起こるかは周知の事実です。クレデンシャルスタッフィング攻撃では、攻撃者が偵察によって、ログイン試行が3回失敗するとIPアドレスがブロックされることを知っている場合、1つのIPアドレスで2回ログインを試み、その後次のIPアドレスによる攻撃へと移ります。

結局、攻撃者は盗んだ数十万の IP アドレスとボットを組み合わせることで、はるかに迅速に攻撃を進めることができます。つまり、API をマッピングし、脆弱なターゲットを特定して、それをターゲットにすることができ、IP アドレスを「失う」ことなくすべて実行できるのです。

ボットによる回避

攻撃者がボットを囮として使用し、真の標的に気づかれずに攻撃を仕掛けるケースが増えています。この煙幕を作るために、攻撃者はDDoS、SQLi、XSSといった明らかな攻撃を次々と仕掛けます。これらの攻撃は、セキュリティソリューションを機能不全に陥らせたり、セキュリティ担当者が追跡しなければならない数千ものアラートを発生させたりします。攻撃者の真の目的は、そのようなアラートに埋もれてしまいます。その真の目的は、特定のAPIにおけるオブジェクトレベルの認証の不具合やBOLA脆弱性を探すといった、より標的を絞った攻撃かもしれません。セキュリティチームが混乱している隙に、攻撃者はユーザIDを列挙し、APIに欠陥あるいは不十分な認証機能があるかどうかを特定して、重要データへアクセスすることができます。