WordPress 插件可以安全使用嗎?
已發表: 2020-04-16多年來,研究發現,在 50 個最流行的 WordPress 插件中,超過 20% 的插件容易受到常見的 Web 攻擊。 此外,對電子商務插件的針對性研究發現,10 個最受歡迎的電子商務插件中有 7 個包含漏洞。 不幸的是,黑客通常利用這些易受攻擊的應用程序來訪問敏感信息,例如健康記錄和財務細節。 在其他情況下,漏洞允許黑客破壞網站或將其重定向到其他攻擊者控制的網站。

在最近的情況下,我們看到惡意 WordPress 插件不僅被用於維護對受感染服務器的訪問,還被用於挖掘加密貨幣。 因此,這提出了一個問題,即 WordPress 插件的安全性如何。
在本博客中,我們將深入關注 WordPress 插件作為安全漏洞的潛在來源。
基於插件的 Web 開發。
一般來說,WordPress 是世界上最流行的內容管理系統 (CMS),因為它為超過 30% 的網絡提供支持。
也就是說,WordPress 的核心優勢在於它能夠通過提供數以萬計的插件和主題來定製網站。 這些插件的類型和功能各不相同——從向網站添加聯繫表格到優化博客以進行 SEO,甚至自動將新帖子發佈到 Facebook。
第三方開發。
基於插件的開發背後的主要思想是提供附加功能來擴展系統的核心功能。 本質上,應用程序的核心通常由一組長期開發人員維護,而第三方圍繞應用程序的核心構建了許多插件
這個過程對應用程序提供者和插件提供者都是有益的,因為應用程序提供者可以更多地關注核心功能,而插件提供者不必關心插件的基礎設施,這是由應用程序的核心功能提供的。 通常,WordPress 也得到了由成千上萬的商業和開源軟件開發人員和愛好者組成的全球社區的支持。
沒有安全指南
總體而言,儘管存在一些編碼標準和建議,但在技術上沒有插件開發人員需要嚴格遵守的安全指南或標準要求。 這意味著一個插件中的漏洞可以傳播到數百萬個網站。
由於 WordPress 被廣泛使用,因此它是一個受歡迎的攻擊目標。 因此,從本質上講,利用插件漏洞的黑客可以感染數千個站點。 已經被很多博主目睹過的場景。
不幸的是,與插件相關的漏洞也往往是反復出現、可利用且難以檢測的。 因此,有必要進一步了解此類漏洞以減輕任何相關的安全威脅。 讓我們深入挖掘,好嗎?

WordPress真的安全嗎?
首先,讓我們回答這個問題。 在大多數情況下,只要遵守 WordPress 安全最佳實踐,WordPress 作為一個原始生態系統就非常安全。 平均而言,每天有大約 30,000 個新網站在網絡上被黑客入侵。 由於插件漏洞、弱密碼和過時的軟件,這些黑客往往以 WordPress 網站為目標。 因此,獲得最佳安全性需要一定程度的意向性,這意味著遵循一些基本的 WordPress 安全最佳實踐來減少您的攻擊漏洞。
閱讀更多:11 種有效的方法來擴展您的 WordPress 網站以獲得高流量
這些漏洞從何而來?
wpscan.org 最近的一份報告顯示,WordPress 有近 4,000 個已知的安全漏洞。 大多數這些漏洞是由插件引起的。 儘管其中一些與插件相關的漏洞可能會產生嚴重後果,但許多漏洞在被修復之前多年未被注意到。 在大多數情況下,它們通常可以通過對其源代碼進行小的和本地化的更改來修復。
然而,在我們超越自己之前,讓我們退後一步。
什麼是插件?
基本上,插件是用新的定制功能和行為補充應用程序的軟件擴展。 特別是,WordPress 提供了數千個插件(超過 52,000 個),這些插件已被用於構建數千個定制的 Web 應用程序。
由於基於插件的 Web 應用程序變得更加主流,更多的開發人員將注意力轉向探索他們通過組合、配置和擴展具有尖端功能的不同插件來重新構想 Web 應用程序的潛力。
插件開發的意義
話雖如此,利用插件擴展具有附加和自定義功能的 Web 系統的能力對開發人員來說既有積極的影響,也有消極的影響。 首先,積極的一面是,通常有多種自定義選項可供選擇,使開發人員能夠快速輕鬆地構建根據用戶需求定制的 Web 應用程序。 因此,促進快速原型設計和開發。
然而,不利的一面是,Web 應用程序最終可能是來自不同來源的多個插件的複雜組合。 這最終會引起與插件安全相關的擔憂。 例如,據報導,數以百萬計的基於 WordPress 的應用程序使用的插件 TimThumb 對攻擊者可以故意執行遠程代碼的攻擊開放。
事實上,根據美國國家漏洞數據庫(NVD),Web 系統中大約 15% 的漏洞可以被視為嚴重漏洞,其中近 35% 的漏洞是易於利用的漏洞。
受損插件的後果是什麼?
除了用戶丟失財務信息甚至他們的健康記錄被洩露之外,漏洞越嚴重,對軟件公司的財務影響就越大。 此外,如果開發人員在披露時未能發布可行的路徑,這種情況會進一步加劇。 因此,插件供應商通常會努力創建更安全的應用程序
現在讓我們調查一些通常在插件中發現的安全漏洞,以更廣泛地了解它們的後果和影響。
安全漏洞
正如我們所收集的,漏洞為軟件系統的潛在濫用提供了機會。 最終,由於 WordPress 允許全球數百萬開發人員創建自己的插件,因此不期望插件會出現一定程度的妥協是不現實的。
結果,意外插件與核心系統的交互可能會破壞安全性,從而導致攻擊者可能利用的漏洞。 這意味著 Web 系統的安全性取決於控制核心系統和插件漏洞。
WordPress 複雜性
由於 WordPress 的複雜性,它有時容易受到漏洞的困擾。 例如,WordPress 提供了一個直觀的基礎設施,插件可以通過修改共享的全局狀態或在系統核心執行的特定點運行功能來貢獻新功能。 因此,當插件將惡意輸入數據發送到核心組件而沒有進行適當的清理或輸入驗證時,就會出現插件漏洞。
插件漏洞示例
最終,最常見的插件漏洞是跨站點腳本、SQL 注入和跨站點請求偽造。 總體而言,最容易被攻擊者利用的漏洞類型是 SQL 注入。 但是,確實存在其他漏洞、違規來源和妥協,即:
- 數據處理錯誤
- 輸入驗證不當
- 信息公開
- 路徑遍歷
- 安全功能
- 訪問控制
- 訪問控制不當
- 授權不當
- 身份驗證不當
- 跨站請求偽造
- 無限制上傳文件
- 外部各方可訪問的文件
- 鏈接關注
- 打開重定向
- 命令注入
- 操作系統命令注入
- 跨站腳本
- SQL 注入
- 代碼注入

