关于SQL注入和选举安全的那点事儿

你会如鸵鸟一般将头埋在沙子里吗?不进行适当的安全测试可能会让您感到安全,但不知道代码的漏洞将无法保证系统的安全。了解如何获得更多可见性以及如何在代码中建立安全性。

正如公正准确的选举是民主的基础一样,安全软件对于我们现代的数字生活也至关重要。我不是将它们比作可爱,而是挖掘两者的交集,这可能是灾难性的。最近对美国投票系统的分析表明,它们充满了不安全感。选民数据很容易经常被盗。现在,当您考虑到大约10000个地方投票辖区中的此漏洞时,当然,其中某些系统似乎并不安全。

这些故事中最令人震惊和最有启发性的是,在DefCon Hackathon上,一个11岁的男孩可以使用我最喜欢的SQL注入方法在测试系统上访问选举结果数据。花了整整10分钟。我想我并不感到惊讶,因为我长期以来就将SQL注入视为儿童游戏。DefCon的一位组织者指出:

“这些网站很容易被黑客入侵,我们无法将其提供给成年黑客——他们会在舞台上被嘲笑

在这种情况下,选举官员声称真实的系统更难破解,但我对此表示怀疑。这种拒绝在软件安全行业中很普遍,直到发生真正的黑客事件为止。请回过头来看看Heartbleed,在经过充分验证之前,大多数人并没有认真对待它。或者,当业内人士称轮胎压力传感器太难,品种太多,没关系等问题后才发现轮胎压力传感器的漏洞。就在几周前发生的汽车钥匙扣攻击也是如此。

另一个非常普遍的举动是,许多选举官员没有做任何测试。这种直截了当的方法可能会帮助他们感觉更好,但是不知道您的安全隐患不会使您的系统安全。我保证坏演员会确切知道那里存在哪些漏洞。

 

我们必须做得更好

我们必须开始做得更好。保护互联网连接系统的安全已经足够困难,我们无需让黑客轻松访问。

网络安全社区普遍禁止100%的安全性。但是,尽管这是事实,但目前还不是问题。问题在于,我们甚至没有做任何简单的事情来保护我们的软件,例如,对于选民网站或投票机而言。我知道,任何真正想要我的车的人都可以偷它,但是我仍然锁着车门,并且没有把钥匙留在里面。无法保护连接互联网的应用程序免受基于输入的攻击,意味着您要让某人带走所有数据。

 

我们如何做得更好?

无论选举黑客的动机是什么,无论是民族国家、政治组织还是地下室的黑客在寻找乐趣,重要的是要尽我们最大的努力来提高投票系统的安全性和可靠性。这些问题看似巨大,但实际上,我们可以做一些基本的事情,方法是堵塞泄漏系统中最明显的孔,这些措施将是有效的。

设计安全

设计安全意味着我们必须开始对应用程序安全性和安全编码进行不同的思考。这意味着我们无法再测试软件的安全性,而已无法测试产品的质量。“按设计”部分意味着我们首先考虑安全性,然后构建安全的应用程序,并且我们进行诸如渗透测试之类的安全测试是为了验证安全性,而不是为了发现安全性缺陷。

问问自己——当笔测发现有问题时,您会怎么做?您是否通过流程分析对其进行跟踪以发现类似的漏洞?然后,您是否正在寻找类似CERT的标准来制定策略,以向您展示如何以避免笔测试找到的方式进行编码?对于SQLi,这意味着以确定性方式进行输入验证,不会丢失用户输入。

密码

攻击者访问设备的一种常见方法是通过密码。如果设备允许使用质量低劣的密码,或者无法保护自己免受尝试猜测密码的危害,那么它们将很容易受到攻击。在最坏的情况下,设备出厂时实际上没有任何密码,直到您配置一个密码或使用一些硬编码的默认凭据。这个问题已经被业界认识了几十年,但是仍然存在。加利福尼亚州最近的立法要求设备制造商在这方面采取基本步骤。当然,这不是一个完整的解决方案,而是一个很好的起点。

安全编码标准

您可以使用许多网络安全标准和框架来指导创建安全代码应采用的实践和流程,例如单元测试、测量覆盖范围、运行静态分析、同行评审等。在软件级别,这必须最终导致特定的编码标准。

编码标准包括不同品种的指南。他们中的一些人寻找编码缺陷,无需实际运行代码即可识别安全问题。其他的则是反模式,这意味着它们会寻找您不应该使用的不良代码或“代码异味”。还有一些是规定性的,可以告诉您更好的编码方式。

最后一组是领先于网络安全的唯一方法。这些标准非常适合设计安全性倡议,并且将帮助您首先构建更安全的代码。在实施静态分析计划以进行安全编码时,请确保查看可用的检查器,并确保将检测器、气味和预防措施混合在一起。这三者共同可以加强您的应用程序,不仅可以抵御SQL注入,还可以抵御所有其他基于输入的常见攻击。

 

如何开始

Parasoft为使用C,C++,Java和.NET的开发人员提供了对这些规则的支持。我们支持常见的安全标准,例如CWE,OWASP,CERT和UL 2900,并且由于我们基于工程标准开始了静态分析产品,因此似乎在任何地方,我们都有最大的预防规则集。例如,我们有一个简单的输入验证规则,当遵循该规则时,结束SQLi的可能性。它不是通过尝试通过应用程序的无数(几乎是无限)流追踪受污染的数据(通过测试来确保安全),而是通过创建没有旁路输入验证路径的代码(安全——通过设计)。

这是从根本上不同的方式来考虑安全性。如果您具有工程学学位,那么您将非常熟悉这种基于标准的方法。如果您花了一生的时间来构建软件,那么这似乎是新的。但这将使您在软件安全性方面处于领先地位。立即申请免费试用,您可以亲自尝试

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值