开发

KG公司2014年成立,早期做互联网金融,2017年转型做互联网科技公司,主营业务是“助贷”,也就为按揭贷款购房的客户提供赎楼及债务置换贷款等服务。

这个业务需要经常性地访问政府居住证网站,查询房产地址、房屋编码和学区房的使用情况,用于做房产的市场评估和客户风险评估。

因为手动查询效率低下,公司产品组经讨论后提出了一个建议——用爬虫软件自动查询。

2017年12月,CTO安排新入职的程序员负责这个项目,要求他研发一个自动定时抓取的小程序,主要用来查询、下载网上的数据。

2018年1月,项目经理给程序员一个抓取数据的程序源代码,程序员开始修改。

2018年3月,小程序被部署在阿某云服务器上自动运行,其内置的“网络爬虫”可以:

链接某市居住证网站,也就是某市公安局人口管理处的居住证系统;

可以在某市居住证网站上查询到房产地址、房屋编码等对应的资料;

软件对网站访问量能达到每小时数十万次。

查询的信息都被下载保存到公司购买的阿某云服务器上。

这个程序还被用于查询房地产中介(中原地产、链家地产、Q房网等)在网上挂盘的房子信息,主要是查询房价、用作参考。

出事

2018年4月27日10:43-12:00左右,居住证系统的承建单位发现系统出现宕机现象,追踪到请求应用服务器端口编号,但因日志缺失而无法定位IP来源,当时怀疑是人为攻击。

2018年5月2日10:00-12:00左右,系统再次遭遇攻击,这次管理人员成功地截取了IP地址并报案。

此时,公司这边还不知道惹祸了,直到2018年5月17日晚上11点,服务器维护人员接到了阿某云客服的电话。阿某云说他们公司的服务器IP被网警锁定了,因有攻击行为,让他们赶紧联系网警。CTO随即电话联系研发人员(应该是指程序员),对方说估计是因为居住证网站加了验证码,但公司程序没做相应的更新,就造成了程序出错发出攻击行为。

5月攻击事件的影响很大。

案发时,某市居住证服务平台的注册用户超过530万,服务面包括:

所有市民的网上自助受理系统;

151个派出所、街道办居住证受理点的现场受理系统;

后台接口为市网格办、市交警局、市民政局,市交委等多个政府部门提供居住证、居住登记条件查询和审核。

居住证系统受攻击瘫痪期间:

软件对某市居住证系统查询访问量为每秒183次,共计查询信息约151万条次,窃取大量建筑物编码数据,造成政府信息泄漏;

所有居住证办理、居住登记申报、信息查询、对外服务功能均无法正常工作,影响面极广;

市民无法办理居住证和居住登记,相关生产生活秩序受到严重影响。

除了此次攻击,还有一些派出所出具证明证实5月期间经常出现系统无法登陆,录入过程频繁出现掉线、系统数据异常等情况。居住证系统无法正常使用、出现异常情况的时间长达一个多月。

供述

2018年8月,CTO、程序员被捕。

公安分局依法对公司进行搜查,提取应用程序源程序,应用程序日志及运行在服务器获取的数据。经司法鉴定所鉴定确认:

导出的库备份中检出多个包含房产信息的数据表,包括房产的所处位置、楼宇编号、房间编号等信息,约有2905万条;

在程序员的电脑上检测出爬虫程序的源代码;

在IP地址为XXXX的服务器检出爬虫程序,这两个爬虫软件程序均使用遍历查询的方式短时间向目标网址URL地址“......”发起大量查询请求,从而实现非授权下载数据库内容。

针对某市居住证网站及服务器的司法鉴定意见确认:

网站遭受自动化程序攻击。IPXXXX对居住证服务器的持续大量的访问造成了平台在……期间无法正常对外提供服务,服务器无法正常运行。

CTO供述和辩解时说:

