程序员的骚操作:写个漏洞让雇主重复支付修理费用近三年

本文主要是介绍程序员的骚操作:写个漏洞让雇主重复支付修理费用近三年,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

640?wx_fmt=jpeg

作者丨小智

一位西门子公司的合同工十年前在给西门子写的电子表格中植入了逻辑炸弹,它会在特定日期之后导致电子表格崩溃,于是西门子就必须再次雇佣该名合同工进行修复,每次都需要重新支付修复费用,持续时间近 3 年。最近他被抓包了,面临最高十年监禁和 25 万美元(约合人民币 172 万)的指控。 1 大龄程序员的“生财之道”

现年 62 岁的大卫·廷利 (David Tinley) 来自匹兹堡附近的哈里森市,如果不是因为出了这档子事,他只是美国众多默默无闻的大龄程序员之一。

640?wx_fmt=jpeg

廷利为西门子在 Monroeville 的办事处工作了将近 10 年的时间,他曾接过一个为西门子公司创建管理订单的电子表格需求,电子表格包含自定义脚本,可以根据存储在其他远程文档中的当前订单更新文件的内容,从而允许公司自动化库存和订单管理。

事实上,这个需求并不算难,廷利写的电子表格程序也正常工作了多年。直到 2014 年,该电子表格开始频繁出现崩溃问题。

起初,西门子公司并不知道故障的具体原因,出于对廷利的信任,该公司要求廷利进行修复。因为廷利是合同工,因此每次进行修复时,西门子都需要跟廷利签订修复合同,并支付费用。这样的情形持续了近三年之久,直到东窗事发。

在又一次电子表格程序崩溃以后,西门子公司仍旧联系其进行修复。但此次程序崩溃时他并不在城里,不得不将电子表格的管理密码交给西门子公司的 IT 工作人员去执行紧急修复。西门子公司的 IT 人员发现,电子表格频繁崩溃的原因在于廷利在其背后植入了一个逻辑炸弹,该逻辑炸弹会导致电子表格在特定日期后崩溃。(所谓逻辑炸弹,指的是在特定条件出现或经过一定时间后,恶意地诱骗软件或系统崩溃或失败。)于是廷利便可以借修复的名义,重复收取西门子公司的修复费用(大概费用在 4.2 万美元)。如果不是因为事情败露,他的“生财之道”似乎可以持续得更久。

廷利在今年 5 月遭到起诉,在庭审中,廷利和其律师表示:

他在代码中放置逻辑炸弹,并不是为了促使西门子重新聘用他来解决这个问题,而是为了保护他的专有代码。 廷利在匹兹堡的法庭上说: “我的动机是高尚的”。 其中一些问题不是他的代码造成的,而是由于对微软 Excel 软件本身进行了修改。

根据此前曾有过的类似案例,廷利无罪的可能性极小:

  • 2006 年,瑞银 (UBS) 前 PaineWebber 员工因在公司网络上植入逻辑炸弹,并押注公司股价将下跌,被判入狱 8 年。

  • 2018 年 9 月,亚特兰大一名男子因在美国陆军工资数据库中植入逻辑炸弹,导致美国陆军预备役工资延迟 17 天支付,被判两年监禁。

匹兹堡法庭曾希望与廷利达成早日认罪、避免全面审判以减轻罪责的协议,但廷利与其律师最终毁了认罪协议。他将面临最高十年的监禁以及 25 万美元(约合人民币 172 万)的罚款。

2 遭到质疑的西门子 IT 能力

此事件遭到曝光后,廷利受到了理所当然的指责,但西门子公司的 IT 能力却遭到了巨大的质疑:

廷利为他们工作了十年,为什么同样的问题持续了近三年之久,都没有研发人员感到奇怪? 而是任由这位合同工一次又一次地收取修复费用?

该案的最终量刑听证会将与 11 月份举办,目前西门子公司未对事件详情进行进一步的披露,从有限的信息中,该公司的 IT 管理能力已经受到了广泛的质疑。

