お問い合わせ

脆弱性?脆弱性診断?セキュリティの専門家が徹底解説セキュリティ対策の疑問
すべて解決!

セキュリティの基本から脆弱性診断の深掘りまで、このシリーズがあなたのセキュリティ対策の疑問を専門家がわかりやすく徹底的に解説し解消します。
mv-image
セキュリティの基本から脆弱性診断の深掘りまで、このシリーズがあなたのセキュリティ対策の疑問を専門家がわかりやすく徹底的に解説し解消します。
problem017

017

APIって何?APIにも脆弱性診断が必要な理由と、API診断をする際に準備しておくべき3つのポイント

hatori

羽鳥 拓也

2024年9月17日

現代のWebシステムの中で、API(Application Programming Interface)は欠かせない存在となっています。しかし、APIのセキュリティは十分に考慮されているでしょうか?本記事では、APIとは何か、どこで使われているのか、そしてAPI脆弱性診断をスムーズに進めるために事前に準備をしておくべき3つのポイントについて解説します。

APIとはなにか?

API(Application Programming Interface)は、異なるソフトウェア、システムが相互に通信するためのインターフェースです。APIは、特定の機能やデータにアクセスするためのプロトコルを提供し、ソフトウェア間の連携を容易にします。APIを使用することで、開発者は異なるソフトウェアやシステム、アプリケーションの機能を活用し、効率的かつ迅速に開発を進めることができます。

APIの基本的な仕組み

APIは、サーバに対するリクエストと、リクエスト元へのレスポンスの形式で動作します。クライアント(要求を出す側)はサーバ(要求を処理する側)に対して特定のリクエストを送り、サーバはそのリクエストに基づいて適切なレスポンスを返します。これにより、クライアントはAPIが提供するデータや機能を利用することができます。
例えば、WebブラウザがWebページを表示する際、Webブラウザはサーバに対してHTTPリクエストを送信し、サーバはHTML、CSS、JavaScriptなどのリソースをレスポンスとして返します。APIも同様に、WebブラウザからAPIエンドポイントにリクエストを送信し、サーバがJSONやXML形式のデータを返すことが一般的です。

problem015_img

APIの種類

APIにはいくつかの種類があり、それぞれの用途に応じて異なる仕様が採用されています。以下は主要なAPIの種類です。

  • REST API
    REST(Representational State Transfer)は、最も一般的なAPIの一つです。リソース(データ)はURLで識別され、GET、POST、PUT、DELETEなどのHTTPメソッドを通じて操作されます。REST APIはシンプルなつくりのため、多くのWebサービスで広く利用されています。
  • SOAP API
    SOAP(Simple Object Access Protocol)は、XMLを利用してメッセージを交換するプロトコルです。XML形式を使用して情報を送受信します。
  • GraphQL
    Meta社が開発しているGraphQLは、クライアントが必要とするデータの構造を定義し、定義したデータ構造に応じたレスポンスを取得できるようにするクエリ言語です。これにより、必要なデータだけを取得できるため、APIの効率性が向上します。
  • gRPC
    Googleが開発したgRPCは、プロトコルバッファを使用してデータを交換する高性能なRPC(Remote Procedure Call)フレームワークです。レスポンスの遅延が起こりにくく、単位時間当たりの処理できる量を増やすことができ、マイクロサービス間の通信に適しています。

APIの利用例

APIはさまざまな場面で利用されています。以下にいくつかの具体的な例を挙げます。

  • ソーシャルメディア/SNS
    SNSにおいて、APIを使用すると、他のアプリケーションやWebサイトから、ユーザのSNSアカウントにアクセスし、投稿したデータやアカウントデータなどを取得・操作できます。
  • 地図サービス
    地図サービスのAPIを使用すると、開発者は自分のアプリケーションに地図機能を組み込むことができます。これにより、ユーザは地図の表示や経路検索、場所の検索などが可能になります。
  • 金融サービス
    金融機関のAPIを使用すると、Webサイトやアプリケーションに決済機能を統合することができます。これにより、安全かつ迅速なオンライン取引が可能になります。
  • IoT(Internet of Things)
    IoTデバイスはAPIを通じてデータを送受信し、他のデバイスやクラウドサービスと連携します。例えば、スマートホームデバイスはAPIを使用して制御され、ユーザはリモートでデバイスを操作することができます。

APIを利用する背景

APIを利用するようになった背景として、Webサービスが複雑化し、システムに求められる機能が多くなったことが挙げられます。具体的には、一つのWebサービスにおいても、「SNSのデータを流用したい」「自社のWebサービス上でも他の企業が提供しているデータと同じデータを提供したい」といった要望が増えたり、小規模なサービス同士を組み合わせて連携させることで、一つの大きなアプリケーションとして構築する手法が増えたりしたことが背景として考えられます。

こういったWebサービスが複雑化した背景をもとに注目されたのが、下記のようなAPIの利点になります。

  • 再利用性の向上
    一度開発したAPIは、他のアプリケーションやサービスでも再利用することができます。これにより、開発コストと時間を削減できます。
  • システムの拡張
    APIを使用することで、新しい機能を追加する際に既存のシステムに大きな変更を加える必要がなくなります。そのためAPIを介して新しいサービスや機能を簡単に統合できます。
  • インターフェースの標準化
    APIは標準化されたインターフェースを提供するため、異なるシステム間の互換性が向上し、異なる開発チームが共同で作業しやすくなります。

