5月版 「LSM不要論」に揺れるSELinux&AppArmor


上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2006/5/30

LSMなんて要らない!?

 Linuxカーネルには、LSM(Linux Security Module)という機構があります。SELinuxなどのセキュリティ機構をカーネルに導入するための仕組みです。

 Torok Edwinは、「FireFlier」というLSMモジュールを提案しました。ネットワークのフィルタリングをするためのモジュールです。しかし、「SELinuxのモジュールとして実装して、そっちに統合せよ」という意見が多く出されました。その流れから、「そもそもLSMは使いにくい」という話題になりました。そこからさらに、「LSMのモジュールとして実装されてメインラインに取り込まれているのは現状SELinuxだけなので、LSM自体を削除しよう」という話に展開しました。

 すると困るのは、LSMモジュールとして実装されているAppArmorです。AppArmorはSUSE Linuxに取り込まれているセキュリティ機構です。SELinuxに似た機能を実現でき、より簡単に設定できるのが売りのようです。「LSMを利用しているのがSELinuxだけならLSMを削除しよう」という議論をけん制するかのように、AppArmorをメインラインカーネルにマージすることを目標として、ソースコードが公開されました。

 メインラインカーネルにマージするには、議論が必要です。コードの書き方についての話もありましたが、さらにAppArmorにおけるセキュリティモデルが議論の対象となりました。AppArmorは設定対象をファイル名で指定するのですが、「それが良くない」という意見も出ているようです。

関連リンク:
SELinux
http://www.nsa.gov/selinux/
AppArmor
http://www.novell.com/products/apparmor/
Linux Security Moduleの取り込み
http://www.atmarkit.co.jp/flinux/special/kernel26/kernel26_04b.html

まだまだspliceの開発は続く

 先月の「乱立する仮想化技術を統合しよう」で、spliceとteeシステムコールがメインラインに追加されているとお伝えしました。

 Jens Axboeは、Nick PigginがメンテナンスしているLockless pagecacheパッチ()に関するベンチマーク結果をLKMLに投稿しました。複数のプロセスが全力で/dev/nullに対してspliceするという非現実的な設定ではありますが、Lockless pagecacheパッチを使った方がパフォーマンスは改善するという結果が出たようです。ただ、「Lockless pagecacheのコードは複雑で分かりにくい」とAndrew Mortonが指摘しました。

注:RCUを利用することでメモリ管理機構の中でロックが必要な部分を減らし、メモリ管理の高速化を狙ったパッチ。複雑なことと、ベンチマークの結果大した効果が見られなかったことから、不遇だった。

 spliceシステムコールはLinux独自の実装であるため、これを利用するアプリケーションはLinux専用になってしまいます。spliceに最適化したとして、それがどれくらい利用されるのかという観点も踏まえて、今後も検討が必要でしょう。

 なお、4月26日にリリースされたカーネル2.6.17-rc3では、vmspliceシステムコールが追加されました。spliceはファイルディスクリプタからの転送でしたが、vmspliceはユーザー空間のメモリバッファからパイプにデータを転送するシステムコールです。例えば、オーディオデータを処理した結果をゼロコピーでストリーミングする、といった用途が考えられそうです。

-stableリリースは大忙し

 4月は、10の安定版リリースが出ました。セキュリティホールが発見されるたびに慌ただしく新しいリリースが出たので、利用者側は追いかけるのが大変だったのではないでしょうか?

  • 2.6.16.2(4月7日)
      ・32bitシステムで4Gbytes以上メモリを搭載している場合、/proc/vmcoreがオーバフローすることへの対応
      ・Kconfig: FW_LOADERが必要なドライバに関して、FW_LOADERを選択する
      ・sysfsのバッファを0で終端させる(CVE-2006-1055)
    など、25パッチ

  • 2.6.16.3(4月10日)
      ・Keyを追加する場合にoopsが発生するのを修正(CVE-2006-1522)
  • 2.6.16.4(4月11日)
      ・RCUのsignal handlingのためにBUG_ONを削除
  • 2.6.16.5(4月12日)
      ・Intel EM64Tの例外ハンドリングの差異への対応(CVE-2006-0744)
    など、2パッチ

  • 2.6.16.6(4月17日)
      ・shmatが読み込み専用でも書き込み権限を与えてしまうのを修正(CVE-2006-1524)
      ・RLIMIT_CPU(ulimit -t)が0の場合の挙動を、1の場合と同じに変更
      ・sysfsのブロックデバイスのシンボリックリンクの名前が/の場合に対処
    など、23パッチ

  • 2.6.16.7(4月17日)
      ・MADV_REMOVEの脆弱性を修正(CVE-2006-1524のやり直し)
  • 2.6.16.8(4月18日)
      ・ip_route_inputがpanicするのを修正(CVE-2006-1525)
  • 2.6.16.9(4月18日)
      ・AMD CPUの浮動小数点用レジスタのプロセス間での情報漏えいを修正(CVE-2006-1056)
  • 2.6.16.10(4月24日)
      ・システムコールハンドラがtail-callしている問題の修正
      ・alim15x3のドライバのIDのアップデート
      ・ArmadaノートブックでのAPMの挙動の修正
    など、22パッチ

  • 2.6.16.11(4月24日)
      ・CIFSのセキュリティホールの修正(CVE-2006-1863)
2/2

Index
Linux Kernel Watch 5月版
 「LSM不要論」に揺れるSELinux&AppArmor
  Page 1
 percpuの落とし穴発覚
 ヘッダファイルのメンテナンスが容易になる?
Page 2
 LSMなんて要らない!?
 まだまだspliceの開発は続く
 -stableリリースは大忙し

連載 Linux Kernel Watch


 Linux Squareフォーラム Linuxカーネル関連記事
連載:Linux Kernel Watch(連載中)
Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします
連載:Linuxファイルシステム技術解説
ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する
特集:全貌を現したLinuxカーネル2.6[第1章]
エンタープライズ向けに刷新されたカーネル・コア
ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する
特集:/procによるLinuxチューニング[前編]
/procで理解するOSの状態

Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する
特集:仮想OS「User Mode Linux」活用法
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
Linuxのカーネルメンテナは柔軟なシステム
カーネルメンテナが語るコミュニティとIA-64 Linux
IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間