设计安全警报:消灭软件中的SQL注入漏洞

恶意网络攻击者利用SQL注入漏洞破坏系统

SQL注入(即SQLi)漏洞是存在于商业软件产品中的持久型漏洞。在过去的二十年里,人们对SQLi漏洞有着广泛的了解和记录,也存在有效的缓解措施,但软件厂商仍不断开发可能出现该漏洞的产品,使许多客户面临风险。

几十年来,软件行业已掌握大量解决SQLi漏洞的方法。2004年,MySQL引入了预编译语句,清除SQL注入漏洞。

美国网络安全与基础设施安全局(CISA)和联邦调查局(FBI)发布了《设计安全警报》,应对最新发生的恶意威胁活动,攻击者利用托管文件传播应用程序中的SQLi漏洞,危害应用程序用户,影响了数千个组织。CISA和FBI敦促技术厂商的领导检查其代码是否存在SQLi漏洞,鼓励所有技术客户询问厂商是否进行了审查。如果发现自己的代码存在漏洞,厂商领导应确保其组织的软件开发人员立即实施缓解措施,消除所有当前和未来软件产品中的SQLi漏洞。保证初试产品的安全性,消除SQLi漏洞。

“设计安全”(Secure by Design)经验教训

“设计保证安全”指厂商以合理的方式设计和构建产品,防止恶意攻击者成功利用产品漏洞。从设计阶段开始,一直到开发、发布和更新,将缓解措施纳入其中,减轻客户的网络安全负担和公众的风险。至少从2007年起,人们就认为SQLi漏洞是不能放过的漏洞。但SQL漏洞(如CWE-89)仍然是一类普遍存在的漏洞。

例如,CWE-89是2023年最危险和最顽固的软件漏洞前25名之一。

何为SQL注入漏洞?

攻击者可利用SQL注入漏洞将用户提供的输入直接插入到SQL命令中,进而任意进行查询。SQLi漏洞源于软件开发人员忽视的安全最佳实践,导致数据库查询和用户提供的数据混合在一起。成功利用SQLi的影响重大,危害数据库及其信息的机密性、完整性和可用性。具体而言,攻击者可利用SQLi漏洞窃取敏感信息,篡改、删除或使数据库中的信息无法使用。SQL注入之所以能成功,是因为软件开发人员未将用户提供的内容视为潜在的恶意内容。

软件厂商如何防止SQL注入?

在软件产品的设计和开发过程中,开发人员应使用参数化查询和准备好的语句,将SQL代码与用户提供的数据分离,避免SQL漏洞的产生。这样能确保系统将用户输入视为数据而非可执行代码,消除恶意用户输入被解释为SQL语句的风险。软件厂商应在应用程序中强制使用参数化查询,系统消除SQLi漏洞。说明:部分开发人员试图通过输入过滤技术防止SQLi漏洞。输入过滤可以防止某些攻击,但这些技术较弱,难以大规模实施,而且经常可以被绕过。因此,参数化查询更好地体现了一种安全的设计方法。

CISA和FBI建议软件厂商研究可预测且经常被利用的漏洞的原因和容易实施的解决方案。CISA和FBI还鼓励厂商审查联合指导意见中的以下三项原则,即“改变网络安全风险的平衡方法:设计安全的原则和方法”。

原则1:

掌握客户安全成果的所有权

厂商应该在一些关键的安全领域进行投资,保护其客户和公众。其中包括为软件开发人员提供安全的构建块,确保单个开发人员错误不会损害数百万用户的数据。软件厂商应将使用带有参数化查询的准备好的语句作为软件开发的标准做法。这应该在他们的开发环境中通过开发库来实施,例如,开发库使安全路由成为开发人员的默认路由,并在拉取请求时进行检查。

此外,软件厂商的高级管理人员必须对其客户的安全负责,对代码进行正式审查,确定是否容易被攻击。简单的代码审查可显示这类漏洞的普遍性,提供清晰有效的缓解措施。厂商和开发人员应该通过默认参数化查询获得保护产品的所有权,消除漏洞的威胁。

原则2:

实现透明度和问责制

厂商在披露产品漏洞时应以透明度原则为先。为此,厂商应跟踪与其软件相关的漏洞类别,通过CVE程序将其披露给客户。厂商应确保CVE记录是正确和完整的。厂商提供准确的CWE尤为重要,这样就可以追踪软件漏洞类别,而不仅仅是单个CVE漏洞,客户也可以了解特定厂商的开发实践可能需要改进的领域。厂商还应该确定并记录漏洞产生的根本原因,公开说明消除所有类型的漏洞是业务目标。

原则3:

通过构建组织结构和领导力实现目标

正如软件和硬件制造业高管关心成本、功能和客户体验,厂商应优先考虑产品的安全性。领导者必须全面考虑:客户、经济和国家安全目前正承受着不在其产品中建立安全性的商业决策的冲击,正如上文描述的威胁攻击者的行为清楚地反映的那样。此外,将业务导向设计安全的软件开发往往会降低财务和生产力成本以及复杂性。领导者应该进行适当的投资,制定正确的激励结构,将安全作为既定的商业目标。

领导者还应强调彻底消除各类漏洞的重要性,而不只是根据具体情况加以解决。领导者应优先考虑建立主动措施的组织结构,例如采用参数化查询等安全编码实践,实现持久的安全性,减少对反应性响应的依赖。高级管理人员还应确保其组织进行审查,检测常见的和普遍的SQLi等漏洞,确定是否存在漏洞,实施现有的有效的缓解措施。应不断进行审查,消除各类漏洞,因为一些漏洞可能会随着时间的推移而变化或发展。

软件厂商的行动项目

《“设计保证安全”警报》侧重于减少SQL注入这类漏洞的方法,但并不全面。为保护客户免受广泛恶意网络活动的影响,厂商应对照“改变网络安全风险的平衡方法:设计保证安全的原则和方法”中的内容进行检查,全面实施本警报中提及的原则和实践。此外,CISA和FBI敦促厂商公布安全设计计划,证明其不仅在实施战术控制,而是从战略的角度重新思考保护客户安全的责任。

原创文章,作者:guozi,如若转载,请注明出处:https://www.sudun.com/ask/88722.html

(0)
guozi的头像guozi
上一篇 2024年6月4日
下一篇 2024年6月4日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注