こうしたメリットからAPIの利用はますます広がっています。適切に利活用することで、Webサービスの多機能化や開発の高速化が期待できるAPIですが、その一方で、セキュリティ対策を怠るとインシデントの原因となる可能性も……。

なぜAPIに対する脆弱性診断が必要?

API脆弱性診断とは、APIのセキュリティを検査し、潜在的な脆弱性を検出します。APIは異なるソフトウェアシステムが相互に通信するためのインターフェースを提供しており、APIが脆弱であれば、不正アクセスやデータ漏洩のリスクが高まります。そのため、APIによる提供サービスのセキュリティ品質を担保するためには、APIの脆弱性を事前に把握しておくことが欠かせません。API脆弱性診断では、以下の点に注目してセキュリティ評価を行います。

■APIが適切に認証および認可を行っているかを確認

これには、OAuthやAPIキーなどの認証・認可に関わる部分が正しく実装されているかを検査し、認証・認可されたユーザのみが適切な操作を行えることを保証します。

  • 認証
    アクセストークン、JWT(JSON Web Token)などの技術を使用して、アクセス要求の正当性を確認します。これにより、APIにアクセスできるのは正規のユーザ、アプリケーションに限定されます。
  • 認可
    ユーザやアプリケーションが実行できる操作を制御します。例えば、読み取り専用の権限しか持たないユーザがデータを変更できないように設定します。

■予期しないエラーや攻撃に対してAPIがどのように応答するかを検査

エラーメッセージに機密情報が含まれていないこと、適切なエラーレスポンスが返されることを確認します。これにより、システムの脆弱性を悪用されるリスクを軽減できます。

■システム特性、ロジックを踏まえた診断の実施

APIで取り扱う情報が画面構成などを含まないデータそのものなので、システム特性やロジックを踏まえたAPI特有のセキュリティリスクの検査が必要です。例えばAPIでデータを取得し、画面で描画に必要なデータのみを表示している場合でも、実際にAPIのレスポンス上では機微情報が含まれている場合などが例として挙げられます。

APIに対して、脆弱性診断を継続的に実施することで、セキュリティレベルを維持し、不正アクセスやデータ漏洩のリスクを最小限に抑え、システムの安全性を確保できます。

API脆弱性診断の実施までに準備しておくべき、3つのポイント

APIの診断の特徴として、Web画面の診断とは異なり、画面という情報が存在せず、仕様やリクエストの構成などを把握しづらい点があります。下記の3つのポイントを事前に準備することで、スムーズな診断を実施することが可能です。

  1. API仕様書の用意
    APIを診断する際は、API仕様書を準備できるとAPIの仕様を正確に把握できます。API仕様書とは、一般的にはAPIの要件や機能の説明、APIを実行するために必要なリクエストヘッダやパラメータが定義されているような定義書のことを指します。Web画面が存在する場合は、診断実施者が画面を操作してシステムの仕様を把握できるのに対して、APIは診断URLなどの情報しか存在せず、APIの仕様を把握する術がありません。このことからAPIを診断する際は、診断会社が確認できるAPI仕様書が事前に準備されていると、診断実施時にAPIの仕様を正確に把握することが可能です。
  2. サンプルリクエストとサンプルレスポンスの用意
    APIを診断する際は、APIのサンプルリクエストとサンプルレスポンスの準備をしておくと、診断を実施する際に診断対象のAPIの挙動をスムーズに確かめられます。上記API仕様書をもとにAPIの要件や機能及び、APIを実行する際に必要なパラメータなども把握できますが、API仕様書のみでは、診断するAPIの正しいリクエスト構成を把握することが難しい場合があります。APIのリクエスト構成を把握できなければ、リクエストを組み立てることに時間を要してしまい、APIの診断実施時間が少なくなる可能性もあります。
  3. 認証方法について
    APIのなかには、ユーザやユーザに割り当てられた権限毎に実行の可否が決められているものがあります。その場合、事前にAPIを実行する前に、ユーザ毎に払い出されたCookie値やアクセストークンが付与され、付与された値をサーバ側で検証し、APIを実行可能なユーザであるか、権限が不足していないかの確認が行われます。もし診断対象のAPIが、事前にユーザの認証など必要なAPIの場合は、診断が開始される前にユーザ情報の作成や、ユーザへの権限の付与、Cookieもしくはアクセストークンの払い出し方法などを、事前に準備できると診断作業を滞りなく実施できます。

まとめ

API脆弱性診断の実施は、不正アクセスやデータ漏洩のリスクを軽減し、信頼性の高いシステム運用を実現するための重要な工程です。API診断実施時には、事前にAPI仕様書やサンプルリクエストの準備など、事前準備をしっかりとすることで、スムーズに診断を実施することが可能です。
ユービーセキュアでは、セキュリティに関する無料相談会を実施しています。専門のセキュリティコンサルタントが、貴社のセキュリティに関する疑問や課題にお答えし、最適なセキュリティ対策を提案いたします。自社のセキュリティを強化したいとお考えの方は、ぜひユービーセキュアのWebアプリケーション診断についてお問い合わせください。

 

お問い合わせ