架构师能阻止财政破产和市场崩溃吗?

  • Michael Bushe
  • 郭晓刚

2008 年 3 月 3 日

话题:安全最佳实践架构语言 & 开发文化 & 方法

法国兴业银行(Société Générale)的Jerome Kerviel 犯下的 49 亿欧元(72 亿美元)欺诈案令全球都开始讨论,像这样一家受尊敬的金融机构,他们的系统是如何被绕过的。

金融机构和其他商业组织必须遵守法律规章,比如MiFIDSOX,才能降低金融风险并得出精确的会计报告。企业内部也存在风险管理的内在动力:诈骗和盗窃都会减少利润,甚至导致经营失败。因此企业在社会工程和技术工程上都进行了巨大的投资,以实现能降低风险的内部控制。

正如 Bruce Schneier 立即指出的,防欺诈保护的强度主要是由人的因素决定的,而不是技术因素。在警察报告中,Kerviel 声称 Société Générale 视而不见,因为他所做的交易非常有利可图。如果他说的是真的,那么任何软件系统都无能为力。对 Jerome Kerviel 的调查可以看出社会因素与技术因素之间的相互影响。

InfoQ 询问了 Jim Sheehy 的看法,他是一名 CISSP,在一个大型的州政府部门担任 IT 安全经理。

不要低估老一套的、非技术的控制,它们在金融机构中一直行之有效:职责分离、强迫雇员休假、双重控制系统等等。

有些风险控制软件可以跟踪习惯,比如监测人们何时登录进哪一台工作站,还有他们何时在假期登录进系统。这样的软件应该能发现 Kerviel 用其他用户的账号登录,也应该能对 Kerviel 在 2007 年只休了 4 天假的情况发出警告。其他方案还有通过搜索邮件和检测击键来发现可疑的关键字和不寻常的活动,比如修改一封转发过来的邮件。Kerviel 被怀疑伪造指令请求邮件,以搪塞对他的交易的疑问。

当然 500 亿欧元不会由于几封小小的伪造邮件就不知所终。所有金融机构都有帐目核对的程序,每个帐户中的资产都要由另一个来源确认。Robert Annett 说,即使只是开发一个在线商店,你也应该保证收到的付款要和发出去的货物对得上

Kerviel 被怀疑通过访问数据库,调整了数据库中的数值来掩盖他的交易,从而绕过了内部的账目检查。交易系统总会有应用程序审核以及数据库审核表。除非 Kerviel 拥有数据库管理员权限,不然他的活动会被记录下来。谁都没注意到吗?

Sheehy 说:

在系统的每个层次上都进行审核是必要的,但这只是起步。必须有人去分析这些审核数据,数据才能起到作用,这是大多数组织都没做到的。Oracle Fine-Grained Audit 日志可不是什么好看的东西,OS 日志也一样。事件关联系统(event correlation systems)尝试去分析不同来源的审核数据,并将之互相联系起来。虽然事件关联系统试图填补这个角色空白,但它们经常只是制造出更多的误报。这是一个很难解决的问题。

确实,风险管理行业虽然很活跃,但还很不成熟。现在可以找到许多综合方案,有BPSMementoActimize,还有SaSReuters提出的方案。

但这些方案本身也是问题的一部分。当企业安装了欺诈检测系统之后,可能变得自满。有人认为,由于自从霸菱银行因 8.27 亿欧元(14 亿美元)诈骗而倒闭以来,诈骗检测系统在 10 年间已经日趋完善,可能使得欧洲金融业的员工太过信任自动化了。不能让系统代替人来进行安全方面的思考,这是很重要的。大多数“白帽”安全顾问都同意,在任何业务中,总是存在盗窃的机会。因此对于系统和应用的安全,必须时时保持警惕和创新。

那么,一名软件架构是可以做什么去检测和防止欺诈呢?

Sheehy 说:

我认为一名软件架构师能做的最重要的事情,是小心地思考应用程序的业务角色,将它们紧紧地映射进一个基于角色的访问控制系统。只凭借技术屏障,比如防火墙、第 7 层内容过滤、入侵检测之类是不够的——开发者必须在生命期的最初阶段就把安全构建到应用程序的逻辑中去。

可惜问题还不止于此。软件正变得更加复杂和松散耦合。Annett 还指出,随着 SOA 的发展,系统的入口越来越多,因此安全风险也越来越大。另一方面,SOA 中资源的去中心化使我们更难实现一个完整的规划。

架构师还可以采取以下一些步骤来提高他们组织的安全性:

  • 从一开始就将安全性构建到架构中去。对安全功能进行翻新改造通常都是达不到目的的。
  • 确保存在适当的经过测试的审核和对帐系统。

  • 考虑构建定制的事件关联系统,用来扫描异常,或者考虑利用开源工具,比如Esper
  • 建议集成强身份验证控制,比如指纹识别。
  • 保证系统和程序的密码经常更换。当更换密码,记得保持灾难恢复系统同步。
  • 确保系统的测试,包括对欺诈的测试。
  • 系统所有的入口都要保证安全。
  • 利用下面的一些资源:
  • 别自己一个人干。
    • 雇一名“白帽”来做安全性评估
    • 考虑投资第三方风险管理和欺诈检测系统,考虑如何最好地将第三方系统集成进你的应用。

也许架构师自己单枪匹马没法挫败几百万美元的欺诈,但架构师可以帮助企业保持利润、信誉和声望。

查看英文原文:Can Architects Stop Financial Ruin and Market Meltdowns?
安全最佳实践架构语言 & 开发文化 & 方法