KSA2006-001

English page

Kahua Release

kahua-web Release

Security Advisory

Event Log

Documentation

For developers

Site info

Related Site

Kahua Security Advisory 2006-001

概要

異なるユーザデータベースを参照する複数アプリケーション間で、ログインセッションが 意図せず共有されてしまう。

影響範囲

  • 2006-09-26以前のCVSバージョン
  • 0.6以前の全てのリリースバージョン

以上のバージョンを使用し、なおかつ別のユーザデータベースを参照する複数の アプリケーション(ワーカ)を同一のスーパバイザ配下で実行している場合。

別々のスーパバイザ配下でアプリケーションを動かしている場合や、単一の アプリケーションのみを動かしている場合には影響を受けません。

修正

  • 2006-09-26(CVSバージョン)
  • 0.7(リリース)

技術的詳細

  1. ひとつのスーパバイザの下でアプリケーションAとアプリケーションBが動いているとする。
  2. AとBは別々のデータベース上にユーザ情報(ユーザ名/パスワード)を保持している。
  3. ユーザ foo がアプリケーションAにユーザ名 foo でログインする。
  4. この時、ユーザ foo はこのセッションにおいて、アプリケーションBにもユーザ名 foo としてログイン済みとなってしまう。

Kahuaでは、ひとつのスーパバイザ配下で動く全てのワーカ(アプリケーション)が、 ひとつのログインセッションを共有することを基本的な考え方としていました。 これにより、認証をひとつのアプリケーションに委譲するといった、個々のアプリ ケーションをプラガブルに組み合わせ連携させることが可能になるからです。

このため、ログイン状態の特定は、ログインユーザ名のみを使って行われていました。

これは、全てのワーカが同じデータベース上のユーザ情報を使用している場合には うまく機能します。しかし、別のユーザデータベースを参照するワーカが混在した場合、 ユーザ名のみでログインユーザを同定することは、同一でないユーザを同一である と見なすことになり、セキュリティ上問題となります。

このため、ユーザ名とユーザデータベースのID(データベースパス)のペアをもって ユーザを同定するよう変更を行いました。

なお、ログイン状態の確認には、(kahua-current-user-name)の値ではなく、必ず (kahua-current-user)の値を使用するようにしてください。

解決策

Kahua 0.7以降にアップグレードし、ログイン状態の確認に(kahua-current-user)を使用する。

回避策

Kahuaのアップグレードを避けたい場合は、ログインセッションを共有したくないアプリケーションを別のスーパバイザプロセス配下で動かしすことで、この問題を回避することができます。

更新履歴

  • 2006-09-29 リリース

Copyright (c) 2003-2007 Kahua Project Contact | About Us