Contents
Sambaとは?
Samba日本語版
ドキュメント
技術情報
紹介&リンク
Community
プロジェクト
メーリングリスト
イベント
ユーザー会
etc...
お問合せ
ご支援・ご協力
日本 Samba ユーザ会 (Samba Users Group Japan)

Samba 2.2.8(オリジナル版)リリースのお知らせ

Samba 2.2.8 リリースについて

2002/03/14、Sambaチームは、安定版リリースであるSamba 2.2.8を発表しました。(アナウンス自体は3/15に流れています)

これは 2.0.x 〜 2.2.7a までに存在するセキュリティホールの修正を含んだものです。Sambaチームは2.2.8にアップグレードを行うか、または下記に示したような対処を行うことを推奨しています。自身の利用形態を確認した上で、対応を行って下さい。

なお、翻訳文内でも記載されているように、Samba が実装している CIFS/SMB プロトコルは本質的に脆弱です。基本的に本件のセキュリティホールに限らず、Firewallなどで防御してインターネットから接続できない様に設定を行ってください。

【注意】
  本リリースはオリジナル版のSambaであり、日本Sambaユーザ会がリリースしている「Samba日本語版」ではありません。Samba日本語版の最新リリースバージョンはSamba 2.2.7a-ja-1.0です。なお、現時点でリリースしているSamba日本語版にも同様の問題が存在していることを認識しています。これについては、Samba 2.2.7a-ja-1.1 としてリリースを行う予定です。(なお、Samba 2.2.7a-ja-1.1は、このすぐ後にリリースされています)


以下に samba-jp メーリングリスト(samba-jp@samba.gr.jp) での リリースノート翻訳 を元にしたものを付記します。なお、一部内容について注意書きを付記してあります。(※アナウンスの際に内容が不適当であったため注意書きについては削除いたしました)

原文については、以下のURLを参照して下さい。
 http://us1.samba.org/samba/whatsnew/samba-2.2.8.html



本リリースは、以下のリリースノートで概説する重要なセキュリティの修正を行うものです。これは Samba の安定版リリースの最新のものになります。このバージョンは、現在確認されているすべてのバグ修正を適用するために、業務に利用しているすべてのSambaサーバにおいて実行すべきバージョンです。

ソースコードは、以下からダウンロードすることが可能です:
http://download.samba.org/samba/ftp/
samba-2.2.8.tar.gz と samba-2.2.8.tar.bz2 のいずれかをご利用ください。
いずれのファイルも、Samba 配布キーによる署名が行われています。

主なプラットフォームのバイナリパッケージは、以下から入手可能です:
http://download.samba.org/samba/ftp/Binary_Packages/

リリースノートは以下を参照してください。
従来通り、すべてのバグは、我々に責任があります。

--Sincerely
The Samba Team

重要: Samba のセキュリティ修正

概要

SuSE セキュリティ監査チーム、特に Sebastian Krahmer <krahmer@suse.de>は Samba の中核をなす smbd のコードに、外部の攻撃者がリモートから認証なしで Samba が実行されているサーバのスーパーユーザ(root)権限を取得することが可能となる不具合を発見した。

この不具合は、Samba 2.0.x から 2.2.7a までの各バージョンにも存在する。これは致命的な不具合であり、すべてのサイトは直ちに Samba 2.2.8 へのアップグレードを行うか、TCP ポートの 139 と 445 へのアクセスを禁止するようにすべきである。Samba Team のリーダである Andrew Tridgell による、パッチを適用していない Samba サーバをどのように防御すべきかについての アドバイスが本セクションの末尾に付加されている。

Samba の実装されている SMB/CIFS プロトコルはセキュリティホールが存在しない場合でも多くの攻撃に対して脆弱である。TCP ポート 139 および 445 (これは Windows 2000 と Samba 3.0 のアルファ版のコードで使われている)は、信頼できないネットワークに対して解放すべきではない。

詳細

smbd に含まれる SMB/CIFS パケットのフラグメントと再構成のコード中に、攻撃者が smbd のプロセスが占めるメモリ中の任意の領域を上書きし、バッファオーバーランが発生させることが可能な状況が存在する。これにより技術力のある攻撃者は smbd に対してバイナリ依存のコードを送り込むことが可能となってしまう。