曾经在工业革命中扮演过重要角色的西门子公司,在 2014 年提出了 “2020 公司愿景” 计划,聚焦在电气化、自动化、数字化三个领域。2018 年,该公司进一步提出了“公司愿景 2020+”,再次强调数字化能力。

根据西门子中国官网的描述:

我们丰富的产品应用程序已经帮助各行各业的企业通过产品和流程创新提升了业务水平。 当今智能产品及其相关制造流程的复杂性向企业提出了前所未有的要求,这就要求企业必须深度理解这些多领域系统的交互。 创建和共享各阶段产品流程的准确数字化双胞胎,正是向数字化企业转型的牢固基石。 我们的产品组合能够凭借在各个行业当中的卓越技术来满足各个领域的需求。

在西门子的数字化战略中,既有自己做平台的内线发展,也有在外部做收购的外部拓展。其中的外部收购近年来更是动作不断:

  • 2014 年,西门子收购 Camstar,强化其在工业数字化领域的领导地位;

  • 2016 年,西门子以近 10 亿美元收购工业软件开发商 CD-adapco;

  • 2016 年底,西门子 45 亿美元收购半导体软件公司 Mentor Graphics。

西门子表示,过去的二十年间,该公司在软件方面投入了超过 100 多亿美元,获得了在工业软件方面的领先地位。该公司表示,现在拥有客户开发飞机、火车和汽车等复杂电子机械所需的所有软件。随着收购的持续进行,西门子成为了 SAP 后的欧洲第二大软件公司,世界十大软件供应商。

但西门子的 IT 能力,真的就随着一路并购的规模扩充得到了相匹配的提升吗?类似的批评声一直不断。

此前,西门子公司的过程监视系统 WinCC 曾被俄罗斯技术团队爆出充满漏洞。WinCC 应用是由西门子开发的一种 SCADA 程序,用于许多行业的进程可视化,并且被认为是行业标准。该俄罗斯团队在当年 WinCC 的最新版本中发现了超过 50 多个漏洞,数量多到西门子公司制定了一个路线图来修补所有漏洞。其中的大多数问题都允许攻击者远程接管 WinCC 系统。

该团队负责人接受采访时不无讽刺地说道:“在 WinCC 中找出漏洞简直太容易了,你可以随便一指(就能发现漏洞)”。

3 合同工、外包、程序员的权限问题?

合同工、外包在软件开发的世界里必不可少,在传统企业比如波音、西门子等公司数量更是众多,即便对于大型的互联网企业来说,外包员工数量同样不少。比如谷歌就有规模庞大的“隐形员工”,再比如阿里巴巴的 Lazada 同样有很多外包员工等。

在很多公司的软件开发流程中,对于合同工、外包人员的权限问题都很谨慎。事实上,类似西门子合同工这样通过植入漏洞非法获利的新闻不在少数,许多公司在核心的数据库、后台系统、账户等关键位置的权限进行严格的限制。

不仅对于合同工、外包是这样,对于许多离职员工同样如此。InfoQ 此前曾采访过一位离职程序员,他表示:

在我签字交接完以前,技术团队的老大防我就像防贼一样。

读者朋友应该还记得今年 1 月份,曾发生过一起闹得满城风雨的大新闻:

一篇名为《告游戏行业全体同仁书》的文章中声讨了一位离职主程:这篇文章指责主程燕某在就职深圳螃蟹网络科技有限公司 3 个月期间,出于报复心理,于游戏上线测试当天无故失踪并锁死电脑和服务器,最终导致公司开发两年的项目失败,损失惨重,创始人尹某背上百万债务开始打工之路。

无独有偶,近日一名微软程序员利用测试账户套现千万美元,购置了一辆特斯拉与价值 160 万美元房产的新闻同样引起了我们的注意。

对于合同工、外包乃至正式员工来说,IT 系统的权限问题该如何关注?安全问题、删库问题、套现问题背后折射的究竟是职业道德问题还是监管不利的原因?各位未来的 CTO 们,你怎么看?



有道无术,术可成;有术无道,止于术