爬取的是公开信息,没有任何恶意去攻击网站和系统,只是为了提高查询效率。没有爬取个人信息,没有在市场上买卖或者和其他公司搞资源置换,没有通过查询某市居住证网站信息获利。软件是公司管理层开会决定开发的,由法定代表人交代技术部研发,系统里的查询和下载功能是程序员程序员负责开发的。程序员设定的是每周三次自动查询,后面怎么实施的我也不清楚,主要是程序员负责。

他还说自己也知道“从技术上来讲,如果超过服务器承载能力的查询肯定会引起系统卡顿或瘫痪”,但因不清楚网站和系统的承载能力,加上心存侥幸,就只是口头提醒同事在服务器晚间相对空闲的时候去查询,控制一下频率。

程序员供述和辩解时称:

不清楚抓取数据的原程序是谁研发的,没有因查询居住证网站而获利,这是工作任务。3月份后就去做公司安排的其他任务了,这个程序在服务器上启动后,也没有对程序做修改和更新,也没有进入服务器的权限,权限在运维部门。

没有爬取个人信息,没有在市场上买卖或者和其他公司搞资源置换,只是用于公司业务上的参考。4月27日在公司,5月2日在日本,当时没对程序作出修改,猜测是因为居住证平台更新了验证码登陆功能,而我们的查询软件未做相应的更新,导致程序出错,发出攻击行为。

判决

二被告对起诉状中指控的罪名没有异议,只是希望能轻判。做罪轻辩护时:

都提出自己只是过失、疏忽大意,没有预见可能会造成的后果,主观上完全没有破坏系统的故意;

都提出爬取的是公开信息,只是为了让公司业务更高效,并没有以此牟利;

CTO认为自己授权程序员开发爬虫程序,只是一次性爬取,并未要求每天自动爬取,不是主犯;

程序员认为自己只是按领导指示、完成工作任务……

法院认为,二人违反国家规定,对计算机信息系统进行干扰,造成为5万以上用户提供服务的计算机信息系统不能正常运行累计1小时以上,属于后果特别严重,应以破坏计算机信息系统罪追究其刑事责任。

CTO,负责并授权程序员开发涉案爬虫软件,系主犯,判处有期徒刑三年 程序员受指派开发爬虫软件,在共同犯罪中起次要作用,系从犯,判处有期徒刑一年六个月。

最高人民法院、最高人民检察院关于办理危害计算机信息系统安全刑事案件应用法律若千问题的解释

至于这个案子里的其他人,从公司的法定代表人、提出建议的产品经理、传达任务和给源代码的项目经理,到使用数据的业务部门的同事,都没责任,法务/合规/风控看起来更是从未出现。

总体来说,正常经营的公司,网络爬取数据引发民事纠纷的常见,涉刑的不常见。立项时多问一句“我们这么做有没有风险”“会不会出事”没坏处,毕竟看起来是“集体决策”的决策最后往往并不是集体买单!

最后:警钟长鸣,愿各位珍重,做一个守法、护法、有原则的技术人。

来源:数据保护官

-------- End --------

