HDIVプロジェクトは、先日バージョン1.1をリリースした。HDIVはアパッチライセンスのStrutsのセキュリティ拡張で、Struts 1.xにセキュリティ機能を追加し、APIやStrutsの仕様を支えている。HDIVは、テキストデータのようなクライアントからの編集可能なデータと、リンク、hiddenフィールド、コンボボックスの値、ラジオボタン、動的でない型の決まったページなど編集不可な情報の両方の妥当性をチェックする。
今回のリリースでは、クッキーと編集可能なデータのバリデーションを中心としている。
- クッキーの機密性保持と整合性の検証
- 編集可能なデータ(テキストボックスやテキストエリア)のバリデーション
HDIVは、編集可能なデータ(テキストボックスやテキストエリア)の一般的なバリデーションを利用した、クロスサイトスクリプティング(XSS)やSQLインジェクションの攻撃によるリスクの大部分を排除します。開発者は、一般的なバリデーションをXML形式に準じて作成することで、決められた制約に基づいた攻撃に対するリスクを低減、除去します。
HDIVのWebサイトには、Open Web Application SecurityプロジェクトのWebサイトで、セキュリティの脆弱性トップ10にあげられているものを、HDIVがどのように対処しているかについての豊富なプレゼン資料がパワーポイント形式である。InfoQは、プロジェクトリーダであるRoberto Velasco Sarasola氏と、プロジェクトについて話をした。そこで、HDIVを作ったきっかけについて話してくれた。
私は、数年間にわたりWebアプリケーションの監査をしています。それらには、大抵、XSS、SQLインジェクション、パラメータ改ざんといった同一の脆弱性があります。主に、開発者がこの手の脆弱性のリスク(特に、選択、hidden、リンクといった編集不可のデータのリスク)を知らないことが原因です。Strutsは、主なJava Webフレームワークですが、これらの脆弱性を解決するための透過的なアプローチを持っていません。Strutsバリデータは、正常ルートの処理としての利用は可能ですが、データの整合性や機密性の問題を解決していません。
次に、InfoQは、JSFのような他のフレームワークとHDIVの統合について質問した。
私たちは、現在、既に内部リリースされたStruts2版を調査しています。来月にはパブリックベータ版がリリースされることを望んでいます。プロジェクトのコア部分は、Strutsと同じです。ただ、Struts2カスタムタグとして拡張された点が異なります。
さらに、私たちはJSF版も調査していますが、JSFのアーキテクチャデザインの中に私たちの機能を統合することは、慎重に時間をかけています。2ヵ月後にベータ版がリリースされることを期待しています。その場合、私たちは、コンポーネントの脆弱性(Hidden、Command Link、Outputlink)、クッキーの妥当性確認、脆弱性全般の要覧の調査にフォーカスをあてています。その後に、データの機密性の調査を開始するでしょう。
最後に、HDIVの今後の予定について尋ねた。
フォーカスをあてる場所は同じで、編集不可のデータにおける整合性と機密性や、編集可能なデータに対する一般的なバリデーションです。私たちは、以下にあげる新しい機能についても調査しています。(原文は2007年4月5日にリリースされた記事です)
- 編集可能なデータに対するバリデーションの自動化
- 管理者用Webツール(ログの視覚化、設定等)
- 警告を発する方法(SMS、email)