本文共 2860 字,大约阅读时间需要 9 分钟。
编辑 | 小智整理
从 2016 年 11 月到 2018 年 1 月,一年多时间利用职务便利,在华夏银行总行核心系统内植入计算机病毒程序,使跨行 ATM 机取款交易不能计入账户,之后成功取款 717.9 万元非法占为己有。10 月 10 日,这位华夏银行技术处长在朝阳区人民法院受审。
根据检方指控,华夏银行三室处长覃某将其编写的“计算机病毒程序”植入华夏银行总行核心系统应用服务器,并通过该计算机病毒程序使其跨行 ATM 机取款的交易不能计入账户,自 2016 年 11 月至 2018 年 1 月间,覃某通过其掌控的华夏银行卡多次在 ATM 机上跨行取款,将银行资金 717.9 万元转入其使用控制的银行账户,非法占为己有。
覃某生于 1975 年,大学毕业后一直在银行系统工作,其妻子也属于银行系统职员,两人育有一个 9 岁女儿。覃某在华夏银行开发中心担任三室处长,日常负责银行核心系统的开发和维护。
没汇报,私自进行漏洞测试
据悉,2016 年 11 月份,覃某利用开发中心内的电脑编写了一个后台程序,并将其放在银行主系统上,覃某称:
“编写这个程序是为了验证银行核心系统的漏洞是否存在,这个缺陷大概是在跨行 ATM 机取款后,取款成功但不会计入账户。”
在将后台程序放到核心系统后,覃某用一张银行卡到 ATM 机内取款,测试时间与漏洞触发的关系:
“正常情况下银行有规定不允许在生产环境下测试,而且他没有权利这样做,每次进行测试前都要向领导汇报,作预案,审批后才能进行。”
提案虽由覃某所在的部门提出,但实施测试需由其他部门来做。
“我当时觉得正常的测试太麻烦,(就)没有向单位汇报。”
起贪念,取款 700 余万占为己有
覃某交代,他编写的程序包含三个文件,分两次放置在系统中,之所以两次将编写的程序放置到系统中,是为了把系统里的漏洞时间(即成功取现但不计入账户的时间)延长,第一次程序可将时间延长到 23 点,第二次可延长到 24 点。
对于一年多时间前后取现 1000 多笔,非法占有人民币 700 余万元的犯罪动机,覃某称:
“一开始就是想做测试,后来拿取出来的钱还了外债。”
据悉,2017 年 3 月时,覃某从亲戚、同事处借款买了一处位于北京市门头沟的商铺。同年 5 月开始,覃某陆续用取来的钱还借款,部分钱还另外买了理财及借给朋友开店。
覃某称,银行规定测试需测试卡,并要经过报批审核,再由指定的人办理银行卡作为测试卡。但由于覃某利用职务之便,通过他人办理的银行卡绕过了监管审核,因此得以私自进行测试,最终通过漏洞套取巨额现金据为己有。
2018 年 1 月底,东窗事发,覃某将其 2013 年购买的一套位于北京大兴的房子抵押给朋友,从朋友处获得 550 万元,加上从其妻子处拿来的 190 余万元,一起转到了他取款的银行卡内。
覃某称,自己最大的错误就是没及时向上级汇报自己发现了这个系统漏洞:
“我当时就想着报批太复杂,而且做这个测试的部门可能也解决不了,最后还是需要由我在的部门解决。”
检方认为,覃某的行为应以职务侵占罪追究刑责。建议判处有期徒刑五年到八年。此案未当庭宣判。
新闻来源:法制晚报。地址:
https://c.m.163.com/nc/qa/3g-expand/huawei-b200-article.html?docid=DTP1LGAF000187VE&w=2
对此事件,InfoQ 咨询了一位金融系统的技术专家,因为事件敏感,不方便公开发表评论,故此作匿名点评:
本人系从事金融机构客户,市场交易,风险领域等系统研发,并非商业银行系统领域专家,以下技术分析则属于根据文中公布信息的研究和推测:
首先,从技术角度来看,整个事件属于跨行转账交易分布式事务在多阶段提交过程中出现了数据的不一致性,其整个过程涉及到了跨行转账,清算系统的关键流程。国内目前的跨行转账事务处理并非实时,两个银行都是通过中央银行 (如人行, 银联) 进行中转和清算,而清算系统通常是批处理日结,之后 (如 T+1) 则分别与两个银行核对确认交易明细,之后进行清算支付 (通过保证金系统);清算支付之后才回到各自银行系统进行账户余额对账。显然这过程中的真实支付与实际账户余额对账有着跨系统以及时间差,而本文整个事件都是围绕这个时间差做文章的,即所谓“取款成功但不会计入账户”,也就是在整个事务的最后对账一步出问题。
对于该技术处长:
显然该处长利用其对整个流程的熟悉,嗅到系统的漏洞,并开发漏洞验证程序,绕过正常流程测试并证实系统漏洞后,进一步恶意植入,修改程序,一步一步走向深渊。其实很多从事风控及安全漏洞相关的工作都是双刃剑,比如杀毒软件和病毒。在极度熟悉系统实现及流程情况下,会从敬畏到高度控制,一旦涉及金融利益,则很可能会触碰高压线。
对于该银行:
显然存在很明显的流程及监管问题,如开发人员未经过正常审批流程触碰生产环境,大多金融企业,开发人员 CTB 与运维 RTB 是有清晰界限,开发人员对于生产环境的控制最大限度也是在系统监控下查看部分非敏感日志,生产系统只能由运维人员来部署等。监管方面,生产系统显然缺乏监控,对于所有登陆生产用户,操作进行实时监控,预警和报告等。以及对于复杂跨系统间的数据一致性校验,如银行保证金账户与真实账户的差异并未及时发现;另外,其实无论多复杂的系统还是流程都是人预先设计的,而是人设计则必然有缺陷或漏洞,比如该行技术人员可以通过职务之便与他人合作绕过流程,充分说明银行也需要加强对员工进行职业道德操守,操作风险以及信息安全保护的教育和培训。
IT 从业者的职业道德
每个行业都有其做事的行为准则,也有其约定俗成的职业道德。对于 IT 从业者的程序员来说,职业道德应该是怎样的呢?
IEEE(电气和电子工程师协会)曾制定过 IT 从业者的伦理准则(Code of Ethics),简单翻译以供参考:
IEEE Code of Ethics:
https://www.ieee.org/about/corporate/governance/p7-8.html
转载地址:http://hplra.baihongyu.com/