SSRF バグに関する重要情報 定義: - サーバーサイドリクエストフォージェリ (SSRF) は、攻撃者がサーバーを使用して任意のネットワークリクエストを実行できるようにする脆弱性です。サーバーは外部クライアントよりも広範なアクセス権限を持つことが多いため、攻撃者は機密リソースにアクセスしたり、承認されていない操作を実行したりすることが可能になります。 例示シナリオ: - アプリケーションに、指定されたURLから画像を取得するエンドポイントがある場合: - サーバーがURLパラメータを検証しない場合、攻撃者は内部ネットワークのURLを渡すことで以下のように攻撃できます: - 上記の方法により、攻撃者は機密データにアクセスできます。さらに、攻撃者は プロトコルを利用してサーバーのファイルシステムにアクセスすることも可能です: 防御策: - 入力検証と許可リスト: サーバーAPIで使用できるURLを制限します(例:特定のドメインのみを許可)。 - プロトコルおよびURLパターンのブロック: プロトコルのみを許可するなど、特定のURLパターンを許可します。 - リダイレクトの検証: 自動的にリダイレクトに従わず、リダイレクト後のURLを検証します。 - 最小権限と分離: 外部へのリクエストを実行するサービスが、最小権限の環境で動作し、機密内部サービスと混在しないようにします。 防御チェックリストのまとめ: - リソース取得機能を見直し、ユーザー入力の検証または許可リストの設定を確保します。 - HTTPS 以外のすべてのプロトコルをブロックします。 - URL リダイレクトに注意し、リダイレクトの連鎖を制限します。 - 最小権限の原則を適用し、サーバーが不要な内部ネットワークアクセス権限を持たないようにします。 - リクエストを記録し、監視を行います。