3月版 Linusの片腕、Andrewの夢は「結合テストを楽に」


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


そろそろ来るか? ext4

 以前より何度かお伝えしていた新ファイルシステム「ext4」ですが、そろそろカーネルへのマージに向かっているようです。ext3に比べ大容量ストレージなどに対応したext4関連の最近の動き、あらためて確認してみましょう。

関連記事:
リンク 2006年7月版 新ファイルシステム「ext4」開発開始か
http://www.atmarkit.co.jp/flinux/rensai/watch2006/watch07a.html
リンク 2006年11月版 「ext4」が見えてきた! ついに利用方法公開
http://www.atmarkit.co.jp/flinux/rensai/watch2006/watch11a.html

 1月22日、Theodore T'soは「2.6.25カーネルを目標にext4をマージする」という宣言を出し、一連のパッチを投稿しました。

 「ext4のフォーマットも落ち着いてきている。遅延アロケーションとオンラインデフラグ機能についてはまだマージに適していないが、それらはディスク上のデータ形式には影響しないはずだ」ということです。それに対してAndrew Mortonが細かいコメントを加えていました。

 2月10日には、Fedora 9に向けて開発が進んでいるRawhideでext4devが有効になりました。Fedora 9で、一般の利用者向けにext4を提供することを目指しているようです。

 そのテストの際に、ext3ファイルシステムを間違えてext4としてマウントしてしまうと元に戻れなくなるという問題が浮上しました。

 この問題を回避するため、ext4ファイルシステムのヘッダに「test_fs」フラグという仕組みが導入されました。「実験的」という位置付けであるext4devファイルシステムドライバは、このフラグが付いていないとマウントしないように変更が加えられました。このフラグはtune2fsmke2fsコマンドを利用して明示的に指定できます。

# mke2fs -E test_fs -j /dev/XXX
mke2fs 1.40.7 (28-Feb-2008)
test is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
128016 inodes, 512000 blocks
25600 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=67633152
63 block groups
8192 blocks per group, 8192 fragments per group
2032 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409

Writing inode tables: done
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 35 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# dumpe2fs -h /dev/XXX
dumpe2fs 1.40.7 (28-Feb-2008)
Filesystem volume name: <none>
Last mounted on:        <not available>
Filesystem UUID:        ee7ca324-a35d-4d59-9a20-36e556bfb541
Filesystem magic number: 0xEF53
Filesystem revision #:  1 (dynamic)
Filesystem features:    has_journal ext_attr resize_inode dir_index filetype sparse_super
Filesystem flags:       signed_directory_hash test_filesystem

# mount -o extents -t ext4dev /dev/XXX /mnt/
# df -T /mnt
Filesystem   Type   1K-ブロック   使用 使用可 使用% マウント位置
/dev/XXX   ext4dev     495844    10544 459700    3% /mnt
ext4ファイルシステムのマウント操作例

 正式マージも間近なext4ファイルシステム、そろそろ実験してみてはいかがでしょうか?

アイコン vmspliceのセキュリティホールで大騒ぎ

 vmspliceに、local root exploit(システム上の一般ユーザー権限からシステムのroot権限に昇格できる)が発見されました。vmspliceのエラーチェックに不十分な点があり、そこを突いてシステムを攻撃するコードが公開されたというのです。

 これに対し、まずカーネル2.6.22から2.6.24を対象とした「CVE-2008-0009/10」に対する修正「missing user pointer access verification」がリリースされました。しかし、この修正が適用されても攻撃コードが成功することが判明。再調査が行われた結果、2.6.17から2.6.24を対象とした別の問題が発見され、あらためて「CVE-2008-0600」に対しての修正が行われました。

 この問題の影響を受けるカーネルリリースは多数ありました。-stableリリースでいうと2.6.22.18、2.6.23.16、2.6.24.2がリリースされ、各ディストリビューションベンダも対応するカーネルアップデートを公開しています。

 今回の攻撃は、「vmsplice_to_pipe」のエラーチェックが不十分で、バッファオーバーフローにつながった点が問題だったようです。これに対し修正では、指定されている領域が、そもそもそのユーザーがアクセスできるメモリ領域なのかどうかを確認するコードを追加することで、問題を改善したようです。

