Samba の重大なセキュリティー脆弱性 (2016 年 4 月 12 日発表)
Samba は SMB (Server Message Block) または CIFS (Common Internet File System) プロトコルのオープンソースの実装であり、PC 互換機がファイルやプリンターおよびその他の情報を共有できるようにします。いくつかの脆弱性が発見されていますが、それらは Samba の現在サポートされているすべてのバージョンで修正されています。Badlock の問題 (CVE-2016-2118) の詳細は、ナレッジベースの記事 2253041 を参照してください。
影響を受けるバージョン:
CVE | RHEL 5 samba | RHEL 5 samba3x | RHEL 6 samba | RHEL 6 samba4 | RHEL 7 | Gluster Storage | 影響を受ける Samba ロール |
---|---|---|---|---|---|---|---|
CVE-2015-5370 | N | Y | Y | Y | Y | Y | Samba で使用されるすべてのロール |
CVE-2016-2110 | Y | Y | Y | Y | Y | Y | Samba で使用されるすべてのロール |
CVE-2016-2111 | Y | Y | Y | Y | Y | Y | Classic primary DC、backup DC、または Active Directory DC |
CVE-2016-2112 | Y | Y | Y | Y | Y | Y | Samba で使用されるすべてのロール |
CVE-2016-2113 | N | N | N | Y | Y | Y | Samba で使用されるすべてのロール |
CVE-2016-2114 | N | N | N | Y | Y | Y | Samba で使用されるすべてのロール |
CVE-2016-2115 | Y | Y | Y | Y | Y | Y | Samba で使用されるすべてのロール |
CVE-2016-2118 | Y | Y | Y | Y | Y | Y | Samba で使用されるすべてのロール。Active Directory DC の場合の影響度は重大 |
CVE-2015-5370: DCE/RPC コードの複数の脆弱性
複数の脆弱性が Samba の DCE/RPC プロトコル実装で確認されています。リモートの認証された攻撃者は、これらの脆弱性を利用して Samba サーバーに対する DoS 攻撃 (Denaial of Service)(CPU の高い負荷またはクラッシュ) を仕掛けたり、Samba を実行するユーザーの権限 (root) を使用して任意のコードを実行したりできる可能性があります。また、この脆弱性を利用する中間者攻撃により、セキュアな DCE/RPC 接続のダウングレードが行われ、Active Directory (AD) オブジェクトがコントロールされたり、Samba Active Directory ドメインコントローラー (DC) のセキュリティーが侵害されたりする可能性があります。
注記: Red Hat Enterprise Linux に同梱される Samba パッケージは AD DC として Samba を実行することをサポートしませんが、この脆弱性は Samba が実装するすべてのロールに適用されます。
CVE-2016-2118 (Badlock): SAMR および LSA の中間者攻撃
この脆弱性についての詳細は、Samba のセキュリティー脆弱性「Badlock」- CVE-2016-2118 を参照してください。
CVE-2016-2110: NTLMSSP による中間者攻撃
複数の脆弱性が Samba の NTLMSSP 認証の実装で確認されています。中間者攻撃を仕掛ける認証されていない攻撃者は、この脆弱性を利用して暗号および接続のインテグリティーフラグをクリアし、データをプレーンテキストで転送できる可能性があります。さらに攻撃者は、接続に暗号化が明示的に要求されている場合でも、クライアントまたはサーバーにプレーンテキストでのデータ送信を強制できる可能性があります。
LDAP (および NTLMSSP 認証) は、各種の Samba 管理プロジェクトツール (例: 「net」、「samba-tool」、「ldbsearch」、または「ldbedit」) によってクライアントとして使用されます。
これらの脆弱性は Samba で使用されるすべてのロールに影響を与えるもので、CVE-2016-2112 および CVE-2016-2113 に関連しています。
CVE-2016-2111: NETLOGON のなりすましの脆弱性
ドメインコントローラーとして設定された Samba が偽のコンピューター名を使用するマシンとのセキュアな通信チャネルを確立する可能性があることが確認されました。ネットワークトラフィックを監視できるリモート攻撃者は、この脆弱性を利用し、なりすましマシンについてのセッション関連の情報を取得できる可能性があります。
この脆弱性は、classic primary DC、backup DC、または Active Directory DC として実行されている Samba にのみ影響を与えます。
この脆弱性は Microsoft Windows Server の CVE-2015-0005 として参照されています。
この脆弱性に対するセキュリティーアドバイザリーのパッチにより、新規の smb.conf
オプションが導入されています。
raw NTLMv2 auth (G)
このパラメーターは、smbd(8) が拡張セキュリティーなし (SPNEGO なし)の
SMB1 クライアントが NTLMv2 認証を使用することを許可するかどうかを決定します。
このオプション、lanman auth、および ntlm auth がすべて無効にされる場合、
SPNEGO サポートのあるクライアントのみが許可されます。つまり、
NTLMv2 のみが NTLMSSP 内でサポートされます。
デフォルト: raw NTLMv2 auth = no
CVE-2016-2112: LDAP クライアントおよびサーバーは整合性保護を実施しない
Samba の LDAP 実装では LDAP 接続の整合性保護を実施しないことが確認されました。この脆弱性を利用する中間者攻撃により、整合性保護を使用しないように LDAP 接続をダウングレードし、接続をハイジャックできる可能性があります。
この脆弱性は、Samba で使用されるすべてのロールに影響を与えます。
この脆弱性に対するセキュリティーアドバイザリーのパッチにより、新規の smb.conf
オプションが導入されています。
ldap server require strong auth (G)
"ldap server require strong auth" オプションは、
ldap サーバーが ldap トラフィックを署名付きか、署名+暗号化 (シールされている) かを定義します。
設定可能な値は、no、
allow_sasl_over_tls および yes です。
no の値はすべてのトランスポートで単純な sasl バインドを許可します。
allow_sasl_over_tls の値は、TLS 暗号化接続で単純な sasl バインド (署名またはシールなし) を許可します。
暗号化されていない接続は、署名またはシール付きの sasl バインドのみを許可します。
yes の値は、TLS 暗号化接続の単純なバインドのみを許可します。
暗号化されていない接続は、署名またはシール付きの sasl バインドのみを許可します。
デフォルト: ldap server require strong auth = yes
注記: LDAP サーバーには強い認証を実施するオプションがまだありません。セキュリティーパッチにより ldap server require strong auth
という新なオプションが導入されました。このオプションで設定可能な値は no
、allow_sasl_over_tls
および yes
です。
デフォルト動作では no
に設定されるため、すべてのクライアントが LDAP_STRONG_AUTH_REQUIRED エラーを処理するように調整されるまでこのオプションを明示的に変更する必要がある場合があります。Windows クライアントおよび Samba メンバーサーバーは整合性保護をすでに使用しています。
CVE-2016-2113: TLS/SSL 証明書が検証されないことによる中間者攻撃の可能性
Samba は特定の接続では SSL/TLS 証明書を検証しないことが確認されました。中間者攻撃によりこの脆弱性が利用されると、特別に細工された SSL/TLS 証明書を使用して Samba サーバーのなりすましが行われる可能性があります。
この脆弱性は、Samba で使用されるすべてのロールに影響を与えます。
この脆弱性に対するセキュリティーアドバイザリーのパッチにより、新規の smb.conf
オプションが導入されています。
tls verify peer (G)
これは、クライアントがピアの証明書および名前を検証するかどうか、および検証する場合はどの程度厳密に行うかを制御します。
設定可能な値 (厳密のレベルが上がる順): no_check、
ca_only、ca_and_name_if_available、ca_and_name および as_strict_as_possible
no_check に設定されると、証明書は全く検証されないため、
単純な中間者攻撃が可能になります。
ca_only に設定されると、証明書が「tls ca file」オプションで指定される CA から署名されていることが検証されます。
「tls ca file」を有効なファイルに設定する必要があります。
証明書の有効期間も検証されます。「tls crl file」
オプションが設定されると、証明書は CA CRL に対しても検証されます。
ca_and_name_if_available に設定されると、ca_only からのすべてのチェックが実行されます。
さらに、ピアホスト名が IP アドレス文字列としてではなく、アプリケーション層で指定される場合、
ピアホスト名は証明書名に対して検証されます。
ca_and_name に設定される場合、ca_and_name_if_available からのすべてのチェックが実行されます。
さらに、ピアホスト名を指定する必要があります。IP
アドレスも証明書名に対してチェックされます。
as_strict_as_possible に設定される場合、ca_and_name からのすべてのチェックが実行されます。
さらに、「tls crl file」を設定する必要があります。Samba の今後のバージョンでは
追加のチェックを実装する可能性があります。
デフォルト: tls verify peer = as_strict_as_possible
CVE-2016-2114: "server signing = mandatory" が実行されない
Samba は SMB1 プロトコルを使用したクライアントの Server Message Block (SMB) の署名を実行しないことが確認されました。中間者攻撃でこの脆弱性が利用されると、クライアントとサーバー間のトラフィックが変更される可能性があります。
この脆弱性は以下のサーバーのロールに影響を与えます。standalone サーバー、member サーバー、classic primary DC、backup DC、および Active Directory DC。
軽減策:
server min protocol = SMB2
と共に smb.conf
ファイルの [global]
セクションで server signing = mandatory
設定オプションを明示的に指定することにより、署名保護なしの接続が回避されます。ただし、これにより、SMB2 (またはそれ以上) のサポートのない古いクライアントが接続できなくなる可能性があります。
CVE-2016-2115: IPC トラフィックの SMB クライアント接続の整合性が保護されない
Samba はデフォルトで IPC トラフィックの整合性保護を有効にしないことが確認されました。中間者攻撃でこの脆弱性が利用されると、Samba サーバーとクライアント間で送信されるデータが表示され、変更される可能性があります。
この脆弱性のセキュリティーアドバイザリーのパッチにより、複数の新規 smb.conf
オプションが導入されています。
client ipc signing (G)
これは、クライアントが DCE/RPC トランスポートとしての IPC$ 接続の SMB 署名を使用できるか、またはその使用が要求されるかどうかを制御します。
設定可能な値は、
auto、mandatory および disabled です。
mandatory または default に設定されると、SMB 署名が必要になります。
auto に設定されると、SMB 署名は提供されますが、実行されません。
disabled に設定されると、SMB 署名は提供されません。
winbindd から Active Directory ドメインコントローラーへの接続では
署名が常に実行されます。
デフォルト: client ipc signing = default
client ipc max protocol (G)
パラメーターの値 (文字列) は、DCE/RPC トランスポートとしての IPC$ 接続で
サポートされる最高レベルのプロトコルです。
通常 SMB プロトコルの自動ネゴシエーションフェーズが
適切なプロトコルの選択を行うため、このオプションを設定する必要はありません。
値 default は、サポートされている最新のプロトコルを指します (現在は SMB3_11)。
使用できるプロトコルの詳細一覧については、client max protocol を参照してください。
値 CORE、COREPLUS、LANMAN1、LANMAN2 は NT1 にサイレントにアップグレードされます。
デフォルト: client ipc max protocol = default
例: client ipc max protocol = SMB2_10
client ipc min protocol (G)
この設定は、DCE/RPC トランスポートとしての IPC$ 接続での使用が試行される
最小プロトコルバージョンを制御します。
通常 SMB プロトコルの自動ネゴシエーションフェーズが適切なプロトコルの選択を行うため、このオプションを設定する必要はありません。
適切なプロトコルの選択を行うため、このオプションを設定する必要はありません。
値 default は NT1 のより大きな値と
"client min protocol" の有効な値を参照します。
使用できるプロトコルの詳細一覧については、client max protocol を参照してください。
値 CORE、COREPLUS、LANMAN1、LANMAN2 は NT1 にサイレントにアップグレードされます。
デフォルト: client ipc min protocol = default
例: client ipc min protocol = SMB3_11
軽減策:
smb.conf
ファイルの[global]
セクションで client signing = mandatory
設定オプションを明示的に指定します。
この脆弱性は、Samba で使用されるすべてのロールに影響を与えます。
Comments