ホワイトハッカーを夢みて、セキュリティアカデミーでお勉強中のミーアキャット。心配性でやさしい性格で、「みんな無事ミア?」「危険はないミア?」が口癖。ちょっとしたことですぐに「キャッ!」と動揺しがち。
開発エンジニアとして社会人としてのキャリアを始め、情報処理安全確保支援士合格後、サイバーセキュリティの道に。母国語はRubyと日本語。
羽鳥さんこんにちは!今日のテーマは「API」ですね。ときどき聞く言葉だけど、実はよくわかってないミア……。
羽鳥さん
API(Application Programming Interface)は現代のWebシステムの中で欠かせない存在ですから、会議などで耳にすることも多いでしょう。実はAPIにもセキュリティ対策が必要なんです。
キャッ!知らないと大変なことになりそうミア!
羽鳥さん
そうですね。今回は、APIとは何か、どこで使われているのか、そしてAPI脆弱性診断をスムーズに進めるために事前に準備をしておくべき3つのポイントについて解説します。
羽鳥さん
API(Application Programming Interface)は、異なるソフトウェア、システムが相互に通信するためのインターフェースです。APIは、特定の機能やデータにアクセスするためのプロトコルを提供し、ソフトウェア間の連携を容易にします。
むむ、ちょっと難しいミア……異なるソフトウェア、システムが相互に通信するとどんなことができるミア?
羽鳥さん
Webサイトの中に、SNSの投稿や地図が表示されているのを見たことはないですか?あれはAPIによって、WebサイトがSNSや地図サービスと通信することで表示されるんです。
おぉ!それなら見たことあるミア。たしかに異なるソフトウェア、システム同士ミア!
羽鳥さん
そう。APIを使用することで、開発者は異なるソフトウェアやシステム、アプリケーションの機能を活用し、効率的かつ迅速に開発を進められるんですよ。
羽鳥さん
APIは、サーバーに対するリクエストと、リクエスト元へのレスポンスの形式で動作します。クライアント(要求を出す側)はサーバー(要求を処理する側)に対して特定のリクエストを送り、サーバーはそのリクエストに基づいて適切なレスポンスを返します。これにより、クライアントはAPIが提供するデータや機能を利用できます。
ふむふむ、なんとなくイメージがわいてきたミア。
羽鳥さん
例えば、WebブラウザがWebページを表示する際、Webブラウザはサーバーに対してHTTPリクエストを送信し、サーバーはHTML、CSS、JavaScriptなどのリソースをレスポンスとして返します。APIも同様に、WebブラウザからAPIエンドポイントにリクエストを送信し、サーバーがJSONやXML形式のデータを返すことが一般的です。
ところで、APIにもいろいろ種類があるミア?
羽鳥さん
APIにはいくつかの種類があり、それぞれの用途に応じて異なる仕様が採用されています。では、主要なAPIの種類を見ていきましょう。
Meta社やGoogleが開発しているAPIもあるミア!
羽鳥さん
先ほど「APIはSNSや地図サービスなどで使われている」と説明しましたが、他にもさまざまなものに利用されているんですよ。もう少し詳しく見てみましょう。
オンラインのクレジットカード決済もスマートホームデバイスもよく利用しているミア。こんなに身近なところでたくさん利用されているものだったなんて……!
羽鳥さん
APIがこれほど利用されるようになった背景としては、Webサービスが複雑化し、システムに求められる機能が多くなったことが挙げられますね。
具体的には、一つのWebサービスにおいて、「SNSのデータを流用したい」「自社のWebサービス上でも他の企業が提供しているデータと同じデータを提供したい」といった要望が増えたり、小規模なサービス同士を組み合わせて連携させることで、一つの大きなアプリケーションとして構築する手法が増えたりしたことが背景として考えられます。
そうした中で、なぜAPIが活用されるようになったミア?
羽鳥さん
APIには次のようなメリットがあるからです。
このように適切に利活用することで、Webサービスの多機能化や開発の高速化が期待できるAPIですが、その一方で、セキュリティ対策を怠るとインシデントの原因となる可能性も……。
キャッ!APIの知識に気を取られて、すっかり忘れてた……ここは「セキュリティアカデミー」だったミア。
羽鳥さん
そう、ここからが本題です(笑)。APIのセキュリティを検査し、潜在的な脆弱性を検出する「API脆弱性診断」について説明しましょう。
APIは異なるソフトウェアシステムが相互に通信するためのインターフェースを提供していますから、APIが脆弱であれば、不正アクセスやデータ漏えいのリスクが高まります。そのため、APIによる提供サービスのセキュリティ品質を担保するためには、APIの脆弱性を事前に把握しておくことが欠かせないのです。
なるほど、たしかに重要ミア。具体的にどんな検査をするミア?
羽鳥さん
API脆弱性診断では、以下の点に注目してセキュリティ評価を行います。
■APIが適切に認証および認可を行っているかを確認
OAuthやAPIキーなどの認証・認可に関わる部分が正しく実装されているかを検査し、認証・認可されたユーザーのみが適切な操作を行えることを保証します。
■予期しないエラーや攻撃に対してAPIがどのように応答するかを検査
エラーメッセージに機密情報が含まれていないこと、適切なエラーレスポンスが返されることを確認します。これにより、システムの脆弱性を悪用されるリスクを軽減できます。
■システム特性、ロジックを踏まえた診断の実施
APIで取り扱う情報が画面構成などを含まないデータそのものなので、システム特性やロジックを踏まえたAPI特有のセキュリティリスクの検査が必要です。例えばAPIでデータを取得し、画面で描画に必要なデータのみを表示している場合でも、実際にAPIのレスポンス上では機微情報が含まれている場合などが挙げられます。
APIに対して、脆弱性診断を継続的に実施することで、セキュリティレベルを維持し、不正アクセスやデータ漏えいのリスクを最小限に抑え、システムの安全性を確保できるんですよ。
なるほど~。事前の準備も必要ミア?
羽鳥さん
いいところに気付きましたね。APIの診断の特徴として、Web画面の診断とは異なり、画面という情報が存在せず、仕様やリクエストの構成などを把握しづらい点があります。下記の3つのポイントを事前に準備することで、スムーズな診断を実施できますよ。
「診断するAPIについてスムーズに把握してもらえるようにしておく」ことや、「下準備となる作業を事前に済ませておく」ことが重要ミア!今日はいろいろ教えてくれてありがとミア!
羽鳥さん
そうです!事前にしっかり準備しておくと、スムーズに診断を進められますからね。
ユービーセキュアでは、セキュリティに関する無料相談会を実施していて、専門のセキュリティコンサルタントが、セキュリティに関する疑問や課題にお答えし、最適なセキュリティ対策を提案しています。そちらでもぜひAPIの脆弱性診断について相談してみてくださいね。