なぜファジングは API のセキュリティ問題のテストに十分ではないのか
2024 年 6 月、Akamai は Noname Security を買収しました。これは 2023 年 7 月 12 日に公開され、現在アーカイブされているブログ記事です。
API の開発と保護の担当者であれば、 APIのセキュリティギャップを特定するテストを実行することで、ビジネスとその顧客に次のようなさまざまなメリットが生み出されることをじかに見ていると思います。
API を確実かつ安全に機能させ、さまざまな状況下で期待どおりに動作させる
不正なデータ形式、欠落しているデータ、不正確なデータ、認証または認可の失敗といった、API の問題を特定するのに役立つ
ダウンタイムを最小限に抑え、エラーのリスクを低減し、ソフトウェアシステム全体の品質を向上させる
API を早期に頻繁にテストする
注意すべきことは、開発中の API の適切なテストを早期に、頻繁に、包括的に実施することで、組織は API 攻撃を受けるのを防ぐことが可能になるということです。 API 攻撃では データ、顧客、運用能力が重大なリスクにさらされます。
多くの組織では、「ファジング」と呼ばれるアプローチを使用して API のセキュリティを評価しています。
このブログ投稿では、ファジングとは何か、その限界、そして今日の攻撃者が頻繁に悪用する API の一般的な脆弱性を発見し対処するための戦略とソリューションを策定することの重要性を考察していきます。
また、API の早期かつ頻繁なテストに役立つリソースについても触れます。
ファジングとは?
ファジングとはソフトウェアのテストに使用される手法の一つで、プログラムの潜在的な脆弱性やバグを特定するために、プログラムにランダムまたは予期しないデータを入力するものです。
ファジングの目的は、プログラムをクラッシュさせたり予想外の動作をさせたりすることにあります。これが起きた場合、セキュリティ上の弱点やプログラミングエラーがあることを示しています。ファジングを使用すると、従来のテスト方法(ユニットテストや手動テストなど)では明らかにならない問題を特定するのに役立ちます。
ファジングは、専用のツールを使用して手動または自動で実行でき、また、特定のアプリケーションや API に合わせてカスタマイズできます。ファジングの結果は、ソフトウェアプログラムの堅牢性と信頼性に関する知見を提供し、プログラムの全体的なセキュリティとパフォーマンスを向上させるために使用できます。
ファジングの限界
ただし、ファジングはセキュリティ上の弱点を特定するのに便利な方法ではありますが、それ自体に制限があります。その例として、ファジングは既知の脆弱性のみをテストし、未知の脆弱性を検知できないという点が挙げられます。たとえば、複雑なシステムの脆弱性や、トリガーするのに特定の一連のイベントが必要な脆弱性を特定できない場合があります。
また、ファジングは、テストプロセスで使用される入力データの品質によっても制約を受ける場合があります。そのため、ファジングは、時間とリソースを消費するものとなる可能性があることを認識しておくことが重要です。
以上のことから、ファジングは有用である場合もありますが、その制約を考えると、ファジングを使う場合は、組織はセキュリティに重点を置いたその他のテスト手法やツールと併用する必要があると言えます。
包括的な API テストの重要性
徹底した API テストを実施することで、開発者はソフトウェアアプリケーションが最適に動作し、セキュリティが確保されたシームレスなユーザー体験が提供されることを確認できます。
適切にテストされない場合、API の小さなエラーがアプリケーション全体の機能への重大な影響へとつながる可能性もあります。包括的な API テスト戦略を実装することで、開発者は API がエンドユーザーにリリースされる前に、すべてが意図したとおりに動作していることを確認できます。これにより、時間とリソースを節約すると同時に、アプリケーション全体の品質を向上させることができます。
ビジネスロジックの検証とは?それがファジングより優れている理由は?
ビジネスロジックとは、システムまたはアプリケーションのふるまいを制御する基本的なロジックまたはルールです。これは、一連のルール、アルゴリズム、ワークフローに基づいて、アプリケーションの予期されるふるまいを定義します。
ビジネスロジックでは、アプリケーションが意図したとおりに動作し、期待される結果を生成することが確保されます。潜在的な脆弱性を本当に暴きたいと考えているのならば、ビジネスロジックのテストは必須です。ファジングでアプリケーションにランダムなデータを入力して脆弱性を検知するだけでは、残念ながらうまくいきません。
ファジングはセキュリティの脆弱性を特定するのに便利な方法ではありますが、アプリケーションのビジネスロジックに関連する問題を検知することにおいては効果的ではありません。ファジングではアプリケーションに期待されるふるまいは考慮されず、代わりに入力検証プロセスでの弱点の特定に重点を置いているためです。
セキュリティ重視の API テストのベストプラクティス
開発中の API をテストすることで、リスクを軽減し、コーディングエラーや設定ミスを修正するコストを回避できます。プロセスに組み込む必要のあるコア機能をいくつか紹介します。
さまざまな自動テストを実行して、悪性トラフィックをシミュレーションする
API を本番環境に展開する前に脆弱性を発見し、攻撃が成功するリスクを緩和する
定められたガバナンスポリシーやルールに照らして、API の仕様を確認する
API に特化したセキュリティテストをオンデマンドで、または CI/CD パイプラインの一環として実行する
結論
包括的な API セキュリティテスト は API 開発プロセスの重要なステップであり、API が期待どおりに安全に機能することを確保するものです。このテストフェーズを実施して、API が信頼でき、安定し、ライフスパンを通して最適に動作することを確認することが不可欠です。
十分な API テストを実行しない場合、エラーや欠陥が発生し、API のセキュリティと信頼性が損なわれる可能性があります。
詳細について
開発中のテストから実行時の保護まで、API のセキュリティ保護の詳細については、ホワイトペーパー「 API セキュリティの基礎」をご覧ください。