poti-kaini
poti-kaini copied to clipboard
POTI-board v2.26.0以前の古いバージョンに存在するXSS脆弱性について
v2.26.0を含むv2.26.0以前のバージョンのPOTI-boardにはXSSの脆弱性があります。
悪意のあるJavaScriptが実行される危険性
javascript:alert('xss');
というスクリプトはただ、xssというalertを出すだけで無害です。
しかし、このalertが開く環境では任意のJavaScriptが実行可能です。
POTI-boardのログファイルに格納される時にこのサンプルプログラムはエスケープされて、javascript:alert('xss');
となります。
ログファイルに格納する時にエスケープするのは誤りという意見がある事は知っていますが、ここでは触れません。
この値がURL欄に未チェックで出力されると
<a href="javascript:alert('xss');" target="_blank">URL</a>
となり、URL欄をクリックした時にJavaScriptが実行されます。
例えばcookieの内容を外部に送信するような悪意のあるJavaScriptも実行可能です。
別タブで開くtarget="_blank"
になっているため、ChromeやFirefoxではJavaScriptの実行がブロックされますが、IE11ではJavaScriptが実行される危険があります。
v2.26.1以後のバージョンでは、出力時にURLとして正しいかどうかを検証フィルタに通して調べています。 すでにログファイルにこのJavaScriptが混入していたとしてもURLとして正しくない形式の時は空白を返します。 URL欄には何も表示されません。
POTI-board改 v1.50.9 lot.190115 で行った対策
ここで、URL入力欄にJavaScriptが入らないようにするための入力値の検証を追加しています。
しかし、この対策では不十分です。
入力された値を検証してJavaScriptがURL欄に入らないようにしたとしても、いったん入力されたJavaScriptがログファイルに残っていればそのJavaScriptは実行可能です。
POTI-board改二 v2.26.1 lot.210214.0 で行った対策
出力時にURL欄の値をチェックするようにしました。 検証フィルタに通してURLとして正しくないものは出力しないようにしました。 古いログファイルのURL欄にJavaScriptが入っていても、URLとして正しくない文字列が入っていればURLの値は空白になり、URL欄は表示されません。