検索
特集/連載

「API攻撃」とは何か? 情報漏えいを引き起こす5つの手口APIセキュリティを強めるポイントも

APIへの攻撃が増加しており、企業に深刻な情報漏えいのリスクをもたらしている。API攻撃の手口と、その対策としてのAPIセキュリティのベストプラクティスを紹介する。

Share
Tweet
LINE
Hatena

 近年、従来のWebアプリケーションを狙った攻撃に加え、API(アプリケーションプログラミングインタフェース)を標的とするサイバー攻撃が急増している。多くの企業がWeb APIを外部に公開するようになり、それが新たな攻撃対象となっているからだ。

 APIは、ソフトウェア同士がデータや機能を共有するための通信手段だ。APIのやりとりを実現する仕組みの一つが「APIキー」だ。これは、ソフトウェアプログラム間の接続を許可するための識別情報であり、APIを呼び出すアプリケーションを特定し、アクセス権限を確認する“パスワードのような”役割を果たす。

 APIへのリクエストは、ユーザーがWebブラウザからWebサイトにアクセスする仕組みと構造が似ている。そのため、Webサイトを標的としたサイバー攻撃と同様の手法が、APIに対しても通用する可能性がある。

API攻撃の5つの代表例

 攻撃者は、企業やサービスが提供するAPIの脆弱(ぜいじゃく)性を突く。攻撃者が用いる攻撃手法や悪用テクニックとして、次のようなものが確認されている。

1.インジェクション攻撃

 APIがクエリ文字列(URLの末尾に付く、Webサーバにさまざまなデータを送信するための文字列)の適切なサニタイズ(無害化)を行っていない場合、SQLインジェクションやクロスサイトスクリプティング(XSS)などのインジェクション攻撃に対して脆弱となる。

 インジェクション攻撃では、攻撃者は悪意あるコードをクエリに挿入することでAPIを欺き、本来アクセスできない機密データへの不正アクセスを実現する。これにより、情報の窃取、改ざん、削除、差し替えが可能となる。

2.アクセス制御の不備による攻撃

 攻撃者がAPIに直接アクセスしてセキュリティの脆弱性を悪用することで、標準的なアクセス制御の防護策を回避することができる。認証や認可の仕組みに欠陥があるAPIでは、大規模なデータ漏えいの温床となり得る。

 「オブジェクトレベルの認可の不備」(BOLA)による攻撃では、APIがリクエスト内のユーザーIDで認証したにもかかわらず、クエリ文字列に含まれる異なるIDを受け入れてしまう可能性がある。APIが認証されたユーザーが要求したデータにアクセスする権限を持っているか(リクエスト内のユーザーIDがクエリ内のユーザーIDと一致するかどうか)を検証していない場合、攻撃者は他のユーザーのアカウント情報に容易にアクセスできる。

 APIにレート制限(攻撃対象領域を減らすために、一定時間内に行える呼び出し回数を制限すること)が設定されていない場合、攻撃者は大量の機密情報を一気に抜き取ることができる。過去には、認証不要でアクセス可能な脆弱なAPIエンドポイントが攻撃を受けた例もある。

3.過剰な公開API

 API管理が適切に行われていない場合、不要なAPI(例えば古いバージョンやテスト用API)がインターネットに公開されたままになっていることがある。こうしたAPIがリクエストに対して過剰な情報を返すことで、機密データが漏えいするリスクが生じる。

4.DoS/DDoS攻撃

 APIがDoS(サービス拒否)攻撃やDDoS(分散型サービス拒否)攻撃への対策を備えていない場合、攻撃者はAPIに大量のデータを送信して、Webサイト全体をダウンさせることができる。

5.サードパーティー経由の攻撃

 攻撃者は、サードパーティーを通じてAPIを標的にすることもできる。例えば、攻撃者が信頼された外部パートナーが保持する正規のAPIキーを入手すれば、それを使って標的のAPIにアクセスできる。

API攻撃への防御策

 組織は、従来のWebアプリケーションを保護するのと同様にAPIを防御すべきだ。アプリケーションセキュリティのベストプラクティスに従い、適切なセキュリティ対策を導入する必要がある。APIの脆弱性を軽減するために、以下の方法を検討するとよい。

  • クエリ文字列を全てサニタイズし、XSSやSQLインジェクションなどの攻撃を防ぐ。
  • 強固なユーザー認証と認可の仕組みを導入し、不正なユーザーがAPI経由でデータにアクセスするのを防止する。
  • DoS/DDoS攻撃に対応したセキュリティソフトウェアを、WebサイトだけでなくAPIにも適用する。
  • インターネットに公開されている全てのAPIの正確なリストを保持し、どのサードパーティーやユーザーがアクセス権を持つのかを把握する。APIがエンドユーザーに返す情報の種類と量を評価し、必要以上にならないようにする。

雨輝ITラボ(株式会社リーフレイン)

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る