夏某某任职北京中科某某科技有限公司,负责该公司为郑大一附院开发的“软件信息系统”的维护工作。
2017年10月31日20时许,夏某某参与并直接操作了郑大一附院“HIS数据库”的账号密码修改仪式,夏某某在未经授权或许可的情况下,私自记录了该账号密码。
后夏某某在未经授权或许可的情况下,私自编写了“数据库性能观测程序”和锁表语句,并利用私自记录的账号密码将该程序私自连接郑大一附院“HIS数据库”,导致该锁表语句在“HIS数据库”运行。
2018年12月24日8时13分至9时47分期间,夏某某先后六次利用“数据库性能观测程序”连接“平台数据库”的“锁定平台挂号表”功能,将数据库执行锁表命令。该命令执行后锁定fin_opr_register表,使其不能进行其它活动,并导致“HIS数据库”锁定。造成郑大一附院郑东院区、惠济院区、医学院院区所有门诊、临床计算机业务受到恶意语句攻击,门急诊挂号、门急诊叫号、门急诊支付、门急诊药房、门急诊检查、门急诊检验等业务系统均无法正常操作,所有门诊相关业务停止服务,造成该医院三个院区门诊业务停滞近两个小时,造成大量患者积压在门诊无法就诊,严重影响医院的正常医疗工作。
案发后,夏某某对其工作数据日志、办公电脑进行了清理。
2019年5月22日,经民警电话通知后被告人夏某某到郑州市公安局郑东分局投案。
经郑大一附院出具证明:郑大一附院“HIS数据库”的账号密码仅授权东软HIS程序使用,其他任何个人,公司,组织,单位不得使用此账号和密码与数据库发生连接和任何操作。
1、送检笔记本硬盘检测出“his”应用程序源码,程序可以连接以下两个数据库:
- “HIS数据库”:服务器IP:127.1.169.37、129.1.169.38,服务名称ZZUHISDB,用户名zdhis,密码gjb1299L3+Z6&$3.
- “平台数据库”:服务器IP:129.1.168.33、129.1.168.34,服务名称RACDB,用户名honryhis,密码ZdyfyHiaq2018。
2、在“平台数据库”界面,点击“锁定平台挂号表”按钮可以对数据库的fin_opr_register表和t_register_info表进行加锁,只能读取、查询,不能写入、修改;“解锁平台相关表”按钮没有任何功能。
经郑大一附院出具证明:由于恶意锁表行为遭受损失等相关情况,包括
- 从当日收入来测算。当日收入损失约为800万元。
- 郑东院区门诊楼有380台电脑无法进入医生工作站正常工作,72台自助挂号机和49台报到机无法正常工作;河医院区门诊楼有1027台电脑无法正常进入系统,86台自助挂号机和55台报到机无法工作;惠济院区门诊部有82台电脑无法正常进入系统,11台自助挂号机和4台报到机无法工作。
- 对该院智慧医院项目造成巨大影响。
上述事实,有经过庭审查证属实的下列证据证实(云头条仅列举部分):
6、郑州赛欧思科技有限公司郑大一附院安全事件分析报告及数据光盘,证明:郑州赛欧思科技有限公司经郑州市公安局网监支队委托对事件发生原因及情况进行描述,并且对相关数据库资料进行了固定。通过分析数据库日志发现,此次安全事件由于数据库执行锁表命令,该命令执行后锁定FIN_OPR_REGISTER表,使其不能进行其他活动,并间接导致HIS数据库锁定,造成业务系统均无法操作,所有门诊相关业务停止服务。
8、河南联合司法鉴定中心司法鉴定意见书:证明从被告人夏某某使用的笔记本电脑检测出“his”应用程序源码,并对该程序进行了测试、实验和鉴定。结论是:
(1)送检笔记本硬盘检测出“his”应用程序源码,程序可以连接以下两个数据库:“HIS数据库”:服务器IP:129.1.9.37、129.1.16.38,服务名称ZZUHISDB,用户名zdhis,密码gjb1299L3+Z6&$9;“平台数据库”:服务器IP:129.1.16.33、129.1.16.34,服务名称RACDB,用户名honryhi,密码Zdy@!Hias2018。(2)在“平台数据库”界面,点击“锁定平台挂号表”按钮可以对数据库的fin_opr_register表和t_register_info表进行加锁,只能读取、查询,不能写入、修改;“解锁平台相关表”按钮没有任何功能。
9、证人张某1的证言:我在郑大一附院主要负责医院的机房网络管理和维护。2018年6月份左右,郑大一附院购买了一整套“智慧医院”的软硬件设备,并在2018年11月份开始调试并投入使用。当时有三家公司负责对这套设备的调试安装以及后期的维护工作,其中北京中科某某公司负责财务数据库(HIS系统数据库)。2018年12月24日上午八点多,我们发现门诊缴费和叫号出了问题,就进入数据库查看。发现数据库自动记录一个报告,报告当中有一条命令是不属于正常业务范围内的语句,这条命令造成了HIS系统内挂号信息表被锁定,造成医院三个院区门诊挂号和缴费系统无法正常操作。在一上午时间,共出现多次这条命令对HIS系统内挂号信息表的锁定和解锁。当时我们就判断这条命令肯定不是机器自己生成的,可能是人为输入的,就围绕系统相关部门的人员查找是谁输入了这个命令,最后确认是北京中科某某公司的一名职员远程操作输入了这个命令。之后院方就联系了北京中科某某公司,要求他们停止此项操作。之前在处理我们院的数据库和服务器问题的过程中,从来没有用到过这条锁定HIS系统内挂号信息表的命令。使用这条命令会使门诊业务出现无法挂号、缴费、医生看诊、开具处方、门诊检查检验,相当于门诊业务处于瘫痪状态。经我们事后排查,发现是一条“LOCKTABLEFIN_OPR_REGISTERINEXCLUSIVEMODE”的数据库命令导致这种锁表的情况发生。在东软his系统运行这条命令直接导致了his门诊业务系统的门诊患者信息表(FIN_OPR_REGISTER)被锁死,出现患者在门诊无法挂号就诊、门诊交费、医生无法通过系统开具门诊医嘱(检查检验单、药品处方单)的情况。
北京中科某某负责对HIS系统数据库进行软件的维护和硬件的维修,他们有管理员权限(最高权限),可以远程操作。在2018年12月24日之前,郑大一附院的挂号系统出现过业务异常中断的情况,一年会出现一到两次,都是由北京中科某某公司的人处理和解决。北京中科某某公司的人平时所做的工作不需要往数据库内写入命令,如果需要写入命令,是需要和我们信息处还有东软公司三方进行沟通后才能实施操作的。
2017年10月31日,郑大一附院信息处召开会议对东软his系统数据库账号为“zdhis”的密码进行了修改。此账号的密码只院长、书记、副院长、信息处处长这4个人知道。当时开会的时候夏某某作为北京中科某某科技有限公司的项目经理也参与了这个会议。他不知道这个账号的密码,他没有权利使用这个账号及密码进入东软his系统。
12、证人张某2的证言:2018年12月24日上午郑大一附院的东软his系统出故障后,我就把ARW报告调出来提交给东软公司的运维人员,他们发现报告内有一条执行语句“LOCKTABLEFIN_OPR_REGISTERINEXCLUSIVEMODE”是异常语句。平时不会出现这个语句,信息处让各个软件服务商自查,我把这个报告发给夏某某,第二天夏某某给我打电话说可能是他们这一块执行的,但是还不太确定。
2017年10月31日郑大一附院召开会议修改东软his系统数据库账号为“zdhis”的密码,我知道的这个密码只有院长、前任书记掌握。当时开会时我和夏某某作为北京中科某某科技有限公司的运维人员也参加了这个会议。夏某某可能知道东软his系统数据库账号为“zdhis”的密码,因为2018年10月份郑大一附院和郑州市公安局网监支队做网络安全攻防演练后,网监支队出具的安全整改通知书显示有这个账号的密码,这份报告只有我和夏某某、信息处的张某1、杨某等人看过。夏某某没有告诉过我他保存有东软his系统数据库账号为“zdhis”更改后的密码,我不知道他是否有这个密码。夏某某没有权利使用“zdhis”的密码进入东软his系统,我们公司有专用的用户名和密码进入东软his系统,不应该用账号为“zdhis”的用户名进入。
13、证人周某的证言:夏某某是我同事,他在郑大一附院这个项目上归我管。我们公司在郑大一附院的项目上有三个组,夏某某属于软件组,他要维护的不仅是我们公司自己开发的软件,还有别的一些通用软件,一般都是工具性的。别的公司有专人维护的软件别的公司自己去维护,需要配合时予以配合。比如东软公司开发的HIS系统,夏某某是不需要去维护的,如果his系统出问题,由他们东软公司的人负责维护。
我事后听说2018年12月24日郑大一附院的东软his系统的门诊患者信息表被锁死的情况。2019年元旦前后夏某某给我说这个事怀疑是他自己导致的,他说可能是误操作。我不知道郑大一附院使用的东软his系统数据库账号为“zdhis”的密码,这个不是我们公司能接触的,我们的正常工作不需要知道这个账号和密码。夏某某没有告诉过我他知道zdhis的密码。
14、被害单位委托代理人杨某的陈述:2018年12月24日8点17分,我在郑大一附院河医院区办公,我看到微信上三个院区的服务群里说门诊业务系统卡住了,无法进行其他任何业务。我和同事以及东区的技术人员一起通过工作电脑查询门诊业务系统卡机的原因和查询数据库。在查到82号和89号这两个接口服务器时,发现数据包拥塞严重。在9点的时候,我在我们的PL/SQL里面发现了一条锁表语句(LOCKTABLE+表名字,也是挂号业务表),然后我们就执行了终止语句(KILL)。我们一共执行了6次终止语句,门诊业务才恢复正常,这个时候时间是10点左右。后来我们将服务器工作日志导出发到东软公司总部进行分析,分析的结果是发现那个锁表语句是非程序中的运行语句,怀疑是人为操作,操控门诊业务系统。我们又请了郑州市信大天瑞信息技术有限公司的技术人员进行了日志分析,分析的结果与东软一致。这6次锁表语句的总共执行时间是1小时34分,从2018年12月24日上午8点13分开始到9点47分结束。这个锁表语句影响了郑大一附院的三个院区,分别是郑东院区、河医院区和惠济院区门诊的所有业务。在这1小时34分的时间内三个院区的15300多个门诊业务量无法工作,24号当天的业务量是25528个。这次的恶意锁表现象严重影响了我们的日常门诊工作。
我们公司要负责对整个医院的数据库相关的硬件和软件设备进行维护,简称运维。我是2012年开始对郑大一附院进行运维相关工作,我主要参与到数据库的运维是从2017年开始。目前我们公司主要有张某2和我对数据库进行维护,为了能及时监控医院的数据库运行状况,我就没等到公司上班就登录系统对郑大一附院的数据库进行监控,这是我分内的工作。
2018年12月24日8点左右,我在北京家中用公司给我配备的联想电脑,远程登录到郑大一附院的数据库和小型机的数据库,查看数据库的运行情况。大概8点30分,我看到微信群里河医的门诊系统卡顿,我担心公司的综合信息运用平台也会出问题,就启动了我自己编程的一个程序(程序名称:数据库性能观测软件)对我们公司的系统进行查看。在我运行系统的时候发现我运行的这个程序在报错,我就更改了几次数据参数,一直没有运行成功我就主动放弃了,整个操作过程大概20分钟。大概在10点多的时候微信群说河医系统运行正常,我就去公司上班了。
12月25日我们公司将小型机的数据库的性能报告导出来,同事张某2将报告发给我一份,让我帮忙分析问题出现的原因。26日我分析的时候发现小型机分析报告中第9条语句看着有点眼熟,拿出来跟我自己做的编程进行了比对,结果和我运行程序的语句一样。我自己推断可能是我运行的程序和性能报告第九条重叠,这个运行语句会造成锁表。接下来我就对我自己做的程序进行分析,发现自己写的程序是有问题可能会将锁表语句执行到HIS数据库中。
“数据库性能检测”软件是我2017年7、8月份自己写的,存在公司给我的电脑里,文件名叫his.exe。我用我自己原来准备做的his系统搭的框架直接改的程序,文件名没有进行更换。我写这个软件是为了监控我们公司的综合信息运用平台和郑大一附院的his系统。我点击运行这个软件后,软件界面上会有3个选项卡,一个是his数据库,一个是综合信息平台数据库,一个是参数配置。2018年12月24日上午我点击之后,进了综合信息平台选项卡,接着我操作了个检查链接的按钮,看有没有正常链上数据库,接着软件就报错了。因为报错,我就关了“数据库性能检测”软件,从软件的后缀名为“ini”文本文档修改参数。修改完之后,我又重新启动这个软件,还是运行失败,之后我又改了改,总之一共运行了4、5次,还是运行不成功我就放弃了。这个软件我写好之后运行过多次,没有问题,那时候这个软件只链接综合信息运用平台。我是2018年12月初把his系统链接到这个软件里的,当时的目的是想用我写的软件也能监控到his系统的数据库的性能,能方便我的日常工作。我把his系统链接到我的软件之后,第一次联网使用这个软件就是2018年12月24日上午,也就是出现报错的情况。
我写的程序当中造成锁表执行程序的语句是locktablefin_opr_registerinexclusivemode。这个语句的功能是用来锁综合信息平台fin_opr_register这个表的。锁表的目的是为了模拟一下在高并发情况下的死锁情况,测试一下我们公司综合信息运用平台的性能。这个语句我记得是在2018年上半年写到软件里的。我写这个软件的初衷是为了方便日常工作,这个软件写好之后,我可以通过这一个软件检测his数据库和综合信息平台的数据库性能。我编写的锁表的设计是可以手动锁表和解锁,而且这个功能只在链接综合信息运用平台的环境下才起作用。
连接我们公司综合信息运用平台的数据库链接配置IP地址有两个:129.1.168.33,19.1.168.34。用户名:horyhis,登录密码:Zdyfy!Hias2018。连接河医数据库系统的连接配置地址有两个129.1.169.37;129.1.169.38。用户名:zdhis;密码:gjb1299L+Z6&$9。我在进入数据库性能观测程序后,通过鼠标点击软件初始界面左上方的HIS数据库和平台数据库进行连接切换。我写的数据库性能观测软件运行之后,默认的连接是his数据库,后来我才发现这个程序有问题,如果我运行这个软件的话可能会导致锁表的情况。我是12月26日才发现我写的语句可能存在问题的,但是我不确定12月24日的锁表是不是我造成的。
我设想的这个软件不是要在his系统里运行的,软件一启动就会默认链接上his的数据库,本来应该在切换到综合信息运用平台之后,我点击软件界面的测试按钮之后才能在综合信息运用平台里执行的锁表语句。由于代码编写的问题,可能存在软件一启动,就直接将锁表语句在his的环境下运行的可能性。我写的代码有问题,导致一运行就锁了his的挂号表,我觉得存在这样的可能性。我在12月27日左右使用360和火绒软件清理过电脑垃圾文件,我电脑里的火绒设定的自动清理,每天一清,360那个不一定,我觉得电脑垃圾多就清理。
我编写的“his.exe”软件(数据库性能观测软件)没有得到中科弘睿公司或者郑大一附院的授权,这个软件是我自己编写的。2018年11月底或者12月初的时候,我在这个软件里添加了his数据库模块,之后没有进行过模拟测试。我编写这个软件之前没有向中科弘睿公司或者郑大一附院进行过报备或申请。我编写的软件代码写的有问题,程序启动时默认链接his数据库,由于代码编写有误,可能错误执行了在综合信息运用平台中才能运行的锁表语句。数据库性能观测软件执行连接到his数据库需要在编程语句里写入账号和密码,账号是zdhis,密码是gjb1299L3+Z6&$9。账号是中科弘睿公司设定的,密码是医院设定的,也是医院安排修改的,我是具体修改人。这个密码专用于程序链接his数据库。上述账号和密码是郑大一附院的his程序用的,我使用过,我在自己编写的数据库性能观测软件里就使用了上述账号和密码。从郑大一附院授权角度讲,我是没权利使用上述账号和密码的。2017年10月31日,郑大一附院网络安全加密实施仪式我在场,修改的zdhis的密码由3个院领导分别掌握各自的部分,我当时写了个修改密码的语句。这个语句在我电脑里有保存,我当时存到一个txt文档里。我存这个密码的时候是我私下偷偷存的,我给张某2说过我私下存有这个密码。我是管理人员,我想着存着密码以后我自己用了就方便了。郑大一附院的领导没有给我授权让我使用并掌握这个密码。我编写软件使用了zdhis的密码是我私下偷偷用的,没有跟任何领导汇报过。
郑州高新技术产业开发区人民法院认为:夏某某违反国家规定,擅自对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果特别严重,其行为已构成破坏计算机信息系统罪。公诉机关的指控成立,本院予以支持。
关于被告人夏某某及辩护人辩称其没有破坏计算机系统的主观故意的意见,经查,根据被告人夏某某供述、证人张某1、张某2、周某的证言可知,夏某某并无知晓使用郑大一附院东软his数据库“zdhis”账号和密码的权限,其工作内容并不需要登录上述帐号。夏某某在未经授权的情况下,趁被害单位修改密码之机私自记录上述账号和密码,并私自开发应用“数据库性能观测软件”,私自使用该账号密码连接被害单位his数据库,使其编写的锁表语句在his数据库运行,导致被害单位的门诊业务系统瘫痪,造成重大损失。
2018年12月24日,夏某某在运行自编软件报错的情况下多次修改参数继续运行,导致被害单位计算机信息系统6次执行锁表操作,系统近两个小时无法正常工作,严重影响医院正常工作。
夏某某作为专业技术人员,应明知其违规操作可能造成被害单位计算机系统不能正常运行,而放任该结果的发生,属于间接故意,应对危害后果承担法律责任,符合本罪的主观构成要件。该项辩解及辩护意见不能成立,本院不予采纳;
关于夏某某辩称医院门诊系统无法工作不一定是锁表造成,其启动的数据库观测软件是否连入his数据库不清楚,其辩护人辩称不能证明夏某某启用的数据库性能观测软件中的语句是唯一确定性的造成被害单位计算机信息系统运行不正常原因的意见,经查,根据鉴定意见可知,从夏某某电脑中检测出his应用程序源码。根据测试、实验,夏某某运行的数据库性能观测软件即his.exe应用程序能够使用zdhis账号密码连接被害单位his数据库,在夏某某连接平台数据库时可执行锁表操作。在被害单位提供的操作日志中显示2018年12月24日上午his.exe程序中锁表语句共执行六次。夏某某操作的数据库性能观测软件中的锁表语句与被害单位提供的操作日志中的锁表语句内容一致,夏某某供述的运行观测软件、程序报错修改参数多次尝试运行的时间经过和被害单位系统异常,多次执行终止锁表语句操作的时间经过相互对应,能够证明夏某某运行该软件是导致被害单位系统破坏的直接原因。
郑州赛欧思科技有限公司的分析报告能够印证以上事实。故辩护人的该项辩护意见不能成立,本院不予采纳;关于辩护人辩称证明被害单位造成损失的证据不足的意见,经查,根据证人张某1、李某、葛某、被害单位委托代理人杨某的证言可知,2018年12月24日上午的锁表操作给被害单位的门诊系统造成大范围的破坏,导致大量门诊病人及住院病患积压,医院正常业务停滞近两个小时。被害单位的经济损失根据其提供的医院收入信息汇总表、情况反映、查房整改通知书及微信群信息截图可以客观反映。故辩护人的该项辩护意见不能成立,本院不予采纳。
综上,被告人夏某某破坏医疗领域提供公共服务的计算机信息系统,致使生产生活受到严重影响,造成五十台以上的计算机不能正常运行,造成经济损失超过五万元以上,符合破坏计算机信息系统罪“后果特别严重”的规定,应处五年以上有期徒刑。辩护人辩称不构成本罪的意见不能成立,本院不能采纳。夏某某虽系主动到案,但未能如实供述犯罪事实,不能认定为自首。
根据本案的事实、情节、性质及社会危害程度,依照《中华人民共和国刑法》第二百八十六条第一款、《最高人民法院、最高人民检察院关于办理危害计算机信息系统安全刑事案件应用法律若干问题的解释》第四条第二款之规定,判决如下:
被告人夏某某犯破坏计算机信息系统罪,判处有期徒刑五年零六个月。(刑期从判决执行之日起计算。判决执行以前先行羁押的,羁押一日折抵刑期一日,即自2019年5月23日起至2024年11月22日止。)
如不服本判决,可在接到判决书的第二日起十日内,通过本院或直接向河南省郑州市中级人民法院提出上诉。书面上诉的,应当提交上诉状正本一份,副本二份。
【破坏计算机信息系统罪】违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。
违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。
故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚。
单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照第一款的规定处罚。
《最高人民法院、最高人民检察院关于办理危害计算机信息系统安全刑事案件应用法律若干问题的解释》第四条第二款之规定,破坏计算机信息系统功能、数据或者应用程序,具有下列情形之一的,应当认定为刑法第二百八十六条第一款和第二款规定的“后果严重”:
(一) 造成十台以上计算机信息系统的主要软件或者硬件不能正常运行的;
(二) 对二十台以上计算机信息系统中存储、处理或者传输的数据进行删除、修改、增加操作的;
(三) 违法所得五千元以上或者造成经济损失一万元以上的;
(四) 造成为一百台以上计算机信息系统提供域名解析、身份认证、计费等基础服务或者为一万以上用户提供服务的计算机信息系统不能正常运行累计一小时以上的;
实施前款规定行为,具有下列情形之一的,应当认定为破坏计算机信息系统“后果特别严重”:
(一) 数量或者数额达到前款第(一)项至第(三)项规定标准五倍以上的;
(二) 造成为五百台以上计算机信息系统提供域名解析、身份认证、计费等基础服务或者为五万以上用户提供服务的计算机信息系统不能正常运行累计一小时以上的;
(三) 破坏国家机关或者金融、电信、交通、教育、医疗、能源等领域提供公共服务的计算机信息系统的功能、数据或者应用程序,致使生产、生活受到严重影响或者造成恶劣社会影响的;
原文始发于微信公众号(云头条):一个违规操作、损失 800 万、被判五年半:运维夏某某致「郑大一附院」智慧医院系统瘫痪 2 个小时,判破坏计算机信息系统罪