【情報処理安全確保支援士試験 令和6年度 春期 午後 問3 No.4】
情報処理安全確保支援士試験 令和6年度 春期 午後 問3
【出典:情報処理安全確保支援士試験 令和6年度 春期 午後 問3(一部、加工あり)】
[サイトYに対するWebアプリ診断]
サイトYに対するWebアプリ診断では、次の脆弱性が検出された。
- サーバサイドリクエストフォージェリ(以下、SSRFという)
[SSRFについて]
Z社がSSRFを検出した経緯は、次のとおりであった。
⑴サイトPの新着情報を取得する際に、利用者のWebブラウザがWebサーバYに送るリクエストを確認したところ、図7のとおりであった。
⑵⑥図7のリクエストのパラメータの値をWebサーバYのCMSの管理ログイン画面のURLに変更することで、その画面にアクセスできるが、ログインはできないことを確認した。
⑶⑦図7のリクエストのパラメータの値を別のURLに変更するという方法(以下、方法Fという)でSSRFを悪用して、クレデンシャル情報を取得し、ストレージWから情報を盗み出すことができることを確認した。
⑷IMDSにアクセスする方式を方式1から方式2に変更すると、方法Fではクレデンシャル情報を取得できないので、ストレージWから情報を盗み出すことができない。しかし、図7のリクエストのパラメータの値を変更することで、WebサーバYから送られるリクエストに任意のメソッドの指定及び任意のヘッダの追加ができる方法(以下、方法Gという)がある。方法Gを用いれば、方式2に変更しても、⑧クレデンシャル情報を取得し、ストレージWから情報を盗み出すことができることを確認した。
Z社は、クラウドW上のネットワークでのアクセス制御の設定、及び⑨サイトYのWebアプリに追加すべき処理を提案した。
リリース前の脆弱性診断で検出された脆弱性の対策が全て完了し、サイトXとサイトYは稼働を開始した。
下線⑥について、ログインできないのはなぜか。SSRF攻撃の特徴を基に、35字以内で答えよ。:変更後のURLにPOSTデータは送ることができないから
「⑥図7のリクエストのパラメータの値をWebサーバYのCMSの管理ログイン画面のURLに変更することで、その画面にアクセスできるが、ログインはできないことを確認した。」
図7は「サイトPの新着情報を取得する際に、利用者のWebブラウザがWebサーバYに送るリクエストを確認したところ、図7のとおりであった。」とあります。
「GET /top?page=https://△△△.jp/topic/202404.html HTTP/1.1」の「page=」以降のパラメータが、サイトPのURLにアクセスする部分です。
このパラメータをCMSの管理ログイン画面のURLに変更するということです。
サイトYとサイトPについては、問題文の前半に「D社は、V大学と新商品開発の共同研究を行っている。新商品開発の共同研究では、V大学を運用する情報交換サイト(以下、サイトPという)を利用している。サイトYは、サイトPで取り扱っている情報などを表示する。」とあり、ネットワーク構成が示されています。
CMSについては、図2に記述されています。
ここで、「ログインは、POSTメソッドでは許可されるが、GETメソッドでは許可されない。」とあります。
今回の「GET /top?page=https://△△△.jp/topic/202404.html HTTP/1.1」では、GETメソッドを使用しているため、ログインは許可されないことが分かります。
サーバサイドリクエストフォージェリ(SSRF:Server Side Request Forgery)
- Webアプリケーションの脆弱性を突いた攻撃手法の一つです。攻撃者が細工したリクエストをWebアプリケーションに送信し、そのアプリケーションを経由して本来アクセスできない内部サーバやネットワーク上のリソースにリクエストを送らせることができます。
- SSRFは、サーバを経由して本来アクセスできない内部リソースへリクエストを送信させる危険な攻撃手法です。クラウドやマイクロサービスの普及により被害リスクが増大しているため、Webアプリケーション開発・運用時には十分な注意と対策が求められます。
- SSRFの仕組み
- 攻撃者は、ユーザー入力を通じて任意のURLやリソースを指定できる機能(例:Webページのプレビュー、画像取得、スクレイピングなど)に悪意ある値を入力する。
- サーバはその入力値に基づき、外部または内部のリソースにリクエストを送信する。
- このとき、攻撃者が指定したのが内部ネットワークや管理用サーバなど、通常は外部から直接アクセスできないリソースであってもサーバ自身がアクセスしてしまうため、攻撃者は情報の取得や内部システムへの攻撃が可能になる。
- SSRFの脅威
- ファイアウォールやVPNなどのネットワーク境界防御をバイパスし、内部ネットワークのホストやサービスへアクセスできる。
- 内部システムの情報収集、認証不要なローカルサービスへのアクセス、クラウド環境(例:AWSのメタデータサービス)への攻撃など、被害範囲は広範囲に及ぶ。
- SSO(シングルサインオン)利用時には、認証情報の窃取などにも悪用される可能性がある。
- SSRFが発生しやすい機能例
- 任意のURLにアクセスするWebサービス(プレビュー生成、画像取得、API連携など)。
- XML External Entity(XXE)脆弱性やパストラバーサル、OSコマンドインジェクションなど、他の脆弱性と組み合わせて利用されるケースもある。
- SSRFの対策
- ユーザー入力を通じて任意のURLやリソースにアクセスできる機能を極力避ける。
- やむを得ず実装する場合は、アクセス可能な宛先をホワイトリストで制限し、入力値の厳格なバリデーションを行う。
- 内部ネットワークや管理用サービスへのアクセスをネットワークレベルで制御する。
- XMLパーサーの安全な設定、OSコマンドインジェクションやパストラバーサルなど他の脆弱性も合わせて対策する。
- ネットワーク設計時に、DMZや内部セグメントの分離、アクセス制御の強化を検討する。
下線⑦について、クレデンシャル情報を取得する方法を、具体的に答えよ。:パラメータpageの値をIMDSのクレデンシャル情報を返すURLに変更する。
「⑦図7のリクエストのパラメータの値を別のURLに変更するという方法(以下、方法Fという)でSSRFを悪用して、クレデンシャル情報を取得し、ストレージWから情報を盗み出すことができることを確認した。」
クレデンシャルについては、図2に「IMDSは、VPCの各サーバから特定のURLにアクセスされると特定の情報を返す。例えば、https://○○○.○○○.○○○.○○○/meta-data/credentialにGETメソッドでアクセスされると、クラウドW上のサービスのクレデンシャル情報を返す。」とあります。
したがって、「GET /top?page=https://△△△.jp/topic/202404.html HTTP/1.1」のpage=以降のパラメータで、「https://○○○.○○○.○○○.○○○/meta-data/credential」を指定すれば、クレデンシャル情報を取得できることになります。
下線⑧について、方法Gを用いてクレデンシャル情報を取得する方法を、具体的に答えよ。:トークンを発行するURLにPUTメソッドでアクセスしてトークンを入手し、そのトークンをリクエストヘッダに含めて、IMDSのクレデンシャル情報を返すURLにアクセスする。
「IMDSにアクセスする方式を方式1から方式2に変更すると、方法Fではクレデンシャル情報を取得できないので、ストレージWから情報を盗み出すことができない。しかし、図7のリクエストのパラメータの値を変更することで、WebサーバYから送られるリクエストに任意のメソッドの指定及び任意のヘッダの追加ができる方法(以下、方法Gという)がある。方法Gを用いれば、方式2に変更しても、⑧クレデンシャル情報を取得し、ストレージWから情報を盗み出すことができることを確認した。」
まず、方式2を確認すると「トークンを発行するURLにPUTメソッドでアクセスし、レスポンスボディに含まれるトークンを入手してから、そのトークンをリクエストヘッダに含めて特定のURLにアクセスすると情報を取得できる。」とあります。
これによると、トークンを発行するURLへのPUTメソッドでのアクセス、及び、クレデンシャル情報を提供する特定のURLへのアクセスができれば、クレデンシャル情報を取得できることが分かります。
方法Gでは、任意のメソッドの指定及び任意のヘッダの追加ができることから、クレデンシャル情報を取得できます。
なお、IPAの採点講評では、「正答率が低かった。クレデンシャル情報を取得する方式について解答できていない受験者が多かった。方式が二つあり、その違いに即して解答してほしい。」とありました。
下線⑨について、サイトYのWebアプリに追加すべき処理を、35字以内で具体的に答えよ。:パラメータpageの値がサイトP以外のURLならエラーにする。
「Z社は、クラウドW上のネットワークでのアクセス制御の設定、及び⑨サイトYのWebアプリに追加すべき処理を提案した。」
前の設問であったように、図7のサイトYのWebアプリが受信するリクエストで、「page=」以降のパラメータで任意のサイトのURLを指定できてしまうことで、SSRFが成功してしまいます。
サイトYがアクセスする必要があるのは、「D社は、V大学と新商品開発の共同研究を行っている。新商品開発の共同研究では、V大学を運用する情報交換サイト(以下、サイトPという)を利用している。サイトYは、サイトPで取り扱っている情報などを表示する。」とあるように、サイトPのみです。
したがって、サイトP以外のURLの場合にはエラーにする処理を追加すればいいでしょう。