当 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. 核查“文件和目录的权限” 是否标记为“确定”。
  4. 若没有,请点击 保护安全

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>

注解: 没有适合任何 web 应用程序或 CMS 一体适用的安全保护文件列表。必须更改其权限以保护 Web 应用程序安全的确切文件取决于所涉及的应用程序。

Apache 配置

此缓解漏洞的方式适用于将 Apache 用作其 web 服务器的订阅(若在 主机与 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. 转到 服务方案 > 您的方案 > “Web 服务器”选项卡(或您的订阅 > 网站与域名 > 主机与 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. 转到 服务方案 > 您的方案 > “Web 服务器”(或您的订阅 > 网站与域名 > 主机与 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.

mod_hostinglimits for CloudLinux 中的 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 不免费而是需要购买年订阅。