Tetsuo Handa
from-****@I-lov*****
2012年 3月 3日 (土) 22:41:19 JST
AppArmor のパッチを読んでいたら、(ユーザ空間からは任意の組み合わせの MS_* オプションをマウント要求に渡すことができるために) TOMOYO のマウント パーミッションチェックが不正確になる場合があることに気がつきました。 2つ例を示します。 MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE の方が MS_BIND よりも優先度が 高かったため、もし MS_BIND と MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE の 何れかが同時に指定された場合、デバイスファイル名をチェックすべきところが チェックされないようになっていました。 MS_BIND/MS_MOVE の方が MS_REMOUNT よりも優先度が高かったため、もし MS_BIND/MS_MOVE のどちらかと MS_REMOUNT が同時に指定された場合、デバイス ファイル名をチェックすべきでないところでチェックされるようになっていました。 このバグを do_mount() と同様に MS_REMOUNT -> MS_BIND -> MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE -> MS_MOVE という優先順位に変更 することで修正しました。また、 MS_SHARED/MS_PRIVATE/MS_SLAVE/MS_UNBINDABLE は 同時に1つしか指定できないので、複数指定されていた場合には -EINVAL を返すことで 不正確な TOMOYO のアクセス要求ログが発生しないように変更しました。 TOMOYO 2.3 (カーネル 2.6.36 )以降にもこのバグは存在しています。 TOMOYO 2.5 向けの修正パッチは カーネル 3.4 に含まれる予定です。 このバグを修正することにより、マウント制限が有効な場合にはポリシーの修正が 必要になる可能性があります。ただし、アプリケーションが上記で示したような例に 該当するようなマウント要求をすることはまず無いため、実際に修正が必要になる ことはまず無いでしょう。 また、カーネル 3.4 では UMH_WAIT_PROC という定数(現在は 1 です)が変更される 予定です。この変更がバックポートされる場合に備えて、ハードコーディングされた 定数ではなく UMH_WAIT_PROC という定数を使うように修正しました。残念ながら、 この変更の有無を実行時に検出する方法はありません。もし、ポリシーローダ ( /sbin/ccs-init )の実行が終了する前にカーネルが先に進もうとしてしまう ことにより起動時にカーネルパニックが発生するようになった場合、この変更が バックポートされていないかどうか確認してください。(もし、 TOMOYO 2.x 内の ハードコーディングされた定数を UMH_WAIT_PROC に変更せずに、この変更だけが バックポートされてしまった場合、 /sbin/tomoyo-init でも同様のことが発生 します。 TOMOYO 2.x をバックポートされている方はご注意ください。) ccs-tools-1.7.3 については、バグ修正と機能強化を行いました。 /usr/sbin/ccs-checkpolicy Fix validation failure with number_group entries. /usr/sbin/ccs-editpolicy Allow optimization command ('o' key) to exception policy. Fix wrong copy to buffer command ('insert' key) from Process State Viewer mode. /usr/lib/ccs/init_policy Generate wildcarded allow_read entries. ccs-tools-1.8.3 については、「 o キーを押したときにエントリが選択されたか どうかを確認できるようにするために、現在選択中の行の数が表示されるようになって いると嬉しい」という要望を原田さんからもらったため、ヘッダ行に表示するように しました。 & マークが付いている行が存在しない場合、ヘッダ行の表示は現在のままです。 <<< Exception Policy Editor >>> 109 entries '?' for help & マークが付いている行が存在する場合、ヘッダ行の表示は以下のようになります。 <<< Exception Policy Editor >>> 109 entries (9 selected) '?' for help 何か問題を見つけたらお知らせください。 ccs-patch-1.6.9-20120301.tar.gz MD5: 111184bfdcc6342987af4f431895e382 ccs-patch-1.7.3-20120301.tar.gz MD5: 1111d8fb724cae0c7b0dd8a3b294c55f ccs-patch-1.8.3-20120301.tar.gz MD5: bbbbc6a0872028ed17d623af720a73bd ccs-tools-1.6.9-20120301.tar.gz MD5: 9999b891210fb4d79da4e9ebefc92236 ccs-tools-1.7.3-20120301.tar.gz MD5: 777796417338fff302597456bbf9e0b7 ccs-tools-1.8.3-20120301.tar.gz MD5: dddd6ca49a2f73bef77590cd4d199a9f akari-1.0.25-20120301.tar.gz MD5: 6666311eece23c6250957dca91083b6e