関連記事:
リンク 2006年5月版 「LSM不要論」に揺れるSELinux&AppArmor
http://www.atmarkit.co.jp/flinux/rensai/watch2006/watch05b.html
リンク Linuxカーネルに脆弱性、ローカルからroot権限奪取の恐れ(@ITNews)
http://www.atmarkit.co.jp/news/200802/12/kernel.html

-stableの進ちょく

 前述のvmspliceのセキュリティホールに対応し、活発なセキュリティ対応がなされた2月の-stableリリースでした。

 また、2.6.22の-stableツリーについて、Greg K-Hは「2.6.22.19が最後のリリースになる」と宣言しました。2.6.22/23/24を同時に管理するのは難しいという判断でしょう。

 Oliver Pinterが「2.6.22は2.6.16のように長期間サポートされるカーネルではないのか?」と質問したところ、Greg K-Hは「自分の仕事が楽になるように2.6.22のメンテナンスはやっていたのだが、仕事も別のカーネルがベースになったので、もう.22には興味がない」とコメントしています。

■2.6.22.y:Greg K-Hたちが管理しているツリー

  • 2.6.22.17(2月7日):Greg K-H
    ・VFSのコアダンプ際の書き込み先ファイルのユーザー権限の確認の修正(CVE-2007-6206)
    ・一部のドライバのmmapにVM_DONTEXPANDを追加する(CVE-2008-0007)
    ほか、27パッチ
  • 2.6.22.18(2月11日):Greg K-H
    ・splice: get_iovec_page_array()のポインタアクセスに対しての修正(CVE-2008-0600)
    以上、1パッチ
  • 2.6.22.19(2月26日):Greg K-H
    ・i386:TRACE_IRQの問題の修正(CVE-2007-3731)
    ・不正な%csセレクタをシングルステップ命令処理でも正しく取り扱う(CVE-2007-3731)
    ほか、22パッチ

■2.6.23.y: Greg K-Hが管理しているツリー

  • 2.6.23.15(2月9日):Greg K-H
    ・VM/Security:do_brkにセキュリティフックを追加(CVE-2007-6434)
    ・VFSのコアダンプ際の書き込み先ファイルのユーザー権限の確認の修正(CVE-2007-6206)
    ・splice:ユーザーポインタのアクセス確認漏れ(CVE-2008-0009/10)
    ・一部のドライバのmmapにVM_DONTEXPANDを追加する(CVE-2008-0007)
    ほか、74パッチ
  • 2.6.23.16(2月11日):Greg K-H
    ・splice:get_iovec_page_array()のポインタアクセスに対しての修正(CVE-2008-0600)
    以上、1パッチ
  • 2.6.23.17(2月26日):Greg K-H
    ・x86_64:CPAのキャッシュアトリビュートの一貫性の不整合バグの修正
    ・SCSI:sd:メディアのエラー通知が正しくないエラー発生場所(lba)を通達する場合に対応する
    ・NFS:書き込みのキャッシュ不整合によるファイル破損の可能性の修正
    ほか、8パッチ

■2.6.24.y: Greg K-Hたちが管理しているツリー

  • 2.6.24.1(2月9日):Greg K-H
    ・splice:ユーザーポインタのアクセス確認漏れ(CVE-2008-0009/10)
    ・一部のドライバのmmapにVM_DONTEXPANDを追加する(CVE-2008-0007)
    ほか、45パッチ
  • 2.6.24.2(2月11日):Greg K-H
    ・splice:get_iovec_page_array()のポインタアクセスに対しての修正(CVE-2008-0600)
    以上、1パッチ
  • 2.6.24.3(2月26日):Greg K-H
    ・x86_64:CPAのキャッシュアトリビュートの一貫性の不整合バグの修正
    ・SCSI:sd:メディアのエラー通知が正しくないエラー発生場所(lba)を通達する場合に対応する
    ・NFS:書き込みのキャッシュ不整合によるファイル破損の可能性の修正
    ほか、36パッチ

(以上、敬称略)

2/2

Index
Linux Kernel Watch 3月版
 Linusの片腕、Andrewの夢は「結合テストを楽に」
  Page 1
 diffstatが長過ぎる!
 リリース管理を効率化する新しい動き:linux-next
Page 2
 そろそろ来るか? ext4
 vmspliceのセキュリティホールで大騒ぎ
 -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 記事ランキング

本日 月間