過去問分析

令和6年度(春期)問3の分析|情報処理安全確保支援士

riss

問題・解答は情報処理推進機構(IPA)のページからダウンロードできます。

1
Summary

概要

ストーリー

Webセキュリティへの対策に関する問題です。
IMDSで情報を管理するWebアプリについて、脆弱性診断を委託したというストーリーです。cookieやGETメソッドの適切な運用がメインとなります。

主な論点

  • CMS(Content Management System)
  • IMDS(Instance Metadata Service)
  • セッション管理
  • HttpOnly属性
  • クロスサイトスクリプティング(XSS)
  • クロスサイトリクエストフォージェリ(CSRF)
  • SameSite属性
  • 認可制御の不備
  • サーバーサイドリクエストフォージェリ(SSRF)
2
Point Of Focus

問題の着眼点

問題文
P22図2
各CMSの管理者アカウントは初期パスワードのまま運用する。
脆弱性
初期パスワードが推測しやすい値である場合、不正にログインされる可能性がある。
問題文
P23
ログインセッション管理に使用するcookieパラメータのSESSIONIDには、値とSecure属性だけがセットされる。
脆弱性
HttpOnly属性がセットされていないため、JavaScriptなどからcookieを読み出すことができ、クロスサイトスクリプティング(XSS)により、cookieパラメータのSESSIONIDを窃取される。
対策
HttpOnly属性をセットする。
問題文
P25
問合せ機能のPOSTリクエストに対するレスポンスボディに問合せ機能で入力した値が出力されていない。しかし、リクエスト内のスクリプトが管理者権限による問合せ管理機能の画面に出力されることを確認した。
脆弱性
攻撃者が管理者アカウントでログインし、問合せ管理機能にアクセスしている可能性がある。cookieにHttpOnly属性がセットがないことから、クロスサイトスクリプティングによりcookieを窃取されたことが考えられる。
具体的には、攻撃者がわなリンクを用意し、管理者にそのリンクを踏ませることで管理者権限のcookieを攻撃者のWebサイトに送信させ、その値を読み取って利用することで管理者としてサイトXにアクセスし、利用者情報を取得する。(設問1(2))
対策
HttpOnly属性をセットし、cookieをJavaScriptなどから読み出されないようにする。
問題文
P25表2手順3
メッセージボディでcsrf_token=(異なる利用者アカウントで取得したcsrf_tokenの値)をセットしたPOSTリクエストが正常に処理された。
脆弱性
攻撃者のcsrf_tokenを使用して、異なる利用者アカウントの利用者情報を変更するクロスサイトリクエストフォージェリ(CSRF)が成立する。
具体的には、攻撃者が自らのアカウントで取得したcsrf_tokenと一緒に利用者情報をサイトXに送るように構成したわなフォームに、詐欺メールなどで利用者を誘導し、利用者情報を変更させる。(設問2(1))
対策
csrf_tokenの処理の修正のほか、クロスサイトリクエストフォージェリ(CSRF)の対策として以下の方法がある。
・cookieにSameSite属性を追加し、"Lax”を指定する。(設問2(2))
・処理を実行する直前の画面でランダムで出力したページトークン(秘密情報)をhiddenフィールドに格納し、処理実行前にページトークンを検証する。
・処理を実行する直前の画面でパスワード再入力や画像認証を要求する。
・Refererヘッダにより正規の画面からのリクエストであることを確認する。重要な処理についてメールで本人に通知する。
問題文
P27
利用者αのPOSTリクエストのメッセージボディのパラメータorder-codeを利用者βのorder-codeに改変したところ、利用者αが本来は閲覧できないはずの利用者βの注文履歴を閲覧できるという攻撃が成功することを確認した。
さらに、ある利用者がほかの利用者が注文した際のorder-codeを知らなくても攻撃が成功することを確認した。
P23表1項番3
注文履歴は、注文年月である数字6桁とランダムな英大文字6桁の値をハイフンでつないだ注文管理番号で管理される。
脆弱性
・ほかの利用者のorder-codeを何らかの方法で取得した場合、POSTリクエストのメッセージボディのパラメータorder-codeを改変することで、当該ほかの利用者の注文履歴を閲覧することができる。
・order-codeは注文年月である数字6桁とランダムな英大文字6桁の値をハイフンでつないだ値で構成されることから、order-codeの下6桁を総当たりで試行することにより、攻撃が成功する。(設問3(1))
・P23表1項番3のようにコードの桁数がわざわざ記載されている場合、総当たり攻撃(ブルートフォース攻撃)を疑う。
対策
cookieの値で利用者アカウントを特定し、order-codeの値から特定したものと違っていれば、エラーにする処理を追加する。(設問3(2))
問題文
P28
GETリクエストのパラメータの値(クエリ文字列)をWebサーバYのCMSの管理ログイン画面のURLに変更することで、その画面にアクセスできる。
P22
CMSの管理ログイン画面へのアクセスは、VPN接続されたD社管理者PC、又は仮想プライベートクラウド内のアクセスだけに制限される。
脆弱性
本来アクセスできないCMSの管理ログイン画面(サーバY)にアクセスすることができる。これをサーバサイドリクエストフォージェリ(SSRF)という。
対策
パラメータの値がサイトP以外のURLならエラーとする処理を追加する。(設問(4))
問題文
P28
リスエストのパラメータの値を別のURLに変更する方法でSSRFを悪用して、クレデンシャル情報を取得することができる。
P22図2
IMDS(Instance Metadata Service)は、例えば、http://○○○.○○○.○○○.○○○/meta-data/credentialにGETメソッドでアクセスされると、クラウドW上のサービスのクレデンシャル情報(利用者ID、アクセスキーなど)を返す。
脆弱性
IMDSのプライベートアドレスが流出すると、GETメソッドでアクセスすることによりクレデンシャル情報を取得される。
具体的には、パラメータの値をIMDSのクレデンシャル情報を返すURLに変更する。(設問4(2))
対策
トークンを発行するURLにPUTメソッドでアクセスし、レスポンスボディに含まれるトークンを入手してから、そのトークンをリクエストヘッダに含めて特定のURLにアクセスするとクレデンシャル情報が取得される。(P22図2方法2)
ただし、この方法によった場合であっても、トークンを発行するURLにPUTメソッドでアクセスしてトークンを入手し、そのトークンをリクエストヘッダに含めて、IMDSのクレデンシャル情報を返すURLにアクセスすると、クレデンシャル情報が取得される。(設問4(3))
3
IPA's Commentary

