LinuxシステムでSambaCryの脆弱性(CVE-2017-7494)を修正する方法


Sambaは、* nixシステム上のWindowsクライアントに共有ファイルおよび印刷サービスを提供するための標準として長い間使用されてきました。ホームユーザー、中堅企業、大企業などで使用されており、さまざまなオペレーティングシステムが共存する環境で頼りになるソリューションとして際立っています。

広く使用されているツールで悲しいことに発生するため、ほとんどのSambaインストールは、既知の脆弱性を悪用する可能性のある攻撃のリスクにさらされています。

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

現在、任意の環境でSambaを使用している場合、または使用している人を知っている場合は、読み進めてください。

脆弱性

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

この問題は、Samba WebサイトでCVE-2017-7494として説明されており、Sambaバージョン3.5(2010年3月初旬にリリース)以降に影響を与えることが知られています。非公式には、WannaCryとの類似性からSambaCryと名付けられました。どちらもSMBプロトコルを対象としており、潜在的にワーム可能であるため、システム間で拡散する可能性があります。

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

Sambaの更新

前述のように、以前のインストール方法に応じて、2つのアプローチに従う必要があります。

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

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

ソースリスト(/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

まず、利用可能な新しいパッケージを確認し、次のように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

EL 7でパッチが適用されたSambaのバージョンは、samba-4.4.4-14.el7_3です。それをインストールするには、

# yum makecache fast
# yum update samba

以前と同様に、パッチが適用されたSambaバージョンがあることを確認してください。

# yum info samba

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

注:以下の手順は、以前にソースからSambaをビルドしたことを前提としています。本番サーバーにデプロイする前に、テスト環境で広範囲に試してみることを強くお勧めします。

さらに、開始する前に、必ずsmb.confファイルをバックアップしてください。

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

# 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
# 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を返すはずです。

一般的な考慮事項

特定のディストリビューションのサポートされていないバージョンを実行していて、何らかの理由でより新しいバージョンにアップグレードできない場合は、次の提案を考慮に入れることをお勧めします。

  • If SELinux is enabled, you are protected!
  • Make sure Samba shares are mounted with the noexec option. This will prevent the execution of binaries residing on the mounted filesystem.

追加、

nt pipe support = no

smb.confファイルの[global]セクションに移動し、サービスを再起動します。 Sambaプロジェクトのように、これは「Windowsクライアントの一部の機能を無効にする可能性がある」ことを覚えておくとよいでしょう。

重要:オプション「ntpipe support u003d no」は、Windowsクライアントからの共有リストを無効にすることに注意してください。例:SambaサーバーでWindowsエクスプローラーから.100.10.2 \と入力すると、アクセス許可が拒否されます。 Windowsクライアントは、共有にアクセスするために、共有を.100.10.2 \ share_nameとして手動で指定する必要があります。

この記事では、SambaCryと呼ばれる脆弱性と、それを軽減する方法について説明しました。この情報を使用して、担当するシステムを保護できることを願っています。

この記事について質問やコメントがある場合は、以下のフォームを使用してお知らせください。