ウェブサイト検索

LinuxシステムにおけるSambaCry脆弱性(CVE-2017-7494)の修正方法


Sambaは、*nixシステム上のWindowsクライアントに対して共有ファイルおよび印刷サービスを提供するための標準となって久しいです。家庭ユーザー、中規模企業、大企業のいずれにも使われ、異なるオペレーティングシステムが共存する環境での必須ソリューションとして際立っています。

広く使用されているツールに悲しいことに起こるように、ほとんどのSambaインストールは、知られている脆弱性を悪用する攻撃のリスクにさらされています。この脆弱性は、WannaCryランサムウェア攻撃がニュースになってから、深刻なものとは見なされませんでした。

この記事では、このSambaの脆弱性とは何か、そしてあなたが責任を持つシステムをどのようにそれに対して保護するかについて説明します。インストールの種類(リポジトリからまたはソースから)に応じて、それを実行するために異なるアプローチを取る必要があります。

現在、Sambaをどのような環境でも使用している場合や、そのような人を知っている場合は、続きをお読みください!

脆弱性

古くてパッチが未適用のシステムは、リモートコード実行の脆弱性に対して脆弱です。簡単に言うと、書き込み可能な共有にアクセスできる人が任意のコードをアップロードし、サーバーでルート権限で実行できるということです。

この問題はSambaのウェブサイトでCVE-2017-7494として説明されており、Sambaのバージョン3.5(2010年3月初旬にリリース)以降に影響を与えることが知られています。正式にはSambaCryと呼ばれており、WannaCryとの類似性のためです:どちらもSMBプロトコルを標的としており、潜在的にワームのように広がる可能性があります – これにより、システムからシステムへと広がる可能性があります。

Debian、Ubuntu、CentOS、およびRed Hatは、ユーザーを保護するために迅速に行動を取り、サポートされているバージョンのためのパッチをリリースしました。さらに、サポートされていないバージョンに対してもセキュリティの回避策が提供されています。

Sambaを更新中

前述のように、前回のインストール方法に応じて取るべきアプローチは二つあります:

もしあなたがディストリビューションのリポジトリからSambaをインストールした場合。

この場合にあなたが何をする必要があるか見てみましょう:

DebianでSambacryを修正する

次の行をソースリスト(/etc/apt/sources.list)に追加して、aptが最新のセキュリティ更新を取得するように設定されていることを確認してください:

deb http://security.debian.org stable/updates main
deb-src http://security.debian.org/ stable/updates main

次に、利用可能なパッケージのリストを更新します:

# aptitude update

最後に、sambaパッケージのバージョンが脆弱性が修正されたバージョンに一致していることを確認してください(CVE-2017-7494を参照)。

# aptitude show samba

UbuntuでSambacryを修正する

まず、新しい利用可能なパッケージをチェックし、sambaパッケージを次のように更新します:

$ sudo apt-get update
sudo apt-get install samba

CVE-2017-7494の修正が既に適用されているSambaのバージョンは以下の通りです:

  • 17.04: samba 2:4.5.8+dfsg-0ubuntu0.17.04.2
  • 16.10: samba 2:4.4.5+dfsg-2ubuntu5.6
  • 16.04 LTS: samba 2:4.3.11+dfsg-0ubuntu0.16.04.7
  • 14.04 LTS: samba 2:4.3.11+dfsg-0ubuntu0.14.04.8

最後に、以下のコマンドを実行して、あなたのUbuntuボックスに正しいSambaバージョンがインストールされているか確認してください。

$ sudo apt-cache show samba

CentOS/RHEL 7でSambacryを修正する

修正されたSambaのバージョンはEL 7のsamba-4.4.4-14.el7_3です。これをインストールするには、次のようにします。

# yum makecache fast
yum update samba

以前と同様に、修正されたSambaバージョンを持っていることを確認してください。

# yum info samba

古いがまだサポートされているCentOSおよびRHELのバージョンにも修正があります。詳細についてはRHSA-2017-1270を確認してください。

ソースからSambaをインストールした場合

注意: 以下の手順は、以前にソースからSambaをビルドしたことがあることを前提としています。実際のサーバーに展開する前に、テスト環境で十分に試すことを強くお勧めします。

さらに、開始する前にsmb.confファイルのバックアップを取ることを確認してください。

この場合、Sambaをソースからコンパイルして更新しますが、その前にすべての依存関係が事前にインストールされていることを確認する必要があります。これには数分かかる場合があることに注意してください。

DebianおよびUbuntuで:

# aptitude install acl attr autoconf bison build-essential \
    debhelper dnsutils docbook-xml docbook-xsl flex gdb krb5-user \
    libacl1-dev libaio-dev libattr1-dev libblkid-dev libbsd-dev \
    libcap-dev libcups2-dev libgnutls28-dev libjson-perl \
    libldap2-dev libncurses5-dev libpam0g-dev libparse-yapp-perl \
    libpopt-dev libreadline-dev perl perl-modules pkg-config \
    python-all-dev python-dev python-dnspython python-crypto xsltproc \
    zlib1g-dev libsystemd-dev libgpgme11-dev python-gpgme python-m2crypto

CentOS 7またはそれに類似した環境では:

# yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \
    libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \
    perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \
    python-crypto gnutls-devel libattr-devel keyutils-libs-devel \
    libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \
    pam-devel popt-devel python-devel readline-devel zlib-devel

サービスを停止してください:

# systemctl stop smbd

ソースをダウンロードして解凍します(この記事を書いている時点での最新バージョンは4.6.4です):

# wget https://www.samba.org/samba/ftp/samba-latest.tar.gz 
tar xzf samba-latest.tar.gz
cd samba-4.6.4

情報提供のみの目的で、現在のリリースの利用可能な設定オプションを確認してください。

# ./configure --help

前のビルドで使用された場合、上記のコマンドによって返されたオプションのいくつかを含めることができますし、デフォルトのものを選択することもできます。

# ./configure
make
make install

最後に、サービスを再起動します。

# systemctl restart smbd

そして、更新されたバージョンを実行していることを確認してください:

# smbstatus --version

これは4.6.4を返すべきです。

一般的な考慮事項

もし特定のディストリビューションのサポートされていないバージョンを使用していて、何らかの理由で最近のバージョンにアップグレードできない場合は、以下の提案を考慮することをお勧めします:

  • SELinuxが有効になっている場合、あなたは保護されています!
  • Samba共有がnoexecオプションでマウントされていることを確認してください。これにより、マウントされたファイルシステム上にあるバイナリの実行が防止されます。

追加する,

nt pipe support = no

あなたのファイルの[global]セクションに行き、サービスを再起動してください。この操作は「Windowsクライアントの一部の機能を無効にする可能性があります」とSambaプロジェクトの見解を考慮に入れておくと良いでしょう。

重要: 「nt pipe support=no」のオプションを設定すると、Windowsクライアントからの共有リストが無効になります。例えば、Sambaサーバー上のWindows Explorerから\10.100.10.2\と入力すると、権限が拒否されます。Windowsクライアントは手動で共有を\10.100.10.2\share_nameとして指定する必要があります。

要約

この記事では、SambaCryとして知られる脆弱性とその対策方法について説明しました。この情報を利用して、あなたが責任を持つシステムを保護できることを願っています。

この記事について質問やご意見がある場合は、以下のフォームを使ってお知らせください。

関連記事: