Mac OS X, Linux を含む Unix 系での QSharedMemory に関するセキュリティアドバイザリーがアナウンスされています。
Qt 5.0.1 以外の Qt 4.4.0 以降のすべての Qt において、QSharedMemory や X11/XCB でバッファ共有に利用されている共有メモリが他者から読み書き可能な状態にあったという問題です。
Qt 5.0.1 では修正済みです(qtbase の変更履歴 の最後で “Important Behavior Changes” として記載されています)。Qt4 系ではリリース予定の 4.8.5 や 4.7.6 を待つか、以下のパッチを適用してください。
- 5.0: http://qt.gitorious.org/qt/qtbase/commit/856f209fb63ae336bfb389a12d2a75fa886dc1c5
- 4.8: http://qt.gitorious.org/qt/qt/commit/20b26bdb3dd5e46b01b9a7e1ce8342074df3c89c
- 4.7: http://qt.gitorious.org/qt/qt/commit/57756e72adf2081137b97f0e689dd16c770d10b1
パッチの副作用として、異なるユーザ間で共有メモリを共有することが不可能になるほか、setuid された X サーバが動かない環境において、X のパフォーマンス低下があげられます。前者の問題には Qt の新しい API が、後者は X のプロトコル拡張が必要となります。
Qt の API に関しては 5.1 に向けて検討が始まるだろうとのことです。QSharedMemory に関しては、先日 interest メーリングリストで QSystemSemaphore と関連して API の問題が話題になっていました。利用に関しては注意してください。
Title: POSIX shared memory segments created world-writeable
Tracking: CVE-2013-0254
Risk Rating: Low to Medium
Platforms: Unix, including Mac OS X and Linux
Modules: QtCore, QtGui, QPA plugin for XCB
Versions: 5.0.0 and previous, since 4.4.0
Author: Thiago Macieira
Date: 4 February 2013