セキュリティとストレージのリーディングカンパニー|バラクーダ > ブログ > Web Application Firewall > API(アプリケーションプログラミングインターフェース)の保護

API(アプリケーションプログラミングインターフェース)の保護
TUSHAR RICHABADAS

2018年10月11日

APIが過去数か月間にわたって数回、侵害されてきたことは周知のとおりです。この侵害とは、レガシーAPIによるBlackHatカンファレンス出席者の個人情報の漏洩、T-モバイルによる個人情報の漏洩、およびT-モバイルとAT&Tの両社による顧客アカウントのPIN(暗証番号)の漏洩(T-モバイルによる情報漏洩は2件)です。

APIとは、その名のとおり、あるソフトウェアが別のソフトウェアと通信するための方法です。わかりやすい例はTweetDeckなどのTwitterモバイルアプリです。TweetDeckは、TwitterのAPIを使用して、基本的なデータを取得し、基本的なアクションを実行します。また、リスト、カラムなどのさまざまな機能を実装しています。このため、TweetDeckを使用して、カスタマイズされた優れたユーザインターフェースでタイムラインを表示し、ツイートとダイレクトメッセージを送信する場合は、TwitterのAPIを使用していることになります。

BlackHatで情報漏洩が発生した経緯

BlackHatは米国ネバダ州ラスベガスで毎年開催されている世界最大規模のサイバーセキュリティイベントです。今年BlackHatに参加した出席者の一人はNinjaStyleというハンドルネームで知られているハッカーです。NinjaStyleは、米国コロラド州に住んでおり、侵入テストとセキュリティ調査を行っています。NinjaStyleは、自分のバッジにNFC(近距離無線通信)タグ、つまりデータを保存し、別のNFCデバイスに送信できるチップが付けられていることに偶然、気づきました。このようなタグはBlackHatなどのカンファレンスで連絡先情報を交換するための便利で効率的な方法として使用されています。

NinjaStyleは、BlackHatのバッジに付けられていたNFCタグを標準のタグ読み取りアプリで読み取ることができたため、BlackHatアプリを分解し、BlackHatアプリがアプリケーションサーバと通信するためのAPIを見つけることができました。また、タグ上の情報(eventIDとbadgeID)によって、タグに関するすべての情報(名前、メールアドレスなど)をこの未認証のAPI上で取得できました。NinjaStyleはBlackHatに参加したすべての出席者の情報をブルートフォース攻撃で盗み出そうとしました。また、少し調べただけで、すべての出席者の情報を特定の範囲のbadgeIDで取得できることを確認し、すべての情報を6時間で取得できました。BlackHatは、その後この情報漏洩を確認し、BlackHatのパートナーは、このAPIをレガシーAPIと呼んで、シャットダウンしました。

T-モバイルによる2件の情報漏

下記の例では、T-モバイルによる2件の情報漏洩に注目します。1件目は脆弱なAPIによる顧客の機密情報の漏洩です。T-モバイルによると、社内のサイバーセキュリティチームが、この情報漏洩を検出し、被害の拡大を防止しました。また、この情報漏洩の影響を受けた顧客は、わずか約3%(230万)であり、漏洩した情報は名前、請求先郵便番号、電話番号、メールアドレス、アカウント番号、アカウントタイプ、および暗号化パスワードです。

2件目はアップルのオンラインストアで発生しました。T-モバイルの約7700万の顧客のSSN(米国社会保障番号)とPINが部分的に漏洩しました。アップルのオンラインストアは、APIを使用して、T-モバイルのシステムと通信していました。このAPIは顧客がT-モバイルの月払いで新しいiPhoneを購入する場合に使用されていました。顧客はアップルのオンラインストアでSSNとT-モバイルのPINの下4桁を入力するための認証フォームにリダイレクトされました。情報漏洩は、この時点で発生しました。このAPIでは、クエリがレート制限されていなかったため、クエリを無制限に実行できました。つまり、APIにブルートフォース攻撃を実行できたため、情報が盗み出されたということです。この情報漏洩の原因は、APIが、数回の失敗後にクエリを強制的にロックアウトするというレート制限を実装していなかったことです。

類似の別の脆弱性では、アシュリオンで保険を購入したAT&Tの顧客のPINが盗み出されました。AT&Tの顧客の電話番号を知っている人なら誰でも、フォームにその電話番号を入力し、無制限に入力できるPINフィールドを悪用して、その電話番号のPINをブルートフォース攻撃で盗み出すことができました。

APIの保護方法

APIは現在、非常に一般的になっています。分割払いによる電話の購入からオンラインによる昼食代の支払まで、さまざまな機能を実現するために相互に通信するシステムの数は膨大であり、そのすべてがAPIを使用しています。APIをハッカーにとってまったく新しい絶好の場所にしないようにするには、高度なセキュリティが必要です。上記の脆弱性は長年にわたって知られてきたよくあるWebアプリケーション脆弱性であり、プログラミング(推測/列挙できないID)と防止技術(レート制限、ロックアウト)の両方による対策も知られてきました。上記のいずれの情報漏洩でも、長年にわたる優れた対策に従うだけで、苦労して得た顧客の信用を失うことも、顧客の情報に長期的な損害を与えることもなかったでしょう。

APIをセキュアに導入および保護するための最も簡単な方法の一つはAPI保護機能が実装されたWAF(Webアプリケーションファイアウォール)を使用することです。Barracuda Web Application Firewallでは、WebアプリケーションとAPIアプリケーションが、ホスティングされている場所に関係なく、完全に保護されます。また、API攻撃サーフェス全体を保護できます。Barracuda Web Application Firewallは、リバースプロキシとして、すべてのトラフィックをインターセプトし、動的に作成されるURL、リソース名をディレクトリとするURLなど、アプリケーションのすべての部分を保護します。また、下記のセキュリティ機能を実装しています。

  • APIサービスへのセキュアTLS(Transport Layer Security)フロントエンド
  • コマンドベースのセキュリティ制約とアクセス制御
  • APIセッションセキュリティ
  • API認証および承認
  • XML(Extensible Markup Language)パーサとJSON(JavaScript Object Notation)パーサの保護
  • 悪意のあるユーザによるAPIの悪用の防止(ファーミング対策)
  • JSON/XML内の悪意のあるユーザ入力データのフィルタリング
  • URLパス内の悪意のあるユーザ入力データのフィルタリング
  • 仮想パッチの適用によるAPIの継続的な提供
  • 中央管理によるAPIの監査と分析

Barracuda Web Application Firewallでは、APIの提供を拡張することもできます。つまり、クライアントとバックエンドサーバの間のコネクションを多重化し、バックエンドサーバの負荷を削減して、APIを拡張できるということです。Barracuda Web Application Firewallは、APIを迅速に提供し、サーバの負荷を削減するためのキャッシュおよび圧縮機能を実装しています。ただし、最も重要なことは、APIのSLA(サービスレベルアグリーメント)を確保するために役立つということ、つまり組み込みのレートコントロールおよびブルートフォース対策機能を使用して、APIのさまざまな部分にさまざまなサービスレベルを適用できるということです。

Barracuda Web Application FirewallとBarracuda WAF-as-a-Serviceの詳細については、弊社のサイト(www.barracuda.com/waf)をご参照ください。

*本内容はBarracuda Blog から、2018年10月2日 Secure your APIs を翻訳したものです。


コラム(バラクーダブログ)一覧へ

お問い合わせ

CONTACT