# FreeBSD/alpha 4.11-RELEASE リリースノート

### FreeBSD プロジェクト

Copyright © 2000, 2001, 2002, 2003, 2004, 2005 FreeBSD ドキュメンテーションプロジェクト

$FreeBSD: src/release/doc/ja_JP.eucJP/relnotes/common/new.sgml,v 1.5.2.55 2005/02/07 01:54:19 hrs Exp $

この FreeBSD 4.11-RELEASE リリースノートには、 FreeBSD 4.10-RELEASE のリリース以降に FreeBSD ベースシステムに対して加えられた変更点がまとめられています。 変更点はカーネル、ユーザランドにおけるものだけでなく、 前回のリリース以降に発行され、 ベースシステムに影響のあるセキュリティ勧告も含まれています。 また、アップグレードの際の注意点についても簡単に説明しています。

## 1. はじめに

この文書は Alpha/AXP アーキテクチャ版 FreeBSD 4.11-RELEASE のリリースノートです。 これには 4.10-RELEASE 以降に追加 (変更) された新機能および、前のバージョンの FreeBSD からアップグレードする場合におけるいくつかの注意点か書かれています。

この FreeBSD 4.11-RELEASE は release 版であり、 ftp://ftp.FreeBSD.org/ および各ミラーサイトで公開されています。 FreeBSD の release 版 (またはそれ以外) の入手法については FreeBSD ハンドブックの ``FreeBSD を入手するには''をご覧ください。

## 2. 更新情報

この節では 4.10-RELEASE 以降に新たに追加・変更された ユーザに影響する機能について説明します。 リリースノートの項目には通常、新しいドライバや新しいハードウェアへの対応、 新しいコマンドや新しいオプションの導入、 大規模なバグ修正、寄贈ソフトウェアのアップグレードが含まれており、 それに加えて 4.10-RELEASE 以降に発行され、 ベースシステムに影響のあるセキュリティ勧告も記載されています。

### 2.1. セキュリティ勧告

攻撃者がローカルからカーネルメモリの一部を読み書きできるような、 FreeBSD の Linux バイナリ互換機能におけるプログラム上の誤りが修正さ れました。詳細は、セキュリティ勧告 FreeBSD-SA-04:13.linux をご覧ください。

CVS のサーバモードに、 メモリの二重開放 (double-free)、整数演算のオーバフロー、 バッファオーバフローなど、リモートから悪用できる 数多くのセキュリティ上の弱点が発見されました。 これらを悪用すると、情報の漏洩やサービス妨害攻撃が可能であり、 さらに任意のコードの実行ができる危険性があります。この弱点は、 CVS 1.11.17 への更新によって修正されました。 詳細は、セキュリティ勧告 FreeBSD-SA-04:14 (日本語訳) をご覧ください。

HTTP サーバがクライアントのメモリの任意の部分を上書きするこ とができるという、 fetch(1) ユーティリティのバグが修正されました。 詳細は、セキュリティ勧告 FreeBSD-SA-04:16 (日本語訳) をご覧ください。

悪意を持ったユーザが、ローカルからシステムをパニックさせて サービス妨害攻撃をおこなったり、カーネルメモリの一部を不正に読み出せる ような、 procfs(5) と linprocfs(5) のバグが修正されました。 詳細は、セキュリティ勧告 FreeBSD-SA-04:17 (日本語訳) をご覧ください。

### 2.2. カーネルの変更点

em(4) ドライバが インストールメディアのカーネルに追加されました。

PROT_NONE という状態のページが、 ある条件下で読み出し可能になるという mmap(2) のバグが修正されました。

FreeBSD 仮想メモリサブシステムの `vm_object_madvise()`, `vm_object_sync()`, `contigmalloc()` 関数のバグが修正されました。 `vm_object_madvise()` と `vm_object_sync()` のバグは、 さまざまな条件でメモリ内容が壊れる可能性があるもので、 `contigmalloc()` のバグは、 システムをパニックさせる可能性があるものです。

#### 2.2.1. プラットフォーム固有のハードウェアの対応状況

DS10 クラスのシステムでは、 フロッピーインタフェースの対応に問題があります。 カーネルはハードウェアを正しく検知するのですが、 フロッピーが正常に動作しません。 ただし、フロッピーからの起動とインストールは可能です。

#### 2.2.2. ネットワークインターフェイスの対応状況

ASIX Electronics AX88172 USB 2.0 Ethernet チップセットに対応する axe(4) ドライバが追加されました。

bge(4) ドライバが BCM5750 および BCM5751 に対応しました。

