【情報処理安全確保支援士試験 令和5年度 春期 午後2 問1 No.5】

情報処理安全確保支援士試験 令和5年度 春期 午後2 問1

【出典:情報処理安全確保支援士試験 令和5年度 春期 午後2 問1(一部、加工あり)】

[アクセス制御の回避]
 Zさんは、手動で診断し、アクセス制御の回避の脆弱性を、図4中のキャンペーン一覧の画面などで検出した。ある会員Nが⑦アクセス制御を回避するように細工されたリクエストを送ることで、その会員Nが本来閲覧できないはずのキャンペーンへのリンクが表示され、さらに、リンクをたどってそのキャンペーンに申し込むことが可能であった。正常なリクエストとそのレスポンスを図5に、脆弱性を検出するのに使ったリクエストとそのレスポンスを図6に示す。

 開発部Nは、サイトNへ送られたきたリクエスト中の(e)から、ログインしている会員Nを特定し、その会員Nが所属しているグループが(f)の値と一致するかを検証するように、ソースコードを修正することにした。
 開発部Nは、B社の支援によって対応を終えることができたが、B社へ頻繁に問い合わせることになった結果、B社のサポート費用が高額になった。サポート費用をどう抑えるかが課題として残った。

下線⑦について、リクエストの内容を、30字以内で具体的に答えよ。:group_codeが削除されてるリクエスト

ある会員Nが⑦アクセス制御を回避するように細工されたリクエストを送ることで、その会員Nが本来閲覧できないはずのキャンペーンへのリンクが表示され、さらに、リンクをたどってそのキャンペーンに申し込むことが可能であった。
 キャンペーンについては、前の問題文に「サイトNの会員(以下、会員Nという)は、幾つかのグループに分けられており、申し込むことができるキャンペーンが会員の所属しているグループによって異なる。」とあり、図4に画面遷移が示されています。

 注記3に「ログインすると、会員Nが所属しているグループを識別するためのgroup_codeというパラメータがリクエストに追加される。」とあるようにgroup_codeによって、キャンペーン一覧の表示内容が変わってくることが分かります。
 図5と図6でのリクエストの違いを確認すると、正常なリクエストでは「group_code=0001&keyword=new」となっているのに対し、細工されたリクエストでは「keyword=new」とgroup_codeが削除されています。
 そして、正常なリクエストに対するレスポンスではA社キャンペーン1とA社キャンペーン2であるのに対し、細工されたリクエストではB社キャンペーン1とC社キャンペーン1が追加されていて、group_codeが削除されていてもエラーとならず、全てのキャンペーンが表示されていると想定できます。

e:JSESSIONID、f:group_code

開発部Nは、サイトNへ送られたきたリクエスト中の(e)から、ログインしている会員Nを特定し、その会員Nが所属しているグループが(f)の値と一致するかを検証するように、ソースコードを修正することにした。
 図5のリクエストには会員を特定するIDやパスワードといった情報はなく、CookieにあるJSESSIONIDであることが想定できそうです。
 図4の注1)に「ログイン時に発行されるセッションIDであるJSESSIONIDはcookieに保存される」とあるように、ログイン時の会員IDとJSESSIONIDが紐付いていて、JSESSIONIDから会員IDを特定し、その会員が所蔵しているグループであるgroup_codeを認識します。
 そして、同じリクエストで送付されてきたgroup_idと一致するかを検証することで、正しいグループかどうかを判断します。