Greg Knaddison 曾为大型咨询公司、精品软件公司、初创公司、专业服务公司以及前 Drupal 安全团队负责人工作。他目前是 CARD.com 的工程总监和 Drupal 协会顾问委员会成员。
Michael Hess 在密歇根大学信息学院和 UM 医疗中心工作,教授三门关于内容管理平台的课程,并负责数百个校园网站的功能。他还在许多其他大学部门担任咨询和开发角色,并且是现任 Drupal 安全团队负责人。他还为 BlueCross 提供大型医学研究项目咨询。Hess 毕业于密歇根大学信息学院,拥有信息学硕士学位。
Greg Knaddison(左)和 Michael Hess(右)
在他们在 DrupalCon 2015 上的演讲之前,我采访了 Greg 和 Michael,讨论了管理来自外部库的安全公告、自动化安全更新计划、代码审查、对 Drupal 8 的期望,以及他们对 Drupal 新手的任何建议。
您如何管理来自集成到 Drupal 中的外部库的安全公告?
我们有两种策略。首先,我们的通用策略是不应将第三方代码直接包含到 Drupal.org 存储库中,因此自 2011 年以来的建议是,各个站点所有者应了解他们自己对第三方代码的更新。Drupal 模块维护者可以做的一件事是添加 hook_requirements
来检查已安装的外部库版本是否不安全,然后向站点管理员显示一条消息,告知他们进行升级。
其次,当出现例外情况(例如 Drupal 核心)时,我们会与库的作者合作修复问题并协调发布。例如,我们与 Symfony 项目的安全团队建立了工作关系,以协调方式修复问题。由于 Drupal 8 尚未正式发布,因此我们目前不包含任何关于 Symfony 中问题的安全公告,但一旦 Drupal 8.0.0 发布,我们就会这样做。
Drupal 中是否有自动化安全更新的计划?
这是社区正在讨论的事情。当然,通过自动化安全更新,您会增加另一组风险。更新 Drupal 代码有时需要手动更改,而这无法通过自动化完成。作为一个社区,我们将继续探索这一点。
存在一些替代解决方案,可以通过可能更安全可靠的方式实现该目标。例如,一些专注于 Drupal 的托管公司在其托管计划中加入了使测试和部署安全版本变得非常容易的功能。还有一些咨询公司可以被聘请来监控您的安全版本并更新您的站点。一个相对新颖的解决方案是 Drop Guard,这是一种基于规则的第三方服务,它与现有的托管和部署工具集成以实现自动化安全更新。有关比较这些托管公司和服务提供商的更多详细信息,请参阅此 Wiki 页面列表,其中列出了保持 Drupal 站点更新的服务提供商。
对于那些有兴趣为自己构建类似东西的人,他们正在运行未修改的核心/贡献版本;并且他们对少量 shell 脚本感到满意,只需在 cronjob 中执行 drush up -y
。一个明显的改进是在测试环境中执行相同的 drush up -y
,运行自动化测试,并且仅在测试通过时才部署。
您对自动化代码审查和渗透测试有何看法?
基于 Coder 模块的自动化代码审查将在今年晚些时候为所有项目启用。但是,它只会捕获一些最常见的、通过模式匹配容易找到的问题。它会遗漏更复杂且可能更具破坏性的问题。总的来说,我们希望这种集成的代码质量检查将减少 drupal.org 上托管模块中的安全问题数量(使项目更安全并减少安全团队的工作)。我们很高兴看到 Coder 在更紧密地集成到 drupal.org 后会做出哪些改进。
自动化渗透测试结果往往包含大量误报,并遗漏实际问题。Drupal 安全团队定期收到电子邮件发送的 PDF 文件,其中显示了流行工具的结果,到目前为止,我还没有看到一个我真正喜欢的。也就是说,作为更完整审计的一部分,它们通常是一种经济高效的工具。
最有价值的结果来自专家的深入审查,专家阅读代码,理解目的,使用真实站点的副本,并可以就如何修复或缓解问题提供建议。
我们可以在 Drupal 8 中期待哪些新的安全功能?
这是我们计划在 使用 Drupal 构建安全站点 会议上深入探讨的主题,该会议在 DrupalCon 洛杉矶举行。
Drupal 8 将使用名为 Twig 的模板语言,该语言取代了 Drupal 特定的 PHP 模板系统。这意味着我们在模板中没有 PHP 代码。Twig 还提供了一个 自动转义功能,以防止主题中的 XSS 漏洞。
在 Drupal 7 及更早版本中,许多站点上手动集成的第三方 WYSIWYG 允许不受信任的内容编辑器使用“完整 HTML”文本格式,从而创建跨站点脚本漏洞。在 Drupal 8 中,WYSIWYG 内置了良好的默认设置,使 WYSIWYG 按钮与输入格式同步。这降低了站点构建者意外使用完整 HTML 文本格式来“使事情正常工作”并引入 XSS 向量的可能性。
PHP 模块已从核心中删除。此更改有两个主要动机。首先,此模块使站点管理员很容易错误地向不受信任的用户开放 PHP 执行权限。其次,如果攻击者获得对管理帐户的访问权限(通过嗅探会话或猜测弱密码),则攻击者可以使用 PHP 模块执行任意 PHP 代码。Drupal 8 站点被入侵的潜在方式将更少。
Drupal 8 在 Drupal 8 的路由系统中内置了 CSRF 令牌。自 Drupal 4.6 以来,一直有用于防止 CSRF 的简单函数:drupal_get_token
和 drupal_valid_token
。如果某些代码需要,这些函数在 Drupal 8 中仍然可用,但现在更容易保护 URL 免受 CSRF 攻击:路由的声明包含一个参数,说明是否应受到保护——非常容易。
对于正在实施 Drupal 项目的新站点所有者,您在安全方面会提供什么建议?
保持您的站点更新。订阅 安全公告 RSS 和邮件列表,或关注 @drupalsecurity。安全版本在星期三发布,因此请确保您的团队有一个计划并分配时间在站点上线后进行安全升级。检查您的权限页面,并考虑使用 Security Review 等工具来审核您站点的配置。
当然,还有更多的小事情我们将在我们的会议 使用 Drupal 构建安全站点 上介绍,该会议在 DrupalCon 洛杉矶举行。如果您无法直接参加活动,视频将在活动结束后不久发布到网站。
演讲者访谈
本文是 DrupalCon 2015 演讲者访谈系列的一部分。DrupalCon 2015 汇集了来自全球各地数千名使用、开发、设计和支持 Drupal 平台的人员。它于 2015 年 5 月 11 日至 15 日在加利福尼亚州洛杉矶举行.
评论已关闭。