em(4) ドライバが 82541ER および 82546GB デュアルポート PCI Express アダプタに対応しました。

Intel 82597EX Ethernet コントローラチップベースの PCI ギガビット Ethernet アダプタに対応する ixgb(4) ドライバが追加されました。

Ethernet ハブのような単純なパケット分配を実現する Netgraph ノードタイプ ng_hub(4) が追加されました。

sk(4) ドライバの jumbo フレームの処理にあったバグが修正されました。

vr(4) ドライバが polling(4) に対応しました。

インタフェース単位で制御可能な polling(4) 機能が実装されました。 polling(4) に対応しているすべてのネットワークドライバ ( dc(4), fxp(4), em(4), nge(4), re(4), rl(4), sis(4), ste(4), vr(4)) はこの機能に対応しており、 ifconfig(8) を使って制御できます。

net.inet.ip.rtexpire もしくは net.inet6.ip6.rtexpire が 0 に設定されている時に、 システムがパニックする問題が修正されました。

#### 2.2.3. ネットワークプロトコル

一時ポート (ephemeral port) の割り当てを乱数を使っておこなうという、OpenBSD の持つ機能が実装されました。 これはデフォルトで有効になっており、sysctl 変数 net.inet.ip.portrange.randomized で無効にできます。ただし接続数の変化が速い場合には、 この乱数化によってポート番号の再利用が非常に速くおこなわれるため、 システムによってはそれが問題となることがあります。 そこで、乱数を使ったポート番号によるセキュリティの向上と、 正常な動作の両方を実現するため、 接続数の変化が速くなった時点で機能を無効にするようになっています。 具体的には、毎秒の接続数が sysctl 変数 net.inet.ip.portrange.randomcps (デフォルトでは 10) を超えた場合、 乱数化は sysctl 変数 net.inet.ip.portrange.randomtime で指定された秒数 (デフォルトは 45) の間、無効になります。

ipfw(4) がルックアップテーブルに対応しました。 この機能は広範囲の連続しないアドレス集合を扱うのに有用です。

ipnat(8) の redirect ルールが、 TCP/UDP 以外のパケットについても動作するようになりました。

FreeBSD TCP スタックの RST の処理が、 一般に使われている多くの TCP スタックとの互換性を維持しつつ、 reset 攻撃を可能な限り困難にするように改良されました。 これは、次のようなアルゴリズムを使っています。 ESTABLISHED 状態の接続は、 シーケンス番号が last_ack_sent と正確に一致する RST のみが受理され、 それ以外のセグメントは何もせずに無視されます。 それ以外の状態の接続の場合は、RST がウィンドウ内のどこにあっても受理されます。 上記以外のセグメントは、何もせずに無視されます。 ただし、これは RFC 793 の仕様に違反していることに注意してください。 sysctl 変数 net.inet.tcp.insecure_rst を 1 に設定すれば、 機能を無効にして従来の動作に戻すことが可能です。

#### 2.2.4. ディスク・記憶装置

IBM/Adaptec ServeRAID コントローラに対応する ips(4) ドライバが追加されました。

mpt(4) ドライバが LSI Logic FC929X デュアル 2Gb/s Fibre Channel カードに対応しました。

trm(4) ドライバが DC395U2W アダプタに対応し、 高負荷時の問題も修正されました。

### 2.3. ユーザランドの変更点

cron(8) デーモンにジョブを開始する時間を変動させることが できるようになりました。-j オプションは特権を持たないユーザ、 -J オプションはスーパユーザ用です。 時間の変動というのは、 cron(8) がジョブを実行する前に、 指定された範囲内で無作為に選ばれた、 短い待ち時間が発生するという意味です。 この機能は、多くのジョブが特定の瞬間に予定されている場合の負荷 のピークを低減することを目的としたものです。

fwcontrol(8) に、デフォルトの fwmem ターゲットを指定する -m オプションが追加されました。

$inetd_flags 変数の初期設定に -C 60 オプションが追加されました。

libc に、 eui64(3) 関数群が追加されました。

ngctl(8) に、Netgraph システム全体の GraphViz (.dot) 画像を生成する `dot` コマンドが追加されました。

ppp(8) の LQM (Link Quality Monitoring) 対応が再実装されました。LQM は、PPP において、有効な回線の接続品質の監視を可能にするものです。 詳細は RFC 1989 をご覧ください。

ユーザランド ppp(8) 実装が、 定期的に RADIUS アカウント情報を RADIUS サーバに送信する ``set rad_alive N'' コマンドに対応しました。

