Spring MVC に 2 件の脆弱性
Spring MVC に 2 件の脆弱性が存在するよという TSS の記事。でも、正しくプログラミングしていれば問題ないはず。
- Pivotal Application Security Team | Pivotal
- IBM Developer : New to Rational
- Critical security issues found in the Spring Framework
以下、内容を簡単に紹介…とは言っても私自身は Spring MVC を使ったことがないので、出来ればちゃんと上記のページを読んでほしい。
Data Submission to Non-Editable Fields
Spring の WebDataBinder の実装がデフォルトで安全側に振られていないことに端を発する問題。WebDataBinder はクライアントから送られてきたリクエストパラメータをコマンドオブジェクト*1に格納するためのコンポーネント。
WebDataBinder はフォーム(やクエリストリング)経由で送出されたリクエストパラメータをコマンドにマッピングするために使われるが、デフォルトでは全てのリクエストパラメータをコマンドのプロパティにマッピングしようとする。攻撃者はマッピング対象となるコマンドのプロパティ名さえ知っていれば、そのパラメータ名と同一の名前を持つリクエストパラメータを追加で送出することによって、開発者側が意図していなかったプロパティに勝手に値を潜り込ませることが可能になる。
この問題を防ぐには、checkAllowedFields() によってマッピングを許可するプロパティ名を事前に定義しておけばよい。これによって、意図しないリクエストパラメータがコマンドのプロパティにマッピングされてしまうことはなくなる。