一个违规操作、损失 800 万、被判五年半
夏某某任职北京中科某某科技有限公司,负责该公司为郑大一附院开发的“软件信息系统”的维护工作。
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 日止。)
如不服本判决,可在接到判决书的第二日起十日内,通过本院或直接向河南省郑州市中级人民法院提出上诉。书面上诉的,应当提交上诉状正本一份,副本二份。
相关法律条文
《中华人民共和国刑法》第二百八十六条第一款:
【破坏计算机信息系统罪】违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,后果严重的,处五年以下有期徒刑或者拘役;后果特别严重的,处五年以上有期徒刑。
违反国家规定,对计算机信息系统中存储、处理或者传输的数据和应用程序进行删除、修改、增加的操作,后果严重的,依照前款的规定处罚。
故意制作、传播计算机病毒等破坏性程序,影响计算机系统正常运行,后果严重的,依照第一款的规定处罚。
单位犯前三款罪的,对单位判处罚金,并对其直接负责的主管人员和其他直接责任人员,依照第一款的规定处罚。
《最高人民法院、最高人民检察院关于办理危害计算机信息系统安全刑事案件应用法律若干问题的解释》第四条第二款之规定,破坏计算机信息系统功能、数据或者应用程序,具有下列情形之一的,应当认定为刑法第二百八十六条第一款和第二款规定的“后果严重”:
(一) 造成十台以上计算机信息系统的主要软件或者硬件不能正常运行的;
(二) 对二十台以上计算机信息系统中存储、处理或者传输的数据进行删除、修改、增加操作的;
(三) 违法所得五千元以上或者造成经济损失一万元以上的;
(四) 造成为一百台以上计算机信息系统提供域名解析、身份认证、计费等基础服务或者为一万以上用户提供服务的计算机信息系统不能正常运行累计一小时以上的;
(五) 造成其他严重后果的。
实施前款规定行为,具有下列情形之一的,应当认定为破坏计算机信息系统“后果特别严重”:
(一) 数量或者数额达到前款第(一)项至第(三)项规定标准五倍以上的;
(二) 造成为五百台以上计算机信息系统提供域名解析、身份认证、计费等基础服务或者为五万以上用户提供服务的计算机信息系统不能正常运行累计一小时以上的;
(三) 破坏国家机关或者金融、电信、交通、教育、医疗、能源等领域提供公共服务的计算机信息系统的功能、数据或者应用程序,致使生产、生活受到严重影响或者造成恶劣社会影响的;
(四) 造成其他特别严重后果的。