因为爬虫失控,CTO 和程序员双双被判刑相关推荐

  1. 因为爬虫失控,CTO和程序员双双被判刑

    导读:要做一个文明的爬虫技术团队. 开发 KG公司2014年成立,早期做互联网金融,2017年转型做互联网科技公司,主营业务是"助贷",也就为按揭贷款购房的客户提供赎楼及债务置换贷 ...

  2. “网络爬虫” 失控,CTO 和程序员双双被抓

    上面这个公号「涩郎」,是我的一个备用号,为了防止万一哪天大号失联,平时一周我也会发三篇左右的我的思考,读书笔记,认知感悟等文章,带领大家一起探索精神与财务自由之路. 大家好,我是校长. 昨天早上的时候 ...

  3. 《我也能做CTO之程序员职业规划》写作过程重播之二

    又过一个月,写作仍在继续,评论也不停-- 2008-12-19 7:25:14 ξ箫音ξ 接收文件成功,保存于C:\Documents and Settings\dragon\桌面\我也能做CTO之. ...

  4. 《我也能做CTO之.程序员职业规划》 水准之上,期望以下

    高老师的新作已经大致拜读了,看完之后确实有点不吐不快的话.在这献丑一说,大家多批评指正. 个人感觉老老师这书写的实在是,水准以上,期望之下. 这话怎么解呢,简单的说,确实这书达到了高老师的平均水准,也 ...

  5. 《我也能做CTO之程序员职业规划》之十六:逆商

    <我也能做CTO之程序员职业规划 >之十六:逆商Adversity Quotient (=AQ) 本文选自<我也能做CTO之程序员职业规划 >一书 锐哥想在工作之余到小蔡学校进 ...

  6. 我也能做CTO之程序员职业规划 之六 灵商

    灵商SpiritualQuotient(=SQ) 本文选自<我也能做CTO之程序员职业规划 >一书 大学校园里丢自行车情况特严重,新车眨眼就没,不过有时运气好,丢失的自行车隔几天又会冒出来 ...

  7. 《我也能做CTO之程序员职业规划》之十五: 智商

    <我也能做CTO之程序员职业规划>之十五: 智商 Intelligence Quotient ( =IQ ) 本文选自<我也能做CTO之程序员职业规划 >一书 小蔡和大熊毕业答 ...

  8. 我也能做CTO之程序员职业规划 之八 决胜面试

    决胜面试 本文选自<我也能做CTO之程序员职业规划 >一书 经过锐哥的指点,小蔡的心态与技术能力都有了很大的提高,经过广撒网,争取到了几个公司面试机会,面试过后自我感觉还不错,故又开始飘飘 ...

  9. 《我也能做CTO之.程序员职业规划》新书出版推举

              本书誉称为程序员的内功心法.并由低到高的逐步过度对话和故事的写作风格,每章节都有联系.大部分的故事都是来源于亲身经历和看到的真实案例,从而给读者更多的启迪.从初出茅庐的大学生--& ...

最新文章

  1. 在python中表白_Python 告白:除了你还是你
  2. java排队买票_【排队买票】 (Java代码)
  3. tensorflow随笔——图像分类、检测,语义分割综述
  4. Akka定义Actors和消息《two》译
  5. iOS 审核之 Performance - 2.5.2 被拒 dlopen(), dlsym(), respondsToSelector:, performSelector
  6. python创建类mymath_构建DLL(MyMathFuncs)以在Python Ctypes中使用
  7. redis/memcached可视化客户端工具TreeNMS
  8. 完美数Python解法
  9. 宝塔linux面板安全吗,宝塔面板 安全吗
  10. UE高级性能剖析技术(三)-- Android内存分布和优化
  11. 存储器基本概念及分类介绍
  12. 【高性能】Linux挂载GPT硬盘
  13. 金仓数据库KingbaseES初始化失败如何分析
  14. 超声波测距仪编程_Micropython教程之TPYBoard DIY超声波测距仪实例演示
  15. (二)Redis——持久化详细解析
  16. Android 蓝牙 A2dp 听歌卡音?audio数据到a2dp通道流程解析----A2dp流控原理(Acl Flow Control),一文搞懂蓝牙卡音问题处理
  17. 【BFS】魔板(c++基础算法)
  18. python-按首字母分类形成列表
  19. 为Ubuntu安装Gnome桌面环境
  20. Effective Java高效编程(一)

热门文章

  1. Error: Watching remote files is not supported.
  2. IBM朱近之:解析对云计算的十大误解
  3. 原码、反码、补码详解
  4. 289. 生命游戏。
  5. eclipse android用真机模拟,eclipse--解决Android模拟器端口被占用问题的办法
  6. 生产环境的 ServiceMesh 流量劫持怎么搞?百度有新招
  7. 三、单片机读取ID卡(EM4100的数据格式)
  8. android问题汇总系列之一
  9. 邮件群发之一封邮件发给多个收件人?抄送密送设置
  10. window下安装MXNet