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 安全实践的更多信息,请务必联系我们进行咨询。