このバージョンの Samba では、SMB/CIFS パケットのフラグメントの再構成時に明示的にバッファオーバーフローのチェックを行うことで、smbd が適切な再構成を行うようにしている。

加えて、同様のチェックがクライアント側のコードにも組み込まれているため、smbd 以外のサービスを利用する場合も安全である。

謝辞

このセキュリティ上の不具合は SuSE セキュリティ監査チームの SebastianKrahmer <krahmer@suse.de> によって発見され、Samba Team に報告された。
この修正は Jeremy Allison によって用意され、Samba Team、SuSE、HP、SGI、Apple および Linux ベンダのセキュリティメーリングリストのエンジニアによってレビューされた。
Samba Team は、卓越した監査作業とこの不具合に対する諸々の作業に対して、SuSE および Sebastian Krahmer に感謝する。

パッチの提供

これはセキュリティ上の問題であるため、この不具合に対する以前のバージョンの Samba に対するパッチについても、要望があれば samba-technical@samba.org メーリングリストに投稿される。

パッチを適用しない Samba サーバを防御する

 Samba Team, March 2003

以下の文書は、最近発見されたリモートからのセキュリティホールに対処するに当たって、直ちに修正されたバージョンにアップグレードすることができない場合に、どのように対処すべきかについて記述したものである。アップグレードを行った場合についても、さらなる防御を行う上で、本文書の記述を参考にして欲しい。

ホスト単位の防御

多くの場合、インストールされた Samba は外部ネットワークからの脅威にさらされている。Sambaのデフォルトでは任意のホストからの接続が許可される。これはインターネットに直結されているホスト上で脆弱性のある Sambaを実行していた場合、脆弱性が顕在化してしまっているということに他ならない。
この問題に対処する最も簡単な対処策は、Samba の設定ファイルである smb.conf 中に「hosts allow」と「hosts deny」オプションを設定することで、サーバに対する接続を特定の範囲のホストに限定してしまうことである。
一例を以下に示す:
hosts allow = 127.0.0.1 192.168.2.0/24 192.168.3.0/24
hosts deny = 0.0.0.0/0

上記では、SMB 接続を「localhost(自身)」と 192.168.2 と 192.168.3 という二つの内部ネットワークのみに限定している。それ以外のホストからの接続はクライアントがパケットを送出した瞬間に拒否される。拒否される場合、「not listening on called name」というエラーが返却される。

インタフェースの防御

Samba のデフォルトでは、システム上に存在する任意のネットワークからの接続が許可される。これは ISDN 網や PPP を経由してインターネットに接続している場合、Samba はこれらの回線を経由した接続を許可してしまうということである。これは望ましいことではないだろう。

この挙動は、以下のようなオプションを設定することで変更することが可能である:
interfaces = eth* lo
bind interfaces only = yes
上記の設定により、Samba は eth0、eth1 のように「eth」ではじまる名称のインタフェースと「lo」というループバックインタフェースからの接続のみを待機(listen)するようになる。 この名称については、利用している OS に応じて適切なものを指定する必要がある。上記の例では Linux で一般的なイーサネットアダプタを例示している。

上記の設定を行っている際に、誰かが「ppp0」という PPP インタフェース経由でホストに SMB 接続を行おうとした際には、TCP コネクション拒否の応答が返却される。この場合 Samba のコードは全く動作せず、OS がそのインタフェース経由での接続はどのプロセスに対しても許可されていないという応答を行う。

ファイアウォールの利用

多くの場合、外部のネットワークへの公開が望ましくないサービスへのアクセスを拒否するためにファイアウォールが利用されている。可能な限り、前述した対処策と併用することで、万一ファイアウォールが無効になった場合でも防御を行えるようにしておくことを推奨はするが、ファイアウォールの利用は妥当な対処策である。

ファイアウォールの設定を行う際には、どの TCP および UDP のポートを遮断する必要があるかを知っておく必要がある。Samba は以下のポートを使用している:

UDP/137  - nmbd が使用
UDP/138  - nmbd が使用
TCP/139  - smbd が使用
TCP/445  - smbd が使用