有關更多上下文,讓我們探討最常見的攻擊和漏洞。
- · SQL 注入: SQL 注入通常發生在攻擊者獲得對用戶的 WordPress 數據庫及其所有網站數據的訪問權限時。 SQL 注入還可用於將新數據插入數據庫,包括指向惡意或垃圾郵件網站的鏈接。
SQL 注入允許在後端服務器上執行命令,例如提取敏感信息。 在託管環境中,SQL 注入攻擊可以進一步用作針對非易受攻擊站點的攻擊的墊腳石。

- ·跨站點腳本:這種攻擊允許在客戶端運行腳本以繞過訪問控制。 它通常針對網站的所有訪問者。 在託管環境中,此類攻擊可用於竊取站點管理員的會話 cookie,從而允許攻擊者冒充管理員。
- ·跨站點請求偽造:此漏洞允許黑客代表受害者執行應用程序級交易。 在託管環境中,攻擊者可以代表管理員登錄站點並執行惡意活動,例如重定向用戶或執行管理員事務。
在 WordPress 插件中很常見,跨站點腳本漏洞以這樣的方式工作 - 攻擊者找到一種方法讓受害者使用不安全的 JavaScript 腳本加載網頁。
大多數漏洞出現在哪裡?
一項技術研究發現,大多數漏洞(約 92%)出現在插件代碼中。 此外,根據結果,Cross-site Scripting 和 Cross-site Request Forgery 等漏洞在插件代碼中更為常見,而其他漏洞在核心代碼中更為普遍。 相關地,該研究表明插件的質量各不相同,插件的評級與在其中發現的漏洞數量之間沒有相關性。

