如果你已经拥有了内部专业知识,那么为了你满足你的合规要求,Web应用防火墙(WAF)似乎是一个简单的选择。但是对于IT安全来说,永远没有这么简单的方法。例如,Web应用防火墙不能防止应用程序的逻辑缺陷所带来的损害。如今的Web 2.0应用使用了大量动态代码,想想这些Web 2.0应用的复杂度,逻辑缺陷很容易发生。
面对这种情况,代码审计的好处就显现出来了。通过在代码级解决问题,你可以减少安全性相关的设计、编程缺陷或其他有严重危害的缺陷。通过更新程序版本,动态地提高应用程序的整体安全。
有四种代码审查方式符合PCI DSS要求:
• 手动审查应用程序源代码
• 源代码自动分析工具
• 手动web应用安全漏洞评估
• Web应用安全漏洞自动评估工具
源代码审查可能是最彻底的一个选择。分析师会检查数据在程序中的确切流向,一切都逃不过他的眼睛。分析师会考虑程序域的特殊属性,如信用卡号码和个人资料,从而全方位地识别出所有的安全漏洞。
这种方法的主要缺点是,要找到那些使用最广泛的Web应用程序的所有漏洞,过程费时且昂贵。需要有技术和经验的工程师,要求在应用程序开发和安全方面有大量的专业知识。虽然准确的花费因程序复杂度而异,但你仍有可能为此付出数万美元的成本。请记住,源代码审查并不要求如防火墙那样的维护和保养水平(尽管需要对未来版本的源代码进行审查,但是你的开发者仍然需要具备修改已发行的漏洞的能力)。
如果审查人员接受过程序代码评估方面的训练,并且不是程序的开发人员,那么他的审查资格就符合PCI标准的要求。
不过,只有那些经常需要开发自己的应用程序的大型企业,才能在经济上承受专用的代码审查人员。
PCI标准还批准“正确地使用应用程序源代码自动分析(扫描)工具”和“正确地使用Web应用程序安全漏洞自动评估(扫描)工具”。尽管静态分析工具不能测试应用程序在多大程度上符合安全政策,也不能像手动代码审查那样找出应用程序中的后门,但是他们可以缩短审查大型的、复杂的应用程序的时间。
此类工具的高端产品使用复杂的功能,如数据流分析、控制流分析和模式识别等,确定潜在的安全漏洞。我说潜在的,是因为分析结果可能会包含大量误报。优点是它们可以分析高度复杂的代码,并能找出分析关注的问题。这种特性使得这类工具物有所值。
代码审查物有所值
先不管称代码审查为“漏洞评估”是否正确,代码审查能够提供一种满足规章要求的更加物有所值的方法。许多人会争论说,应用程序变得如此复杂,还有许多方法比代码审查更符合实际。漏洞评估能揭示弱点和漏洞,但这些漏洞既可能被不受信任的外部人员利用,也可能被授信的用户误用。同样的,敏感数据未加密这类问题不会被检测出,因为应用程序用户界面是唯一的攻击向量。此外,在产品测试环境中测试应用程序,这不一定可行,且往往很昂贵。
作为自行审查代码和使用商业评估套件的折中,你可以使用开源的Web安全测试工具。你可以在开放Web应用安全项目(Open Web Application Security Project)中找到许多此类工具。
当你开始审视这个市场时,你会发现,一些你买的自动化工具能给你提供灵活的服务,使得审查过程简单而又节省成本。将你的测试工作外包给分析专家——如Veracode或者WhiteHat安全公司——在某些方面意义重大:你不用再去安装和学习使用某一应用程序,还可以从专业的测试人员那里获得有益的结果。
无论是外包测试还是使用内部管理测试,你需要记住的是两者都是有局限的,而攻击是没有限制的。例如,你的供应商可能会很不乐于见到你深入他的网络,仅仅是为了确定你是否能用它侵入你自己的网络。但是攻击者是不会有任何犹豫的。