开源软件安全深度剖析:优势、挑战与应对策略
1. 闭源无法阻止攻击
有人认为没有源代码的系统更安全,因为攻击者可获取的信息更少,发现漏洞的难度更大。然而,这种观点存在诸多缺陷。虽然源代码在为程序添加新功能时极为重要,但攻击者通常无需源代码就能发现漏洞。
首先,要区分“破坏性”和“建设性”行为。在现实世界中,摧毁一辆汽车远比建造它容易;在软件领域,发现并利用漏洞也比为软件添加重要新功能容易得多。攻击者相对防御者具有诸多优势,软件开发人员必须确保代码中不存在与安全相关的错误,而攻击者只需找到一个漏洞即可。开发人员的主要职责是让程序正常运行,而攻击者无需考虑程序是否正常工作,只需找出一个弱点。而且,攻击程序所需的信息比修改程序要少。
攻击者(针对开源和闭源程序)通常先了解程序常见的安全问题。隐藏这些信息毫无意义,因为这些信息早已公开,而且防御者也需要这些信息来保护自己。然后,攻击者会使用各种技术来寻找这些问题,可将这些技术分为“动态”技术(运行程序)和“静态”技术(检查程序代码,无论是源代码还是机器代码)。
在“动态”方法中,攻击者运行程序,向其发送数据(通常是有问题的数据),观察程序的响应是否表明存在常见漏洞。在这方面,开源和闭源程序没有区别,因为攻击者不查看代码。攻击者也可能采用“静态”方法查看代码。对于开源软件,他们可能查看源代码并搜索特定模式;对于闭源软件,他们可能搜索机器代码(通常以汇编语言格式呈现以简化任务)中的相同模式,还可能使用“反编译器”将机器代码转换回源代码,然后像搜索开源软件漏洞一样搜索其中的漏洞模式。即使攻击者想使用源代码来查找漏洞,闭源程序也没有优势,因为攻击者可以使用反汇编器重新创建产品的源代码。
非开发人员可能会问:
超级会员免费看
订阅专栏 解锁全文
924

被折叠的 条评论
为什么被折叠?