最後のポートについて、古いファイアウォールの設定では考慮されていない場合が多いため注意すること。このポートは最近用いられているプロトコルでのみ利用されている。

IPC$ 共有の利用拒否

上記の対処策が利用できない場合は、発見されたセキュリティホールが利用する IPC$ 共有への接続のみを拒否することも可能である。これにより IPC$ 共有に対する潜在的に信頼できないホストからのアクセスを拒否しながら、その他の共有へのアクセスを許可することが可能となる。

これを行うには、以下のように設定を行う:

[ipc$]
hosts allow = 192.168.115.0/24 127.0.0.1
hosts deny = 0.0.0.0/0

これにより、Samba は、明示的に指定された 2 箇所(localhost とローカルサブネット)以外からの IPC$ への接続を禁止する。それ以外の共有への接続は許可されたままである。匿名での接続を常に許可する必要があるのは IPC$ 共有のみであるため、この対処策によりユーザ名とパスワードを知らない攻撃者に対してある程度の防御が行われることになる。

この対処策を利用する場合に、IPC$ 共有に接続しようとしたクライアントは「アクセスが拒否されました」というメッセージを受けとってしまう場合がある。こうしたクライアントは共有の一覧を始めとする幾つかのリソースにアクセスすることができない。

この対処方は、何らかの理由によりそれ以外の対処策を利用することができない場合を除き、推奨しない。

Samba のアップグレード

もちろん、最良の解決策は、Samba を不具合が修正されたバージョンにアップグレードすることである。上記の対処策のいずれかを用いても、もちろん構わないであろう。

アップグレードや重要なアナウンスがないかどうか、
http://www.samba.org/ を定常的にチェックするようにして欲しい。


2.2.7a からの変更点

新規パラメータ
  • acl compatibility

