Apache または nginx が静的ファイルを提供する際はシンボリックリンクをフォローします。リンク先のファイルが別のシステムユーザに所有されている場合も同様です(たとえば、別の契約に対応するものなど)。その結果、ある契約へのアクセス権を持つ攻撃者が別の契約からファイルを読み込むことができてしまいます。これには、WordPress やその他の CMS のパスワードや設定が含まれるファイルも含まれます。

脆弱性を緩和する

ファイルシステムのパーミッション

If you are using WP Toolkit, the easiest way to mitigate the vulnerability for your WordPress instances is to use the Toolkit:

  1. Go to WP Toolkit.
  2. WordPress インスタンスをすべて選択して[セキュリティをチェック]をクリックします。
  3. [ファイルとディレクトリのパーミッション]が OK とマークされていることを確認します。
  4. OK でなければ、[セキュリティ保護]をクリックします。

If you are not using WP Toolkit or if you need to secure some CMS other than WordPress, you need to manually correct the permissions on all files you want to protect by denying all permissions to the “Other” group by running the following command:

chmod o-rwx <file_name>

注釈: この方法で、すべてのウェブアプリケーションや CMS に適合する保護対象ファイルのリストはありません。あるウェブアプリケーションを保護するために実際にパーミッションを変更すべきファイルは、アプリケーションによって異なります。

Apache の構成

この方法で脆弱性を緩和するのは、ウェブサーバとして Apache を使用する契約に最適です([ホスティングと DNS] > [Apache と nginx の設定] で「プロキシモード」がオンになっていれば、この契約は Apache を使用しています)。

注釈: In Plesk Obsidian 18.0.30 and later, this solution is applied by default. On earlier Plesk versions, follow the instructions below to mitigate the vulnerability.

脆弱性を緩和するには、以下の手順に従います。

  1. [サービスプラン] > 特定のプラン > [ウェブサーバ]タブ(または、特定の契約 > [ウェブサイトとドメイン] > [ホスティングと DNS] > [Apache と nginx の設定])に移動します。
  2. [シンボリックリンクのフォローを制限する]チェックボックスをオンにします。

サービスプランに対してこの操作を行うと、このサービスプランをベースにしたすべての契約の脆弱性が緩和されます(つまり、攻撃者がある契約に対するアクセス権を得たとしても、他の契約に対して攻撃を実行することはできません)。契約に対してこの操作を行うと、この契約の脆弱性のみが緩和されます。

注釈: 自らのファイルに対してシンボリックリンクを使用するウェブサイトは、 .htaccess ファイルで “FollowSymLinks” オプションを使用していなければ動作を続けます。これは、デフォルトで “SymLinksIfOwnerMatch” オプションが有効になっているためです。このようなサイトが .htaccess ファイルで “FollowSymLinks” オプションを使用している場合、このサイトは停止します。

ご用心: Applying this solution will still leave you vulnerable to a “time-of-check to time-of-use” race condition related to the Apache’s “SymLinksIfOwnerMatch” option. To mitigate that vulnerability as well, you can apply this patch to Apache (the patch has not been tested by Plesk, apply at your own risk) or to use one of the kernel based symlink protection options described further in this article.

nginx の構成

この方法で脆弱性を緩和するのは、nginx を使用して静的ファイルを直接提供している契約に最適です([ホスティングと DNS] > [Apache と nginx の設定] で「プロキシモード」がオフになっているか、「プロキシモード」がオンで[静的ファイルを nginx で直接処理]がオンになっていれば、この契約は nginx を使用しています)。

脆弱性を緩和するには、以下の手順に従います。

  1. [サービスプラン] > 特定のプラン > [ウェブサーバ](または、特定の契約 > [ウェブサイトとドメイン] > [ホスティングと DNS] > [Apache と nginx の設定])に移動します。
  2. [シンボリックリンクのフォローを制限する]チェックボックスをオンにします。

サービスプランに対してこの操作を行うと、このサービスプランをベースにしたすべての契約の脆弱性が緩和されます(つまり、攻撃者がある契約に対するアクセス権を得たとしても、他の契約に対して攻撃を実行することはできません)。契約に対してこの操作を行うと、この契約の脆弱性のみが緩和されます。

注釈: This option is not applicable to computers running Linux kernel version 2.6.39 or earlier. To mitigate the vulnerability on such machines, we recommend that you either upgrade the operating system to the latest stable version or use one of the kernel based symlink protection mechanisms listed below.

CloudLinux の場合、mod_hostinglimits の SecureLinks

On computers running CloudLinux, you can mitigate the vulnerability by enabling the symlink owner match protection mechanism available as part of the HostingLimits module for Apache. Refer to the CloudLinux documentation for more information.

KernelCare Symlink Protection patchset for CentOS 7 (available for free)

On computers running CentOS 7, you can mitigate the vulnerability by installing the free Symlink Protection Patchset available from CloudLinux. Refer to the CloudLinux documentation for more information.

grsecurity(Linux カーネル用のセキュリティ強化パットセット。有料サブスクリプションが必要です)

脆弱性の緩和に上記のいずれも使用できない状況では、grsecurity Linux カーネル用のセキュリティ強化パッチセットをインストールして GRKERNSEC_SYMLINKOWN を構成してください。grsecurity は無料では使用できず、1 年間のサブスクリプションを購入する必要があります。