PHP 代碼編寫過程
代碼編寫過程可能是任何漏洞或妥協的根源。 一般來說,PHP 以支持在服務器端執行任意代碼而無需直接調用主機操作系統而聞名。 也就是說,只要開發人員在代碼編寫過程中疏忽大意,就會增加將跨站點腳本漏洞引入插件代碼的可能性。
另一方面,關於 SQL 注入是一個常見的漏洞,因為它很容易被檢測和利用。 具有諷刺意味的是,即使是用戶群很小的網站也可能會受到 SQL 注入攻擊。
一些漏洞暴露源於開發人員使用不安全的資源。 同樣,正確的輸入驗證仍然是插件開發人員面臨的主要挑戰,因為許多最近開發的插件都是由不那麼熟練的開發人員創建的
由 WordPress 插件引起的漏洞是否嚴重?
所有的情況都被考慮到了; 漏洞可能以多種方式對 Web 系統產生負面影響。 例如,成功利用漏洞可能會導致完全喪失機密性,但不會喪失可用性。
如前所述,SQL 注入似乎是最危險的漏洞類型,儘管它僅部分影響系統的完整性、可用性和機密性。 但是,此類漏洞有可能允許攻擊者不受限制地訪問文件或信息。
因此,在不經意間,大多數漏洞都可能導致數據洩露,而少數漏洞不一定會使 Web 應用程序面臨嚴重的安全風險。 要么,重要的是要避免在這種賠率下冒險。
WordPress 插件代碼中的漏洞可以存活多長時間?
通常,代碼中的漏洞傾向於通過不同的狀態轉換,從引入到披露,直到修復安全威脅的補丁發布。
通常,當發現者向更廣泛的受眾披露安全威脅的詳細信息時,漏洞就會被披露。 最終,當開發人員發布修復底層安全威脅的補丁時,該漏洞得到修復。 但是,有時 Web 應用程序中的漏洞在被識別並修復之前多年未被注意到。
可能的緩解措施和檢測方法
正如大多數人所說,預防勝於治療。 因此,如果插件開發人員能夠完全理解、檢測和消除跨站點腳本、SQL 注入和跨站點請求偽造,我們的插件可能會減少 75% 的漏洞。
但是,值得注意的是,這三個漏洞並不是唯一可以被攻擊者利用的漏洞。 而是最常見的漏洞。
因此,雖然這些提議的緩解策略並不能保證給定插件完全安全,但是它們為漏洞預防設定了良好的原則。 例如:
- 了解數據的使用方式以及 WordPress 核心部分所期望的編碼。 在這種情況下,開發人員應始終假定所有輸入都是惡意的,並拒絕任何不嚴格符合所需編碼模式的輸入,或將其轉換為有效輸入。
- 為了保護數據庫免受 SQL 注入,開發人員應該通過將代碼與數據操作分離來使用參數化 SQL 語句。 此外,請始終檢查標頭以驗證請求是否來自同一來源。 此外,避免將數據暴露給未經身份驗證的攻擊者也可能很有用。
- 一個好的做法是避免對觸發狀態更改的任何請求使用 GET 方法。
漏洞檢測
不幸的是,沒有一致的方法可以 100% 的準確率和覆蓋率來檢測最常見的代碼弱點。 不幸的是,即使是使用數據流分析來檢測跨站點腳本的現代技術,有時也會出現誤報。
相比之下,代碼審查等手動分析方法往往比全自動方法更有效,特別是對於與設計相關的漏洞。 例如,跨站點請求偽造尤其難以使用自動化方法可靠地檢測到,因為每個應用程序都有自己的安全策略和方式來指示哪些請求需要對用戶打算發出請求有很強的信心。
但是,另一方面,手動分析對於查找 SQL 注入可能很有用,儘管它可能無法在有限的時間限制內實現所需的代碼覆蓋率。 對於所有輸入都必須考慮的弱點,這可能變得困難,因為攻擊面可能過大。
因此,一些組織強調平衡方法的重要性,包括手動審查和自動分析,涵蓋 Web 系統開發過程的所有階段。
保護您的 WordPress 應用程序的最佳實踐
- 僅從信譽良好的來源(例如 WordPress.org)下載插件:由於任何人都可以開發 WordPress 插件,因此眾所周知,黑客利用此漏洞隱藏自己的惡意插件。 信譽良好的市場可能無法完全保證訪問無害插件,但建議作為一種緩解做法。
- 始終確保您的所有插件都是最新的: WordPress 用戶通常會收到他們經常忽略的通知電子郵件。 請務必將您的插件設置為自動更新,或者至少自己手動升級它們。
- 通過掃描插件的安全問題來驗證插件的安全狀態:大多數插件都是開源的,這意味著它們的源代碼是可用的。 因此,請務必使用靜態源代碼分析工具,該工具將為您提供插件的“健康賬單”。 一些高級掃描儀甚至可以為您提供最佳和最快的修復建議。
- 刪除所有未使用的插件:不幸的是,舊的、未使用的插件的代碼通常保留在服務器上——即使插件處於非活動狀態。 因此,作為 WordPress 網站維護的一部分,請務必始終刪除未使用的插件
給插件開發者的建議
- 在插件開發過程中始終包含安全性:漏洞會導致以後修復的成本更高,因此,始終將安全性集成到插件開發中,作為安全軟件開發生命週期 (SDLC) 流程的一部分。
- 通過代碼掃描器運行插件,以確保它符合最新的安全標準。 確保在開發期間和發布前進行全面的源代碼分析測試。
開發安全插件
如前所述,插件開發人員需要努力編寫安全代碼。 不幸的是,許多開發人員仍然不知道如何操作,因為他們的技能不高。 特別是,鑑於上述最常見漏洞的性質,很明顯許多開發人員不了解常見攻擊、他們使用的語言和平台提供的安全功能,以及如何使用適用的實踐來緩解安全問題。
因此,我們在 Creole Studios 的建議是,也許應該為插件開發人員量身定制新的方法。 此類方法應促進需求和設計階段的安全性,因為開發人員是軟件安全中最重要的實體。
最後的想法
總而言之,WordPress 插件可能會受到攻擊,最常見的漏洞是跨站點腳本、SQL 注入和跨站點請求偽造。
不幸的是,研究似乎表明這些漏洞發生的頻率似乎並沒有隨著時間的推移而下降。 可以肯定地認為,造成這種情況的主要原因是大多數 WordPress 插件開發人員在安全編程方面仍然不夠熟練。
話雖如此,第一道防線應該是開發團隊! 我們相信,一旦實施了最佳安全實踐,用戶就可以在晚上睡得更好,因為他們知道自己受到網絡犯罪分子的保護。
有關我們 WordPress 安全實踐的更多信息,請務必聯繫我們進行諮詢。