Zerologon: Samba Netlogon の特権昇格の脆弱性 (CVE-2020-1472)

更新 -

Red Hat は、Microsoft Netlogon サービスの脆弱性 (CVE-2020-1472) に対応しています。Netlogon サービスは、Windows Client Authentication Architecture で使用される認証メカニズムであり、ログオン要求を検証し、ドメインコントローラーを登録、認証、および検索します。Netlogon サービスは、ドメインコントローラー機能の一部として、Microsoft Netlogon Remote Protocol を実装します。

Netlogon プロトコルの実装には、認証バイパスを可能にする欠陥が含まれています。これは、Microsoft によって CVE-2020-1472 として報告され、軽減されました。この欠陥はプロトコルレベルの欠陥であり、Samba はプロトコルを実装しているため、Samba も脆弱性の影響を受けます。

背景情報

Microsoft Windows Netlogon Remote Protocol (MS-NRPC) は、既知の静的なゼロ値初期化ベクトル (IV) を AES-CFB8 モードで再利用します。これにより、認証されていない攻撃者は、ドメインコントローラーを含むドメインに参加しているコンピューターになりすまし、ドメイン管理者権限を潜在的に取得することができます。

Windows 環境では、ドメインコントローラーのみがクライアントからアクセス可能な Netlogon サービスを実行します。これは、Samba がドメインコントローラーとして使用される場合に、Samba に適用されます。Samba ドメインコントローラーのロールは、Active Directory モードと classic/NT4-style モードの両方に実装されます。Samba パッケージの RHEL バージョンは、classic/NT4-style ドメインコントローラーのみを提供します。

ドメインコントローラーへのネットワークアクセスを持つ認証されていない攻撃者は、ドメインコントローラーを含むドメインに参加しているコンピューターになりすますことができます。この攻撃はサービス拒否攻撃となり、これにより攻撃者がドメイン管理者権限を取得できる可能性があります。
CVE-2020-1472 に記載されている攻撃から保護するには、Netlogon サービスへの認証済み接続を使用する必要があります。このような要件は、ドメインメンバーとドメインコントローラー間の安全なチャンネルの確立として知られ、一般に「schannel」と呼ばれます。schannel のセットアップにより、Netlogon サービスへの認証されていないアクセスが阻止され、CVE-2020-1472 で説明されている攻撃ベクトルが軽減されます。

影響を受けるバージョン

Samba スイートは、ドメインメンバーとドメインコントローラー間の安全なチャンネルの確立をサポートします。ただし、Samba 4.8 より前のサーバー schannel のデフォルトの動作は、クライアントが安全なチャンネルをサポートしている場合にのみ、自動的に安全なチャンネルをネゴシエートすることでした。バージョン4.8 以降における Samba のデフォルトの動作は、すべてのクライアントに対して安全なチャンネルを要求することです。これは、CVE-2020-1472 攻撃の既知のエクスプロイトに対して十分な修正となります。このデフォルトは、smb.conf に「server schannel = yes」があるのと同じことになります。

安全なチャンネルを要求すると、Active Directory より前 (NT4 ドメイン) からの一部の古いアプリケーションが破損する可能性があります。このため、Microsoft の CVE-2020-1472 の軽減策では、Netlogon サービスへの認証されていないアクセスがすぐに無効になることはありません。Red Hat は、Netlogon サービスに認証されていないチャンネルの使用を必要とする特定のアプリケーションを認識していません。すべての Red Hat Enterprise Linux (RHEL) バージョンのすべての Samba コンポーネントは、確立された schannel での操作をサポートしており、Microsoft からの今後の更新が、認証されていないチャンネルのサポートを完全に無効化しても引き続き機能します。

Red Hat Enterprise Linux 6

Red Hat Enterprise Linux 6 に同梱されている Samba および Samba4 パッケージのデフォルト設定は、Netlogon サービスへのすべてのクライアント接続に対して安全なチャンネルの確立を強制しないため、脆弱となります。この脆弱性は、「軽減策」のセクションに記載されている手順に従って軽減できます。

Red Hat Enterprise Linux 7 および 8

Red Hat Gluster Storage 3、および Red Hat Enterprise Linux 7 と 8 に同梱されている Samba パッケージのデフォルト設定は、デフォルトでは脆弱ではありません。これらは、Netlogon サービスへのすべてのクライアント接続に対して安全なチャンネルの確立を強制します。Samba 設定の smb.conf が、「server schannel = no」または「server schannel = auto」と明示的に示すように変更された場合、そのようなセットアップは脆弱になります。

ファイルサーバーおよびドメインメンバー

(Red Hat Enterprise Linux に同梱されているサポート対象バージョンの Samba を使用する) ファイルサーバーとドメインメンバーは、Netlogon サービスを実行せず、Samba 4.8 以降および Windows DC 2021 などの安全な DC に対する継続的な操作のために「client schannel = no」を設定していないことを確認することのみが必要です。

軽減策

Red Hat Enterprise Linux 6 に同梱されている Samba のユーザーは、Samba ドメインコントローラーサーバーまたはスタンドアロンサーバーとして使用している場合は、

server schannel = yes

上記を smb.conf の [global] セクションに設定し、すべてのドメインコントローラーで Samba を再起動する必要があります。

Red Hat Enterprise Linux 7 と 8、および Gluster Storage 3 に同梱されている Samba のユーザーの場合、軽減策は必要ありませんが、smb.conf の [global] セクションが以下のいずれかであることを確認する必要があります。

  • 「server schannel = yes」行がある。または、
  • 「server schannel」行がない。

Samba 設定がドメインコントローラーで、またはスタンドアロンモードで実行されているのか、そしてどの「サーバー schannel」設定が使用されているのかを確認するためには、「testparm」ユーティリティーを使用する必要があります。

「testparm」ユーティリティーは、Samba 設定の格納方法に関係なく Samba 設定を解析し、デフォルト値が適用された設定の結合ビューを提供します。

# testparm -v -s|grep schannel
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_DOMAIN_PDC

    client schannel = Yes
    server schannel = Yes

サーバーロールが ROLE_DOMAIN_PDC または ROLE_DOMAIN_BDC のいずれかである場合は、「server schannel」パラメーターが「yes」に設定されていることを確認して、安全なチャンネルが常に確立されていることを確認します。

解決策

4.13/4.12/4.11 リリースのアップストリーム Samba で行われたハードニングの変更では、「server schannel = yes」が定義されている間に問題を悪用しようとするいくつかのツールで、フォールスポジティブのケースのみを終了します。

したがって、この欠陥の唯一の解決策は、上記の軽減策のセクションで説明した軽減策を適用することになります。上記のハードニングの修正は、現在サポートされている RHEL リリースにバックポートされません。アップストリームからのリベースに基づく今後のリリースには、それらが含まれる可能性があります。

参考資料