追加の変更点:
詳細は、SAMBA_2_2 の CVS のログを参照のこと
  1. Mandrake による smbumount の lazy patch
  2. fork する*前に*プロセス数が多すぎないかをチェック
  3. unix_convert() において、「name」の終端を超えないようにした
  4. socket のディレクトリを作る前に umask を 0 にするようにした
  5. LARGE_SMB_OFF_T 問題を修正し、ログファイルのディレクトリが指定されていても、インタラクティブモードの smbd が適切に動作するようにした
  6. Windows 2000 に適合するように delete on close の動作を修正した
  7. share mode deny によりファイルを開けない場合、適切にアクセス拒否を返却するように修正
  8. malloc した文字列に、常に pstrcpy でなくsafe_strcpy を使うようにした
  9. POSIX のロック範囲に関して部分的に実装されている HP-UX 用の修正
  10. uid/gid をキャッシュするコードの追加。winbindd の負荷を軽減
  11. printername フィールドに格納されている余計なサーバ名のコピーを削除 (プリンタ名を短縮した際に\\server\\\server\printerになっていた)
  12. errno をセットしていない perror を修正
  13. DC への接続が失敗したときに適切に再試行するようにした
  14. inet_addr に失敗のチェックを適切に行うようにした
  15. BROKEN_GETGRANAM が定義されていない場合は getgrnam() を使用する
  16. (setting_acls) が真の際の、デフォルトのアクセス権の設定洩れを修正
  17. sidtype のキャッシュを修正
  18. Solarisの(ビッグエンディアンである)のプリントサーバの印刷設定を修正。これは ASCII から UNICODE への変換のバグである
  19. エラー返却が適切に行われるようにする小規模な修正
  20. space_avail を符号なし整数とした
  21. [f]chmod_acl 関数へのポインタが有効なものかを呼出前にチェックするパッチ。audit(監査) VFS モジュールの SEGV を修正
  22. is_locked() のチェックにおいて、新しい書き込みロックは、コンテキストが同じ場合であっても、既存の読み取りロックと競合するようにした
  23. off-by-one(バッファなどが1バイト足りないバグ)によるクラッシュの修正を HEAD ブランチからマージ
  24. off-by-one バグのある malloc()/safe_strcpy() の組み合わせを strdup() に置換。
  25. HEAD ブランチからマージ。safe_strcpy でなく pstrcpy を使用
  26. ロックのブロック通知が速やかに行われるように修正(smb -> smb のロック開放で待たされることがない)。新しい PENDING_LOCK タイプを lockdb に追加(既存のロックには影響しない)
  27. コードのドキュメント化のために Doxygen 用の修正
  28. winbindd での接続に「last_access」フィールドを追加し、接続数が WINBINDD_MAX_SIMULTANEOUS_CLIENTS (local.h 内で現在は200に定義) を超えたときには最も古いアイドル状態の接続から閉じていくようにすることにより、winbindd が使用する UNIX ドメインソケットを制限した
  29. smbd のクラッシュを引き起こす smbd/dir.c 内の文字列操作を修正
  30. 新パスワードをコマンドライン引数で提供したさいに smbpasswd が SEGVになるバグを修正
  31. smbtar および smbclient で 64ビットのファイルサイズを扱えるよう修正
  32. pdbedit にバッチモードオプションを追加
  33. 不完全なリプライパケットに対する保護を nmbd に追加
  34. smbstatus の出力における sendfile のプロファイルのバグを修正
  35. 「hide unreadable」パラメータにおいてディレクトリの一覧が不適切になるバグの修正
  36. winbinddのグループ名一覧のバグを修正
  37. Solaris で libsmbclient をビルドする際の問題点を修正
  38. smbd 中のパスワード変更コードにおける、メモリリークおよび不正なポインタ参照を修正
  39. ファイルを短縮する際に属性が変更されてしまう点を修正
  40. プロセス数の限界に達しても smbd プロセス数が -1 にならないように修正
  41. 小量書き込んだ時点でディスク溢れエラーが返却されるように修正
  42. lpq time の後で投入されたジョブを消去しない
  43. smbd がリソースをオープンせずに終了した際に発生する参照数計算のバグを修正
  44. hp-ux でクォータを利用する際のパフォーマンスの修正
  45. --with-ldapsam の修正
    • 「ldap ssl != on」の場合は、デフォルトでポート 389 を使用
    • 「ldap server」によって読みとり専用のスレーブが指定されていた場合にパスワードを変更する際にはマスタのディレクトリサーバに再度バインドを行う機能のサポートを追加
  46. secrets.tdb に格納されたマシン/ドメインの SID を取り出したり設定したりするため、smbpasswd に -W と -X コマンドラインフラグを追加。詳細は smbpasswd(8) マニュアルページを参照のこと
  47. コードが PADL の nss_ldap ライブラリから取得されたことを明示するために、(c) Luke Howard を winbind_nss_solaris.c に追加
  48. winbindd における samr_dispinfo クエリのバグを修正
  49. ゲスト接続において、NTLMSSP のパスワード変更コードで SEGV が発生する件の修正
  50. pstring/fstring のミスマッチを修正
  51. smbd が locking.tdb 内の共有エントリのロックを持ち続けることを避けるため、レベルII oplock 解除の要求を同期して送信する
  52. tdb のエラーとデータをレコードに追加する際のコードをいくらかクリーンアップ
  53. オープンされているファイルの短縮操作時に DOS 属性が適切に設定されるように実装
  54. ファイルに対しても「wide link = no」を適用するように修正
  55. Stratus VOS における共有ライブラリのチェックを包含
  56. CUPS プリンタクラスおよびリモートプリンタ名のロギング機能のサポートを追加
  57. %a に「WinXP」(Windows XP) と「Win2k3」(Windows .NET)の値を追加
  58. Windows NT 4.0 クライアントと幾つかの問題のあるプリンタドライバを扱うために、max PDU サイズを増加
  59. プロセスカウンタを fork 後直ちに増加させるように設定(最初の smb パケットを受信した時ではなく)
  60. rename が errno を適切に設定するように修正
  61. ACL コードの一元化 (3.0 からのバックポート)
  62. off_t および large offset に関する幾つかの問題点の修正


ミラーサイト: [ WWW: master ] [ FTP: ring | kddilabs | plathome | mex | master ]

Copyright © 1999-2014 日本 Samba ユーザー会 (Samba-JP)
2011-12-19 01:17:48 JST 更新