オープンソースのERP iDempiereのCSRF(Cross-Site Request Forgeries/クロスサイト・リクエスト・フォージェリ)の脆弱性対策について調査及び研究し、その成果をまとめています。
CSRF(クロスサイト・リクエスト・フォージェリ)とは
IPA 「安全なウエブサイトの作り方 改訂第7版」から引用
ウェブサイトの中には、 サービスの提供に際しログイン機能を設けているものがあります。ここで、ログ インした利用者からのリクエストについて 、その利用者が意図したリクエストであるかどうかを識別する仕組みを持たないウェブサイトは、 外部サイトを経由した悪意のあるリクエストを受け入れてしまう場合があります。 このようなウェブサイトにログンした利用者は、 悪意のある人が用意した罠により、利用者が予期しない処理を実行させられてしまう可能性があります。 このような問題を「 CSRF(Cross-Site Request Forgeries/クロスサイト・リクエスト・フォージェリ)の脆弱性」と呼び、 これを悪用した攻撃を、「 CSRF攻撃」と呼びます。
iDempiereのCSRFへの対策
CSRF攻撃を行うためには、悪意のある人があらかじめ利用者が意図しないリクエストを用意しておく必要があります。この予めリクエストを用意しておけなければならないというのがポイントで、悪意のある人が攻撃するために、特定動作の詳細が予想できるようなWebアプリケーションである必要があり、偽装リクエストが生成できる必要があります。
iDempiereでWEB-UIの開発フレームワークのZKは、HTMLのタグのID属性の値をアクセスする度に変更しており、IDの値が変更されている場合、そのリクエストを受け付けません。
このIDを予め正しく予想して偽装リクエストを作成する事は、事実上不可能なのではないかと思われます。