前回の記事では、APIが直面するセキュリティ脅威の全体像について述べた。今後日本でも、インターネット上でさらにAPIの公開が加速していくが、既にAPIはサイバー攻撃の新たな標的(Attack Surface)となっており、その避け難いいくつかの理由も挙げた。今回は実際のAPIへの攻撃手法について、整理してより詳しく説明していこう。
現在行われているAPIへの攻撃は大きく以下の3つに分けることができる。
- ウェブアプリケーション攻撃
- APIエコシステム攻撃
- DDoS(分散型サービス拒否)攻撃
これらを順に見ていく。
1.ウェブアプリケーション攻撃:
APIに対しても、一般的なウェブに対して行われるウェブアプリケーション攻撃の手法が頻繁に用いられている。APIサーバの中でも通常のウェブアプリケーションと同様のプログラムが多く動作しており、攻撃側はAPIに対しても同様の手法を用いることができる。このタイプの攻撃は、以下の2つに分けて考えることができる。
- 1.1 インジェクション型攻撃
- 1.2 認証機能への攻撃
ウェブアプリケーション攻撃に精通した読者にはおさらいになる部分も多いが、それぞれ解説していこう。
1.1 インジェクション型攻撃
インジェクション型攻撃は、ウェブアプリケーション攻撃の大半の割合を占めている攻撃手法だ。この攻撃は、サーバやアプリケーションに存在する脆弱性を悪用して、サーバ上で任意のコマンドやコードの実行(RCE:Remote Code Execution)を目論む。APIを攻撃する場合は、攻撃の標的がAPIサーバだけではなく、サブシステムを構成するAPIクライアントを狙うケースも考えられる。インジェクション攻撃の代表的な攻撃手法を以下に挙げる。
1.1.1 SQLインジェクション
アプリケーションが想定していないSQL文をSQLサーバに実行させることで、データベース上のデータの搾取やデータベースに不正なデータを書き込む目的の攻撃手法。APIサーバも一般的なウェブアプリケーションと同じくデータベースと連携しているため同様の手法が用いられる。攻撃手法としては最も一般的な手法であり、アカマイでも契約顧客のAPIサーバに対する多くのSQLインジェクション攻撃を検知している(図1)。
1.1.2 コマンド・インジェクション
サーバ上で任意のコマンドやコードを実行する攻撃手法。APIサーバ、API開発フレームワーク(SpringやJAX-RSなど)やアプリケーション自体に潜む脆弱性を悪用して攻撃を行う場合がある。2018年8月に公開されたApache Struts2脆弱性に対する攻撃はこの攻撃の一種といえる。
1.1.3 XSS(クロス・サイト・スクリプティング)
クライアント側で不正なコード(主にJavaScript)を実行させる攻撃の手法。他のウェブアプリケーション攻撃の手法と異なり、攻撃者が用意したスクリプトがサーバではなくクライアントの環境内で閉じて実行されるため、大きな被害が出るまでサーバ側で検知することが非常に難しい。最近の例では、サイバー犯罪グループMagecartによる、British Airwaysへの攻撃(決済カード情報などが流出した)にこの手法が用いられたと言われている。
図1:アカマイが検知したAPIへのアプリケーション攻撃手法の割合