XOOPS、XOOPS Cubeのバグ・セキュリティーホール
セッションクッキーがドメイン全てに発行される
確認バージョン:XOOPS 2.4.0
セッションクッキーを1つのフルドメインに対してではなく、ドメイン全体に明示的に発行しています。
運営しているサイトが複数サブドメインを使用しているなら必要かもしれません。
しかしXOOPSを1つのサブドメインで運営し、さらにドメインの同じ別のサブドメインを使用しているサイトがあったときにクッキーのバッティングが起こります。
XOOPSサイトには影響はありませんが、XOOPS以外のサイトに影響します。
またクッキーの上書きはドメイン指定、パス指定が同じ値でないと上書きされません。
つまり次のようなことです。
Set-Cookie: cookiename=hoge; path=/; domain=.example.com
このセッションは次のヘッダーでは上書きすることはできません。(IE、Fx)
Set-Cookie: cookiename=hoge; path=/
該当コード
/htdocs/include/common.php define("XOOPS_COOKIE_DOMAIN", ($domain = xoops_getBaseDomain(XOOPS_URL)) == 'localhost' ? '' : '.' . $domain); /htdocs/kernel/session.php XoopsSessionHandler::update_cookie setcookie($session_name, $session_id, $session_expire ? time() + $session_expire : 0, '/', XOOPS_COOKIE_DOMAIN, 0);
ヘッダー情報
POST /user.php HTTP/1.1 …… Cookie: PHPSESSID=nnsqriskhm8hfk8jgsuvbtoat3 …… HTTP/1.x 200 OK …… Set-Cookie: PHPSESSID=nnsqriskhm8hfk8jgsuvbtoat3; path=/; domain=.example.com ……
対処法
.htaccessやhttpd.confにsession.nameを設定するか、PHPファイルの先頭にsession_name()を設定し、セッション名をPHPSESSID以外にします。
ログイン時にセッションIDの振り直しはされない
確認バージョン:XOOPS 2.4.0
[参考記事] セッション固定攻撃
GETクエリのセッションIDを無視するにはphp.iniを次のようにします。
session.use_only_cookies On
関連記事
スポンサーリンク