ひとつのインタフェースに 2 つ以上の IP アドレスを割り当てている場合 に正しく動作しなくなるという、 rarpd(8) のバグが修正されました。

syslogd(8) が LOG_NTP ファシリティに 対応しました。

pax(1) に存在していた off-by-one エラー数個と、 バッファオーバランの可能性がある部分が修正されました。

whois(1) が NORID (ノルウェーの最上位レジストリ) ハンドルとドイツの whois ネームサーバに対応し、 韓国国内の IP アドレス割り当てを管理している `whois.krnic.net` (NIDA; National Internet Development Agency of Korea) に問い合わせるための -k フラグが追加されました。

### 2.4. 寄贈ソフトウェア

CVS がバージョン 1.11.5 から バージョン 1.11.17 に更新されました。

sendmail がバージョン 8.12.11 からバージョン 8.13.1 に更新されました。

GNU patch のソースファイルが `src/contrib/patch` から削除されました。 FreeBSD は 7 年近く、`src/gnu/usr.bin/patch` に置かれた patch(1) のソースを利用しています。

タイムゾーンデータベースが tzdata2004e リリースから tzdata2004g リリースに更新されました。

### 2.5. リリースエンジニアリングと統合

GNOME のサポートリリースバージョンが、 2.6 から 2.8.2 に更新されました。 各コンポーネントの変更一覧は http://mail.gnome.org/archives/gnome-announce-list/2004-December/msg00026.html にあります。

KDE のサポートリリースバージョンが 3.2.2 から 3.3.2 に更新されました。

Linux バイナリ互換機能用のサポートユーザランドパッケージが (Red Hat Linux 7.1 ベースの) `linux_base` から (Red Hat Linux 8.0 ベースの) `linux_base-8` に更新されました。

X Window System のサポートリリースバージョンが、 XFree86 4.4.0 に更新されました。 また、Xorg X11R6.8.1 も FreeBSD Ports Collection (`x11/xorg`) に収録されています。

`make.conf` の NOSECURE 変数は、 正常に機能せず保守されていないため、削除されました。 NOSECURE を利用していた場合は、 代わりに NOCRYPT を利用してください。

## 3. 以前の FreeBSD リリース版からのアップグレード

以前の FreeBSD リリース版からのアップグレードをおこなうには、 主に次の 3 つの方法があります。

- sysinstall(8) のバイナリアップグレード機能を使う方法。 おそらくこの方法が最も時間のかからない方法なのですが、 これは FreeBSD のインストール時に 特別なコンパイルオプションを指定していないことを前提としています。

- FreeBSD を完全に再インストールする方法。 技術的にはアップグレード手段の一つとは言えませんし、 `/etc` の内容を手動で退避・復元したりする必要があるなど、 大抵の場合はバイナリアップグレード機能を使うより手間がかかります。 しかし、ディスクのパーティション分割を変更したい (とか、 変更しなければならない) 場合などには便利な方法でしょう。

- `/usr/src` のソースコードから構築する方法。 この手段は非常に柔軟な対応が可能ですが、 ディスク空間と時間、そして専門的なノウハウを必要とします。 詳細については FreeBSD ハンドブックの ```make world` を利用する'' という章をご覧ください。 また、非常に古いバージョンの FreeBSD からのアップグレードは問題が発生することが多いため、 そのような場合にはバイナリアップグレード、 もしくは完全な再インストールをおこなった方が効果的でしょう。

なるべくアップグレードを始める前に詳細について `INSTALL.TXT` をご覧ください。 ソースからアップグレードする場合は `/usr/src/UPDATING` にも目を通す必要があります。

最後になりますが、FreeBSD の -STABLE もしくは -CURRENT ブランチを追いかけるために用意された手段の一つをとりたいと考えているなら、 FreeBSD ハンドブックの ``-CURRENT vs. -STABLE'' の節をご覧になるようお願いします。

> Important: もちろん言うまでもないことですが、 FreeBSD のアップグレードは、データと設定ファイルを すべて バックアップした後におこなうべきです。

このファイルの他、リリース関連の文書は ftp://ftp.FreeBSD.org/ からダウンロードできます。

FreeBSD に関するお問い合わせは、<questions@FreeBSD.org> へ質問を投稿する前に解説文書をお読みください。

FreeBSD 4-STABLE をお使いの方は、ぜひ <stable@FreeBSD.org> メーリングリストに参加ください。

この文書の原文に関するお問い合わせは <doc@FreeBSD.org> まで、
日本語訳に関するお問い合わせは <doc-jp@jp.FreeBSD.org> まで電子メールでお願いします。