xoops用モジュールを開発するプロジェクトです。
□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
xoops 2.0.9 用 newbb パッチ v1.00
□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
Xoops 2.0.9 用の newbb にあたった XSS 対策パッチで、
「HTML を無効にする」
の動作や、プレビュー時のフォーラムの HTML 許可/不許可判定などがおかしく
なってしまいました。
これをフォローするためのパッチです。
・パッチ対象
プレビュー時の allow_html 判定の逆転のバグの修正。
allow_html 許可時に保存する際 disable html(no html) 判定が逆転している
バグの修正。
・脆弱性に関するリスク
xoops 2.0.9 newbb は動作上の新たなエンバグをしてしまいましたが、インジェ
クションのガードが入ったぶん強固になっていると思います。
2.0.9 で大問題なのは上記動作不良で、この動作不良が脆弱性攻撃に繋がるか?
という点に関しては、プレビュー時のリスクの発生箇所が逆転しているところが問
題になります。以下を御覧ください。
2.0.8 ... allow_html 不許可であっても XSS の投稿が可能(主たるリスク)
allow_html 不許可であればプレビュー時に html を有効化できる(リスク)
allow_html 許可であればプレビュー時に html を有効化できる(リスク)
2.0.9 ... allow_html 不許可であれば XSS の投稿は不可能
allow_html 不許可であればプレビュー時に html が有効(リスク)に
allow_html 許可であればプレビュー時に html が無効に(判定逆転)
patch ... allow_html 不許可であれば XSS の投稿は不可能(同様)
allow_html 不許可であればプレビュー時に html が無効
allow_html 許可であればプレビュー時に html が有効(リスク)に
・適用方法
newbb/post.php および
class/class.forumposts.php を上書きしてください。
・class を上書きしたくない人は……
html がらみの動きが見えにくいのでメソッドを追加したのですが、第三者のパッ
チで class までいじりたくないという人は、
post.php 161 行からの、
// patching
if (empty($HTTP_POST_VARS['nohtml']) && $forumdata['allow_html']) {
// $forumpost->setNohtml(0);
$forumpost->setDoHtml();
} else {
//$forumpost->setNohtml(1);
$forumpost->unsetDoHtml();
}
のコメントアウトを外すなどして、次のように書き換えてください。
// patching
if (empty($HTTP_POST_VARS['nohtml']) && $forumdata['allow_html']) {
$forumpost->setNohtml(0);
} else {
$forumpost->setNohtml(1);
}
これで post.php 内に完結します。
・連絡先
自分の手元で確認してみましたが、動作不良などあれば、
minahito@users.sourceforge.jp
まで御連絡ください。
・謝辞
この問題を取り上げてくださった okuhiki さんと Sting_Band さんに深く感謝
します。
また、不完全なパッチを提案してご迷惑をおかけしたことをお詫び申し上げます。