APIセキュリティガイド
2023年4月25日
0 分で読めますWordPressはインターネットの40%以上を支えているため、APIセキュリティの重大な欠陥が最近明らかになったことは、いっそう恐ろしいニュースでした。
2022年1月、あるセキュリティ研究者が、WordPressプラグインのREST APIの設定ミスにより、20,000を超えるWordPressサイトが悪意あるコードの挿入、フィッシング詐欺、サイト乗っ取りの危険にさらされていたことを発見しました。このREST APIは、ユーザーがサイトテンプレートを更新したり設定を変更したりできるようにするものでしたが、エンドポイントに認証機能がなく、攻撃者が利用できる状態でした。
このようなAPIセキュリティの欠陥は珍しくありません。Gartnerは最近、API攻撃が最も頻繁に使われる攻撃ベクトルになると予測しました。この記事では、APIセキュリティが不可欠な理由と、企業がAPIをより適切に保護するために実践できるベストプラクティスを解説します。
APIセキュリティとは?
APIセキュリティは、データ侵害や不正利用を防ぐためにAPIサービスの保護に重点を置く、アプリケーションセキュリティの重要な分野です。API(アプリケーションプログラミングインターフェース)は、ユーザーがUIで従うことになるビジネスロジックやルールを守りながら、異なるソフトウェア同士がやり取りできるようにします。APIはソフトウェアとの連携に伴う複雑さを抽象化するため、さまざまなアプリケーションを簡単に連携させ、ユーザーがそのやり取りをスムーズに行えるようにします。APIもほかのあらゆるインターフェースと同様にセキュリティリスクとなる可能性があります。しかし、解決策はAPIを避けることではなく、保護することです。
APIセキュリティが重要な理由
攻撃者がAPIにアクセスして制御できるようになると、APIが接続するサービスを操作したり、APIが使用するデータを盗み出したりする可能性があるため、APIセキュリティは重要です。APIはソフトウェアの世界の配管のようなものです。そのため、APIへのアクセスは、製品間やサービス間でAPIがやり取りするあらゆるデータへのアクセスにつながります。GraphQLやRESTなどの一般的なAPIを悪意あるアクセスから守る必要があります。安全なGraphQL APIを構築するためのガイドはこちらをご覧ください。
CTFを始めよう
オンデマンドのバーチャル入門ワークショップで、CTFチャレンジの解き方を学びましょう。
APIセキュリティはアプリケーションセキュリティとどう関係するのか
従来、APIセキュリティはセキュリティエンジニアが担当していました。しかし近年、企業がシフトレフトを進め、DevSecOpsのアプローチを導入するなかで、開発者がAPIセキュリティを担うケースが増えています。APIセキュリティプラットフォームを提供する42Crunchの調査によると、44%の企業では、開発チームがAPIセキュリティの主な責任を担っていました。
APIセキュリティは固有の脅威ですが、APIを保護する取り組みはモダンアプリケーションセキュリティの一環として自然に組み込めます。アプリケーションには多くのAPIが含まれることが多いため、アプリケーションを保護するには、依存するAPIも保護しなければなりません。
一般的なAPIの脅威
APIの一般的なリスクには、実装ミスからレート制限の不備まで、さまざまなものがあります。OWASPはAPIセキュリティにおける最も一般的な10の脅威を挙げています。
オブジェクトレベルの認可不備
ユーザー認証の不備
過剰なデータ露出
リソース制限とレート制限の不備
機能レベルの認可不備
一括代入
セキュリティ設定の不備
インジェクション
不適切な資産管理
ログ記録と監視の不備
このリストについては、OWASP API Top 10のリスクを解説したこちらの記事で詳しく分析しています。
APIセキュリティのベストプラクティス10選
1. APIゲートウェイを使用する
APIゲートウェイを使うと、APIリクエストのルーティング、APIレスポンスの整理、サービスレベルアグリーメント(SLA)の管理ができます。APIゲートウェイはAPIを使いやすくするだけでなく、暗号化とアクセス制御を提供するため、重要なセキュリティ対策でもあります。
2. あらゆるレベルで適切に認証する
APIセキュリティの重要な要素は、適切なアプリケーションから適切なリクエストが送信されるようにすることです。API認証でよく使われるのは、HTTP基本認証、OAuth認証、APIキー認証の3つです。あらゆるレベルでAPIを認証し、APIキーの保管方法にも注意しましょう。
3. リクエストとレスポンスを暗号化する
APIは中間者攻撃に対して脆弱なことがよくあります。攻撃者がAPIトラフィックに割り込み、内容を盗み見たり、誤った宛先に誘導したりする攻撃です。ユーザーからAPIサーバーへのデータ転送と、APIサーバーからユーザーへのデータ転送の両方を暗号化することが重要です。暗号化しておけば、攻撃者がリクエストやレスポンスを傍受しても、盗んだデータの内容を理解できません。APIを設定する際は、データを確実に暗号化するため、必ずHTTPSを使用してください。
4. APIに不要な情報を含めない
APIセキュリティでは「最小権限の原則」に従い、APIの構築時に必要な情報だけを含め、それ以上は追加しないようにします。送信する情報が少なければ、万一データ侵害が起きても、その影響を抑えられます。
5. 定期的にセキュリティテストを実施し、APIの脆弱性をスキャンする
APIセキュリティのベストプラクティスを実践していても、企業は定期的にセキュリティテストとAPIの脆弱性スキャンを実施する必要があります。シフトレフトを実現した企業にとっても、定期的なテストとスキャンは有効です。
6. APIのログデータを収集する
効果的なアプリケーションセキュリティには、ログの取り込みと分析のプロセスが重要です。効果的なログシステムを使えば、API操作が実行されるたびに記録し、すべてのAPIイベントを追跡できます。このように詳細なデータがあれば、悪意ある攻撃を未然に検知したり、攻撃発生後にその経緯を分析したりできます。ログにどのようなデータが記録されるかを把握し、個人を特定できる情報(PII)やセキュリティデータなどの機密情報を保持しないようにしましょう。
7. クォータを設定し、APIリクエストを制限する
サイバー攻撃の中でも古くからある分散型サービス拒否(DDoS)攻撃は、APIも標的にします。APIを狙うDDoS攻撃は、多くの場合、APIが稼働するサーバーだけでなく、APIのすべてのエンドポイントも標的にします。DDoS攻撃を防ぐため、APIトラフィックのクォータとレート制限を設定し、APIリクエストを制限してトラフィックの流れを抑えましょう。
8. OWASP APIセキュリティのTop 10についてチームを教育する
サイバーセキュリティでは、革新よりも繰り返しが重要です。成功する攻撃の多くは、革新的な手法ではなく、広く知られたミスを悪用することで成り立っています。APIの一般的なセキュリティリスクをまとめたOWASP APIセキュリティTop 10について、チームが学ぶ時間を設けましょう。Snyk Learnでは、開発者がサイバーセキュリティの概念を学べる無料のレッスンも提供しています。
9. APIデータを検証してサニタイズする
APIデータを検証してサニタイズすることで、受信データが想定どおりであることを確認できます。検証とは、受信データが想定された型と形式かどうかをシステムが確認することです。サニタイズとは、受信データから安全でない文字をシステムが取り除くことです。
10. APIサービスとドキュメントを更新する
APIセキュリティにも当てはまる基本的なサイバーセキュリティ対策として、すべてを最新の状態に保つことが挙げられます。APIセキュリティでは、API自体とAPIドキュメントを最新の状態に保つことが重要です。
SnykがAPIセキュリティに役立つ方法
APIは非常に強力である一方、危険性も伴います。そのため、すべての企業がAPIセキュリティのベストプラクティスを取り入れ、利用可能なツールを使ってAPIを保護することが不可欠です。
Snykは、次の4つの方法でAPIセキュリティの維持を支援します。
多くのバックエンドAPIサービスはオープンソースライブラリを基盤としているため、Snykで脆弱なバージョンをスキャンしましょう。
開発者はAPIを頻繁に利用し、構築もするため、Snyk Codeを使って静的アプリケーションセキュリティテストを実施しましょう。
APIサービスのデプロイにはコンテナがよく使われるため、Snyk ContainerによるスキャンでOSとランタイムの脆弱性を検出しましょう。
バックエンドAPIサービスは、Infrastructure as Codeを使ってクラウドにデプロイされることがよくあります。Snykを使って、Infrastructure as Codeの設定にセキュリティ上の問題がないことを確認しましょう。
APIは強力なツールですが、悪用されてはなりません。これらのAPIセキュリティのベストプラクティスとスキャンツールを活用して、APIと、APIがアクセスできるすべてのデータを保護しましょう。
キャプチャー・ザ・フラッグを始めよう
オンデマンドのバーチャル入門ワークショップを視聴して、キャプチャー・ザ・フラッグの課題の解き方を学びましょう。
