APIセキュリティとは?~近年注目されているWeb APIの脅威とその対策~
はじめに
Web APIは、現代のWeb、モバイル、IoTデバイスなどのアプリケーションに不可欠な要素です。金融や小売り、物流やIoT、自動運転や各種家電など、さまざまな業界で、Web APIが各種サービスの重要な役割を担っています。顧客向け、外部パートナー向け、内部向けなど、用途も多岐にわたります。
一方、Web APIはアプリケーションのロジックや個人情報といった機密情報を扱うため、攻撃者の標的になる可能性があります。セキュリティリスクも多く含んでおり、実際に世界各国で個人情報漏洩などの被害が出ています。
こうした背景から、近年APIセキュリティが注目されています。APIセキュリティを確保するためには、Web API固有の脆弱性を理解し、正しいセキュリティ対策を講じることが大切です。
本記事では、Web APIの脅威、APIセキュリティが重要な理由を解説し、一般的なセキュリティ対策からより高度な対策まで紹介します。
このブログから学べること
- APIセキュリティの基本:APIとは何か、脅威の種類、APIセキュリティの重要性を理解しましょう。
- APIセキュリティの一般的な対策:認証と認可、スキーマ検証、レート制限などの対策を実施し、APIの実行を管理します。
- より高度なAPIセキュリティ対策:Verification、Discovery、Classificationなど、APIに特化した高度な対策を実施し、APIのリスクを可視化し検知・遮断します。
目次
1. APIセキュリティの基本
1.1. APIとは
1.2. APIセキュリティで備えるべき脅威とは
1.3. APIセキュリティはなぜ重要か
1.4. APIセキュリティで求められる対策とは
2. APIセキュリティの一般的な対策とは
2.1. 認証と認可(Authentication and Authorization)
2.2. スキーマ検証
2.3. レート制限
3. より高度なAPIセキュリティ対策とは
3.1. APIセキュリティに特化した高度な対策
3.1.1. Verification
3.1.2. Discovery
3.1.3. Classification
3.1.4. Abnormal Detection
3.2. APIセキュリティを含めた包括的な対策
3.2.1. WAF
3.2.2. DDoS Protection
3.2.3. Bot Protection
3.2.4. Account Takeover Protection
4. まとめ
5. 次回予告
1. APIセキュリティの基本
まずは、APIセキュリティの基本として、APIとは何か、どのような脅威があるのか、APIセキュリティが重要な理由などを確認しておきましょう。
1.1. APIとは
APIとは、「Application Programming Interface」の略で、あるソフトウェアを別のソフトウェアと連携させるための仕組みのことです。単純に情報をやりとりするAPIもあれば、データの更新や翻訳など何らかの処理を行い、その結果を返すAPIもあります。今回のテーマである「Web API」は、HTTP/HTTPSなどのWeb技術を利用したAPIのことです。
APIは大きく2種類に分けられます。公開APIと非公開APIです。
<公開API>
他企業や一般ユーザが利用する社外アプリケーションとの通信に使われるAPIです。例えば、Webサイト、モバイルアプリケーション、IoTデバイスなどとの連携に利用されます。
<非公開API>
社内システムなどのバックエンドにおいて、アプリケーション同士の連携や統合に使われるAPIです。例えば、レガシーアプリケーションとの連携、システムを構築するマイクロサービス同士の連携などに利用されます。
※以下より「API」を「Web API」の意味で使用します。
1.2. APIセキュリティで備えるべき脅威とは
それでは、APIにはどのような脅威があるのでしょうか。
例えば、インジェクション攻撃、ライブラリの脆弱性、Botによるスクレイピングなど、従来のWebアプリケーションの脅威は、APIにも影響する可能性があります。加えて、APIには、設計の問題点などから生じる特有の脅威も存在します。
Webセキュリティの情報共有や普及啓発を行う非営利団体Open Web Application Security Project(OWASP)は、API固有の脆弱性やセキュリティリスクを「API Security Top 10 2019」*にまとめています。
<OWASP API Security Top10 2019>
(1)オブジェクトレベル認可の不備
(2)認証の不備
(3)データの過剰な公開
(4)リソース不足と帯域制限
(5)機能レベルの認可の不備
(6)一括割り当て
(7)セキュリティ設定ミス
(8)インジェクション
(9)不適切な資産管理
(10)不十分なロギングとモニタリング
* 出典:OWASP API Security Project(https://owasp.org/www-project-api-security/)
これらの脆弱性やリスクが、APIセキュリティの脅威だと言えます。正しく対策を行わないと、次のようなインシデントにつながります。
<発生しうるインシデント>
- データの意図しない公開、欠損、改ざん
- アカウント乗っ取り
- システムへの侵入
- 個人情報など機密情報流出
- 不正な機能へのアクセスと操作
など
1.3. APIセキュリティはなぜ重要か
それでは、なぜ、APIセキュリティが重要視されているのでしょうか。
先ほど紹介した「API Security Top10」の中で、最も一般的に起こりうるのは「オブジェクトレベル認可の不備」と言われています。これは、従来Webセキュリティとして活用されてきたWAF(Web Application Firewall)では検知できない脅威です。
例えば、以下のようなAPIがあるとします。リクエストを送ると、リクエスト末尾の電話番号の持ち主情報が返されるAPIです。
電話番号を書き換えてリクエストを送ることで、攻撃者は、認可されていない持ち主情報を取得できてしまいます。しかし、通信自体は不正ではないため、従来のWAFの検知対象とはなりません。
また、APIでは個人情報や企業の機密情報も多く扱います。そのため、攻撃者に狙われやすく、実際に攻撃を受けるとクリティカルなインシデントにつながりやすくなっています。一方で、これまでAPIのセキュリティリスクがあまり意識されてこなかったことも、狙われる要因となっています。
このように、APIには固有の脅威が存在するため、APIに特化したセキュリティ対策を導入し、適切に保護することが重要です。
1.4. APIセキュリティで求められる対策とは
実際に、どのような対策が必要なのでしょうか。
APIの開発では、開発チームがAPIの機能を次々に追加していきます。セキュリティチームは、開発チームと連携しつつ、開発と運用の両フェーズでAPIのセキュリティ対策を実施することが求められます。
正しく認証・認可を実装するなど開発フェーズにセキュアなAPIを開発さえすれば、運用フェーズではセキュリティ対策をする必要がないと思われるかもしれません。ところが、実際は開発過程が終了した後も継続してセキュリティ対策を講じなければなりません。
というのも、企業が把握・管理していないAPIが狙われることがあるからです。例えば、開発過程で作成された検証用APIが適切に運用・管理されておらず、攻撃を受けて、個人情報が流出するといったインシデントが起きています。
企業が把握していないAPIを含めてセキュリティを強化するためには、より高度な対策が必要です。
そこで、ここからは、まず一般的なAPIセキュリティ対策を紹介し、次に、より高度な対策を紹介していきましょう。
2. APIセキュリティの一般的な対策とは
一般的なAPIセキュリティとしては、次のような対策が挙げられます。APIを管理するAPI Gatewayなどのソリューションが併用される場合もあります。
2.1. 認証と認可(Authentication and Authorization)
公開APIでは認証と認可を正しく実装し、ユーザの権限に応じて適切に認可を実施します。認証/認可情報が扱われるエンドポイントを識別し、ユーザ名とパスワード、APIキーやOAuthトークンといった認証/認可情報を把握します。
2.2. スキーマ検証
リクエスト/レスポンスについて、パラメータやペイロードの最大サイズ、値の有無、型などをスキーマで細かく定義し、実際のリクエスト/レスポンスを検証することで、意図した通信が行われているかを確認します。これにより不正な通信の検知や遮断が可能です。
2.3. レート制限
例えば、1秒あたりのAPIコール数上限を設けるなど、APIの実行回数にレート制限を行い、さらに制限がリセットされる時間を設定します。これにより、DoS攻撃やスクレイピングなどの影響を緩和できます。
以上が、APIセキュリティとして一般的な対策です。これらは、事前に定義した指標に基づいて、APIの実行を管理するものです。
より高度なAPIセキュリティを実現するためには、実際の通信先やリクエスト内容に基づいて、APIのリスクを可視化し、不正な通信を検知・遮断することが求められます。
3. より高度なAPIセキュリティ対策とは
それでは、より高度なAPIセキュリティ対策にはどのようなものがあるのでしょうか。
ここでは、APIに特化した対策と、従来のWebアプリケーションの脅威を含めた対策という2種類に分けて説明します。
3.1. APIセキュリティに特化した高度な対策
APIに特化した高度なセキュリティ対策として、次が挙げられます。
3.1.1. Verification
開発チームが新たにAPIを作成したときに、仕様や構成に問題が含まれていることがあります。こうした問題は運用時に検知できない可能性があるため、運用開始前に検証して洗い出し、修正しなくてはなりません。
3.1.2. Discovery
APIの構成が開発によって変化したり、検証・デバッグ用に一時的に用意したAPIが適切に管理されていなかったりする場合があります。APIセキュリティを確保するためには、自社が管理するべきAPIをすべて可視化して、適切に保護しなくてはなりません。
3.1.3. Classification
APIの各エンドポイントで扱う情報の種類を分類します。個人情報など、セキュリティの観点で特に重要な機密情報を、重点的に保護することが可能になります。
3.1.4. Abnormal Detection
上記「Discovery」「Classification」「Authentication」などの観点から、機械学習によって、正常な通信を分析し、学習します。正常な通信のみを安全に通過させた上で、攻撃者からのリクエスト通信を特定し、検知・ブロックすることが可能です。
3.2. APIセキュリティを含めた包括的な対策
さらなる高度な対策としては、APIに特化した対策だけを行うのではなく、さまざまなソリューションで包括的に保護することが望ましいでしょう。
3.2.1. WAF
APIは、インジェクションなどWebアプリケーションの脆弱性の影響を受けます。従来のWebアプリケーションと同様に、WAFによる保護が効果的です。
3.2.2. DDoS Protection
APIはDDoS攻撃の影響を受けます。単純なレート制限では正規ユーザの通信が阻害される可能性があるため、攻撃者からの通信のみを検知・遮断することが望まれます。
3.2.3. Bot Protection
Webサイトの脆弱性スキャンやECサイトの買い占めなどは、自動化されたBot通信で行われることが多くあります。特にAPIは、Botを使用したスクレイピングによる、大量の情報収集の影響を受けます。正規ユーザになりすます高度なBotも存在するため、ユーザを識別するフィンガープリントなど、多様な情報を総合的に分析し、Bot通信を遮断するソリューションが必要です。
3.2.4. Account Takeover Protection
アカウントが乗っ取られ不正なAPI操作につながるケースも多く、実際に金銭的な被害も出ています。レート制限などしきい値ベースの対策に対して、突破を試みるスローレート攻撃や分散型攻撃などが出現しています。「アカウント乗っ取り攻撃によく使用されるIPアドレス」や「過去に漏洩したアカウント情報でログインを試行していないか」といった情報をグローバルで集めるなど、さまざまな判断指標を用いて、多角的に判断する必要性が高まっています。
APIとWebアプリケーションを同時に保護するソリューションとして、WAAP(Web Application and API Protection)があります。API特有のセキュリティ対策だけでなく、悪性Bot、DDoS、アカウント乗っ取りなどの脅威を含めた、包括的な保護を実現できます。
4. まとめ
本記事では、APIセキュリティについて紹介しました。APIセキュリティの確保には、APIの脆弱性の理解と、適切なセキュリティ対策が有効です。また、APIセキュリティとして一般的に紹介される対策だけでは、限界があるのも事実です。より高度なAPIセキュリティ対策、従来のWebセキュリティを含めた包括的な対策を検討しましょう。
マクニカでは、WAAPソリューションとして、Imperva Cloud WAFを取り扱っています。APIセキュリティやWAAPにご興味がある方は、下記窓口よりお問い合わせください。
▼【ホワイトペーパー】今、攻撃者に狙われる「API」
APIセキュリティのあるべき姿とは?
5. 次回予告
次回、WebアプリケーションのBot対策に関する内容をお届けします。