少し前になるが、OWASPのTop 10が更新されたようだ。
http://www.owasp.org/index.php/Top_10_2010
前のバージョンとの変更点は、ざっくり次の通り。
- 脅威や脆弱性の程度(数)ではなく、ビジネスリスクによるランク付けに変わった
- 10のうち、2つの項目が変更になっている。追加された項目は、セキュリティ構成やセキュリティ設定のミス(これは、アプリケーション自体の問題ではない)と、攻撃者にリダイレクト(あるいはフォワード)先を指定されてしまうようなアプリケーションである
- 見た目(デザイン)がだいぶ変わったw
2004年度に、最初の「OWASP Top 10 2004」と、「OWASP Testing Guide*1」、それに
「安全なWebアプリ開発40箇条の鉄則」と、「IPA ISEC セキュアプログラミング講座(旧版)」を参考に、ひっしでチェックリストやチェックの枠組みを作成したのを思い出す。
SQLインジェクション、セッションハイジャック、セッションフィクセイション(セッション固定)、バリデーションの回避*2などの脆弱性は、作りこんでいた(作りこみそうだった)のをいくつか見た。
XSSおよびCSRFの脆弱性は、あまりなかった*3。
今は、「安全なウェブサイトの作り方」があるからね。
*1:確か、ドラフト版だった。
*2:複数画面からのリクエストを、セッションスコープのオブジェクト(ActionForm)に格納している場合に作りこんでしまう可能性がある。Struts自体にも、バリデーション回避の脆弱性があったが、それとは別。詳細はまたの機会に。
*3:自分のまわりでは、Struts(1.1とか1.2)を用いた、比較的シンプルな画面を持つWebアプリケーションの開発が多かった。(1) XSSについて: 一部のカスタムタグを除いて、カスタムタグ内で、HTMLの文字参照への変換処理を行っていたので、少なかったと思う。html:errorsタグの利用および、Struts自体の脆弱性はあったが。(2) CSRFについて: 重要な処理については、二重送信対策として、トランザクショントークン(Transaction Token)を用いることが、よく知られていた。このトークンは画面に埋め込んで用いるため、Cookieのように自動で送信されない。また、セッションIDをもとに生成しているため、推測も困難である。