Webアプリケーション開発のセキュリティ対策【情報処理安全確保支援士試験 平成29年度 秋期 午後1 問2 設問2】

平成29年度 秋期 情報処理安全確保支援士試験 午後1 問2

問2 Webアプリケーション開発におけるセキュリティ対策に関する次の記述を読んで、設問1〜3に答えよ。

(略)

〔Wシステムの設計に関する脆弱性〕

 以前のWシステムは、ログイン状態で30分間操作しないと、サーバ側で自動的にログアウトする仕様であった。自動的にログアウトした場合、ログアウト直前のページを閲覧するには、再度ログインをして、ダッシュボードページから所望のページを選択する必要があるので、不便だとの指摘が顧客からあった。これを改善するため、自動的にログアウトした場合に、ログアウト直前のページの閲覧を試みると、一旦はログインページに遷移するが、認証が成功すると、閲覧を試みたページへリダイレクトする機能(以下、リダイレクタ機能という)を導入した。例えば、WシステムのURLであるhttps://w-system.a-sha.jp/で動作するWebアプリケーションにおいて、Wシステムにログインしていない状態で、https://w-system.a-sha.jp/dashboard.jspというURLにアクセスすると、図3のように生成されたURLへリダイレクトされる。

f:id:aolaniengineer:20200310150428p:plain

 認証用サーブレットLoginServletで認証が成功すると、https://w-system.a-sha.jp/dashboard.jspへリダイレクトされる。

 リダイレクタ機能を含めてWシステムの設計に関して検査を実施したところ、N氏から幾つかの指摘があった。主な指摘は次の3点であった。

指摘1:Wシステムの認証後のリダイレクタ機能は、オープンリダイレクタの問題を招く。修正する必要がある。

指摘2:WシステムからのCookie発行の際、TLS通信時だけCookieをブラウザから送信する(a:Secure)属性を設定する必要がある。

a:Secure属性

Cookieに関して、TLS通信時のみCookieを利用するための設定項目があり、それをSecure属性といいます。

CookieにはセッションIDなど、盗聴されると攻撃者によるなりすまし等が可能となる情報が含まれています。これをTLS通信、つまり、HTTPS通信による暗号化された伝送路でのみCookieが送信されるよう、Secure属性を設定する必要があります。

指摘3:JavaScriptからCookieを操作できないようにする(b:HttpOnly)属性を設定する方がよい。

b:HttpOnly属性

Cookieに関して、HTML内のスクリプトからCookieへのアクセス禁止する設定項目があり、それをHttpOnly属性といいます。

CookieのHttpOnly属性を設定することで、クロスサイトスクリプティングによってCookieが盗まれることを防止することができます。

 K氏は、指摘1に対しては、Wシステムの特性を考慮して、②ホワイトリスト方式によるリダイレクタ機能を採用することにした。指摘2と指摘3については、N氏の指摘どおりに改修することにした。

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

 ②について、Wシステムで採用するホワイトリスト方式の適切な仕様を述べよ:認証後のリダイレクト先のURLを、WシステムのFQDNのものに限定する。

オープンリダイレクタとは、任意のドメインにリダイレクトする脆弱性のことです。

これにより、利用者が、勝手に管理下にないサイトに誘導されたりすることが可能になってしまいます。

ホワイトリスト方式によるリダイレクタ機能とすることで、管理内のみにリダイレクトするようにします。

その具体的な仕様としては、Wシステム内で扱う画面のみにリダイレクトするように、リダイレクト先のURLを、WシステムのFQDNのものに限定すれば良さそうです。