情報処理推進機構(IPA)の講評

出題趣旨

Webサイトの脆弱性については、多くのWebサイトで対策が進んできたものの、一部のWebサイトは開発者の理解が不十分で、IPAの"安全なウェブサイトの作り方"で取り上げられている脆弱性においても対策に不備が生じている場合がある。
本問では、Webサイトの脆弱性を題材として、脆弱性診断及び対策の知識と、その脆弱性に起因してどのような攻撃が行われるかを分析する能力を問う。

採点講評

問3では、クラウド環境で構築されたWebサイトを題材に、脆弱性を悪用した攻撃手法とその対策について出題した。全体として正答率はやや低かった。
設問1(2)は、正答率が低かった。クロスサイトスクリプティング(XSS)の検出箇所から、問合せ管理機能でスクリプトを実行できるのは管理者であることが分かる。一方、サイトXの機能概要から、利用者情報を取得するには、会員管理機能を利用すればよいことが分かる。この二つをどう結び付けるかを考えて、解答してほしい。
設問2(1)は、正答率が低かった。クロスサイトリクエストフォージェリ(CSRF)の攻撃手法に関する問題であったが、攻撃者が取得したトークンを悪用する部分について解答できていない受験者が多かった。本文の状況に即して解答してほしい。
設問4(3)は、正答率がやや低かった。クレデンシャル情報を取得する方式について解答できていない受験者が多かった。方法が二つあり、その違いに即して解答してほしい。

あわせて読みたい
こちらの記事もどうぞ
記事URLをコピーしました