連載「OSS脆弱性ウォッチ」では、さまざまなオープンソースソフトウェアの脆弱性に関する情報を取り上げ、解説していく。今回は2018年3月13日に公開されたSambaの脆弱性情報(CVE-2018-1050、CVE-2018-1057)のうち、特にCVE-2018-1057について解説する。
「OSSセキュリティ技術の会」の面和毅です。本連載「OSS脆弱性ウォッチ」では、さまざまなオープンソースソフトウェア(OSS)の脆弱(ぜいじゃく)性に関する情報を取り上げ、解説しています。
今回は2018年3月13日に公開されたSambaの脆弱性情報(CVE-2018-1050、CVE-2018-1057)のうち、特にCVE-2018-1057について解説します。今回はPoCを行ったり攻撃コードを作ったりするのではなく、情報の整理を提供しています。そのため、今回の記事を元にして攻撃のシミュレーションを行うなどを期待している方には、あまり参考にならない情報かもしれません。
脆弱性の概要は、「Samba - Security Announcement Archive」(英語)に詳しく載っているので省略します。日本語では、「Sambaに複数の脆弱性(CVE-2018-1050、CVE-2018-1057)」にも情報が載っています。
手短に言ってしまうと、CVE-2018-1057は『Active Directory(AD)ドメインコントローラーとして動作しているSamba 4.xで、認証されているユーザーにより、(システム管理者を含む)任意のユーザーのパスワードを変更される可能性がある脆弱性』です。
本稿では、「Samba - Security Announcement Archive」(英語)の内容に従って説明しましょう。実際に検証環境をセットアップします。
検証環境として、以下のものを使用します。
CentOS 7.4を準備し、OSをインストール後、固定IPにします。/etc/resolv.confのDNSを自分自身に設定する。テストのためにfirewalldは止めておきます(SELinuxは有効のまま)。
SambaをADのドメインコントローラーとしてセットアップします。ダウンロードしたsambaをコンパイルして使用します。基本的な流れは「Samba AD DC HOWTO」(日本語)を参考にしました。
ドメインを指定する際の「大文字」「小文字」に気を付けてください(筆者の場合は、kinitの際に間違えてエラーが出ました)。インストール後に表示される情報を参考にしましょう。
インストールディレクトリは/usr/local/samba以下です(デフォルト)。今回の設定は、図1、2のようになります。
Realm [JSOSUG.JP]: Domain [JSOSUG]: Server Role (dc, member, standalone) [dc]: DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: DNS forwarder IP address (write 'none' to disable forwarding) [172.16.148.142]: Administrator password: Retype password: --省略-- Pre-loading the Samba 4 and AD schema Adding DomainDN: DC=jsosug,DC=jp Creating CN=MicrosoftDNS,CN=System,DC=jsosug,DC=jp --省略-- Once the above files are installed, your Samba AD server will be ready to use Server Role: active directory domain controller Hostname: centos74 NetBIOS Domain: JSOSUG DNS Domain: jsosug.jp DOMAIN SID: S-1-5-21-2365253480-2418751724-2227126598
[root@centos74 ~]# klist Ticket cache: FILE:/tmp/krb5cc_0 Default principal: administrator@JSOSUG.JP Valid starting Expires Service principal 2018-03-20T09:02:15 2018-03-20T19:02:15 krbtgt/JSOSUG.JP@JSOSUG.JP renew until 2018-03-21T09:02:11 [root@centos74 ~]# /usr/local/samba/bin/samba-tool domain level show Domain and forest function level for domain 'DC=jsosug,DC=jp' Forest function level: (Windows) 2008 R2 Domain function level: (Windows) 2008 R2 Lowest function level of a DC: (Windows) 2008 R2
テスト用のユーザーを幾つか作ります。/usr/local/samba/bin/samba-toolを用いてユーザーを作成します(図3)。
[root@centos74 ~]# /usr/local/samba/bin/samba-tool user create test1
スタートアップスクリプト「samba-ad-dc」を作成してsystemd経由で起動・停止・再起動ができるようにします(図4)。
[Unit] Description=Samba Active Directory Domain Controller After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/samba/sbin/samba -D PIDFile=/usr/local/samba/var/run/samba.pid ExecReload=/bin/kill -HUP $MAINPID [Install] WantedBy=multi-user.target
Copyright © ITmedia, Inc. All Rights Reserved.