當 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 不免費而是需要購買年訂閱。