日本 Samba ユーザ会 (Samba Users Group Japan)
Samba 2.2.3 以降における脆弱性の報告とその対応策について
[Security Advisory]
Samba 2.2.3 以降における脆弱性の報告とその対応策について
日本 Samba ユーザ会は、Samba 2.2.3 以降にバッファオーバーフローの脆弱性が発見されたことを報告します。
以下、詳細情報を添付致します。
なお、Samba 日本語版の最新版は Samba 2.2.2 日本語版リリース 1.1 のため、この脆弱性は存在しません。また Samba 日本語版の次期リリースでは、この問題は修正された形でリリースされます。
対象プロダクト
Samba 2.2.3 以降で --with-tdbsam オプションを有効にしてコンパイルされたバイナリ。
なお、このオプションは experimental (実験的)な位置づけのものであり、デフォルトで無効になっています。
提供されているバイナリが上記オプションを有効にしてコンパイルされたバイナリかどうかが不明な場合は、smbpasswd -a コマンドを用いて Samba 用のアカウントを追加した際に $PRIVATEDIR/passdb.tdb ファイル(デフォルトの設定では /usr/local/samba/private/passdb.tdb) が作成されるかどうかで確認することができます。
現在、日本 Samba ユーザ会がリリースしている Samba 日本語版には、こ
の脆弱性は存在していません。ただし、Samba 2.2.3 以降をベースとした
Samba 日本語版の開発版について、この脆弱性が発見される以前のものに
ついては、脆弱性が存在しています。
脆弱性
configure 時に --with-tdbsam オプションを有効にして Samba をコンパイルした場合、smbd などの Samba を構成するサーバプロセスに対して悪意を持った要求を行なうことにより、smbd 内でバッファオーバーフローが発生します。この要求はリモートから行なうことも可能です。
これによりプロセスの意図的な停止、変数領域の不正な書き換えなどが可能となります。
smbd の場合、実際に問題が発生するのは親プロセスから fork された子プロセスのため、これにより smbd の親プロセスが停止することはなく、smbd のサービス提供は継続して行なわれます。ただし、winbindd など fork を行なわないものについては、プロセスの停止によりサービスが停止する可能性が考えられます。
この脆弱性は、smbpasswd などのクライアントプログラムや SWAT でも発生することがあり、その場合はプロセスの停止などの障害が発生する可能性があります。ただし、Samba には setuid されているプログラムはありませんので、この脆弱性により、管理者権限を奪取される可能性はありません。
なお、攻撃者が任意に選択したプログラムコードの実行の可能性については、可能性が排除された訳ではありませんが、現時点では可能性は低いと考えています。
対処策
configure 時に --with-tdbsam オプションを有効にせずにコンパイルを行なったものを利用することで、この脆弱性を完全に排除することが可能です。
--with-tdbsam オプションの利用が必要な場合は、以下のパッチを適用の上再コンパイルを行なうか、パッチを対応済のパッケージを利用することで、この脆弱性を完全に排除することが可能です。
Samba 日本語版の開発版については、Samba 2.2.4-ja-1.0beta4 もしくはそれ以降の開発版で、このパッチが適用されています。
また、今後リリースが予定されている Samba 2.2.4-ja-1.0 以降の Samba 日本語版でも、このパッチが適用された形でリリースが行なわれます。
各OSやディストリビューションのパッケージの対応に関しましては、各OSベンダやディストリビュータにお問い合わせください。
パッチについては、以下より入手が可能になっております。
- Samba 2.2.5 用
- Samba 2.2.4 用
- Samba 2.2.3a 用
なお、Samba 日本語版の開発版についてのパッチも
にて提供しております。
技術詳細
--with-tdbsamオプションは、SAM(セキュリティ アカウント マネージャ:ユーザ情報やパスワードを格納するデータベース)としてtdb(trival database - 小規模な情報を格納するために Samba 内部で利用されているデータベース形式)を使用する場合に指定します。
デフォルトでは、このオプションは指定されていません。
SAM の格納先として tdb を利用する場合、情報を格納する tdb の初期化時に、各種パラメータの値を smb.conf から取得しますが、パラメータにSamba 変数(%N や %U など、詳細は smb.conf を参照してください)が含まれていた場合には、その展開を行なって格納するという処理が行なわれます。この際に利用する作業領域の領域確保ルーチンに問題があり、変数展開が行なわれることでバッファオーバーフローが発生する危険性があります。
ただし、変数の値に含まれうる値は印刷可能な英数記号に限られており、設定可能な最大長にも制約があるため、バッファオーバーフローの結果、攻撃者の任意に選択したプログラムコードが実行される可能性は、非常に低いと考えております。
参考
本脆弱性は [sugj-tech:4924] Security Advisory for Samba 2.2.2 (Re: [RELEASE] samba-2.2.4-ja-1.0beta3)
にて報告されました。詳細は以下の URL を参照して下さい。
https://www.samba.gr.jp/ml/sugj-tech/htdocs/200207.month/4924.html
|