欢迎大家关注Java之道公众号


640?wx_fmt=png


好文章,我在看❤️

这篇关于程序员的骚操作:写个漏洞让雇主重复支付修理费用近三年的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/161620

相关文章

poj2406(连续重复子串)

题意:判断串s是不是str^n,求str的最大长度。 解题思路:kmp可解,后缀数组的倍增算法超时。next[i]表示在第i位匹配失败后,自动跳转到next[i],所以1到next[n]这个串 等于 n-next[n]+1到n这个串。 代码如下; #include<iostream>#include<algorithm>#include<stdio.h>#include<math.

poj3261(可重复k次的最长子串)

题意:可重复k次的最长子串 解题思路:求所有区间[x,x+k-1]中的最小值的最大值。求sa时间复杂度Nlog(N),求最值时间复杂度N*N,但实际复杂度很低。题目数据也比较水,不然估计过不了。 代码入下: #include<iostream>#include<algorithm>#include<stdio.h>#include<math.h>#include<cstring

poj 2175 最小费用最大流TLE

题意: 一条街上有n个大楼,坐标为xi,yi,bi个人在里面工作。 然后防空洞的坐标为pj,qj,可以容纳cj个人。 从大楼i中的人到防空洞j去避难所需的时间为 abs(xi - pi) + (yi - qi) + 1。 现在设计了一个避难计划,指定从大楼i到防空洞j避难的人数 eij。 判断如果按照原计划进行,所有人避难所用的时间总和是不是最小的。 若是,输出“OPETIMAL",若

poj 2135 有流量限制的最小费用最大流

题意: 农场里有n块地,其中约翰的家在1号地,二n号地有个很大的仓库。 农场有M条道路(双向),道路i连接着ai号地和bi号地,长度为ci。 约翰希望按照从家里出发,经过若干块地后到达仓库,然后再返回家中的顺序带朋友参观。 如果要求往返不能经过同一条路两次,求参观路线总长度的最小值。 解析: 如果只考虑去或者回的情况,问题只不过是无向图中两点之间的最短路问题。 但是现在要去要回

poj 3422 有流量限制的最小费用流 反用求最大 + 拆点

题意: 给一个n*n(50 * 50) 的数字迷宫,从左上点开始走,走到右下点。 每次只能往右移一格,或者往下移一格。 每个格子,第一次到达时可以获得格子对应的数字作为奖励,再次到达则没有奖励。 问走k次这个迷宫,最大能获得多少奖励。 解析: 拆点,拿样例来说明: 3 2 1 2 3 0 2 1 1 4 2 3*3的数字迷宫,走两次最大能获得多少奖励。 将每个点拆成两个

poj 2195 bfs+有流量限制的最小费用流

题意: 给一张n * m(100 * 100)的图,图中” . " 代表空地, “ M ” 代表人, “ H ” 代表家。 现在,要你安排每个人从他所在的地方移动到家里,每移动一格的消耗是1,求最小的消耗。 人可以移动到家的那一格但是不进去。 解析: 先用bfs搞出每个M与每个H的距离。 然后就是网络流的建图过程了,先抽象出源点s和汇点t。 令源点与每个人相连,容量为1,费用为

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

最大流、 最小费用最大流终极版模板

最大流  const int inf = 1000000000 ;const int maxn = 20000 , maxm = 500000 ;struct Edge{int v , f ,next ;Edge(){}Edge(int _v , int _f , int _next):v(_v) ,f(_f),next(_next){}};int sourse , mee

cf 164 C 费用流

给你n个任务,k个机器,n个任务的起始时间,持续时间,完成任务的获利 每个机器可以完成任何一项任务,但是同一时刻只能完成一项任务,一旦某台机器在完成某项任务时,直到任务结束,这台机器都不能去做其他任务 最后问你当获利最大时,应该安排那些机器工作,即输出方案 具体建图方法: 新建源汇S T‘ 对任务按照起始时间s按升序排序 拆点: u 向 u'连一条边 容量为 1 费用为 -c,

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip