写点什么

我的开源代码被大公司盗用后:有人承认,有人让我滚

  • 2022-08-12
    北京
  • 本文字数:2734 字

    阅读完需:约 9 分钟

我的开源代码被大公司盗用后:有人承认,有人让我滚

自己辛辛苦苦写的代码被他人不声不响拿去商用卖钱,这对很多人来说都是非常恼火的事情。最近,业界资深网络安全专家 Patrick Wardle 在 Black Hat 的分享中讲述了自己的开源代码在不被告知的情况下被至少三家独立公司使用的事情。

至少被三个不同的公司“盗取”代码

 

Patrick Wardle 是非常优秀的 macOS 安全研究人员,也是苹果公司重点关注的 OBTS 安全会议组织者。他还是专为 macOS 创建开源安全工具的非营利组织 Objective-See 基金会的创始人,这意味着 Wardle 的许多软件代码现在可以免费下载和修改,但这也使自己的代码未被允许就被一些科技公司拿去了,他也是在多年后才发现的。

 

Wardle 以 Mac 恶意软件专家而闻名,曾在国家安全局担任恶意软件分析师一职。在此期间,他分析了攻击国防部计算机系统的代码,并创建了可以查看摄像头和麦克风是否被恶意软件操纵的 macOS 工具OverSight,并通过 Objective-See 免费发布了该工具。

 

当时是 2016 年,媒体曝出网络犯罪分子使用恶意软件通过用户的 macOS 网络摄像头和麦克风秘密监视人们。其中,一名黑客使用了一款名为“Fruitfly”的恶意软件劫持了笔记本电脑的网络摄像头,目的是监视儿童。在对新病毒进行了数月的分析后,Patrick Wardle 解密了部分代码并设置了一个服务器来拦截来自受感染计算机的流量。

 

然而几年后,Wardle 为客户分析可疑代码时,在客户自己设备上的一个工具中发现了问题。该工具由一家大型科技公司开发,提供了与 OverSight 类似的功能,包括监控 macOS 网络摄像头和麦克风。

 

通过筛选程序,Wardle 找到了他非常熟悉的代码,他的整个“监督”算法,包括他未删除的 bug,都包含在这个程序中。他终于意识到,某个开发人员对他的工具进行了逆向工程,窃取了他的成果,并将其重新用在了一个名字不同但功能几乎相同的产品中。

 

“就像有人抄了你写的东西,还把你的拼写和语法错误也抄了过去。”Wardle 说道。后来,Wardle 的客户立即联系了该公司,提醒了他们的开发人员窃取了 Wardle 的代码。



这并不是 Wardle 最后一次发现有公司使用他的代码。后来, Wardle 发现还有两家大公司也分别在自己的产品中使用了他的算法。Wardle 没有透露这些公司的名字。

 

“你联系到这些公司,并说:‘嘿,你们这些家伙,大部分都是偷的我的东西。你对我的工具进行了逆向工程并重新实现了算法——这在法律上非常......呃,是灰色的。但在欧盟,有一条规定你这样做是违法的。我有一个非营利组织,你实际上是从非营利组织中窃取了信息,并将其放到了你自己的商业代码中,然后从中获利。这十分不合适。”Wardle 说道,“但这些公司回应的态度都不一样。”

 

“有的回复很友好,我有次收到了一个 CEO 的回复邮件,承认了这一点并询问如何解决这个问题。但有人先是回复我说需要三周的内部调查,之后便向我表示没有看到任何相同的代码,让我滚。”Wardle 说道。遇到后者时,Wardle 不得不需要更多证据。

证明盗窃代码很难

 

但实际上,证明对方代码是盗窃来的非常难。Wardle 表示,他必须使用自己的闭源软件并采用逆向工程来了解那些公司的代码是如何工作的,并证明那些代码与自己的相似。此外,Wardle 还与为独立安全研究人员提供无偿法律服务的非营利性电子前沿基金会 (EFF) 合作。

 

Wardle 能够弄清楚是否为盗窃代码是因为他自己既编写工具又编写逆向工程软件,同时掌握这两门专业知识让他更容易找到证据。但像 Wardle 一样拥有这种技术背景,同时在社区还有一定影响力的开发者并不多,在维护权益方面常常处于弱势。

 

在去年,一位名叫 Brendan Gregg 开发者公开了自己写的 DTrace 项目相关开源代码被 Sun 公司“偷走”的往事。那是更早的 2005 年,Gregg 忙着编写和发布 DTrace 相关的高级性能工具,然后发现 Sun 公司发布的相关工具竟然比自己发布的还少。

 

Gregg 不是 Sun 的员工,不清楚公司内部运作,但他还负责为 Sun 提供培训与咨询支持。有一次,Sun 为其演示了基于 DTrace 打造的新产品,也就是在这个过程中,Gregg 发现其中一些工具是自己编写的脚本,而且这些工具非常不成熟,是自己当年随手写了就对外开源的,里面有很多奇怪的组合,个人风格强烈。Gregg 还发现,Sun 还把他作为作者的名字删掉了。但最后 Gregg 也没有得到什么补偿。

 

相比 Sun 公司的行为,苹果和甲骨文的做法就让 Gregg 舒服很多。Gregg 表示,几年后,苹果把他几十款工具添加进了 OS X 系统中,并完整保留了作者的姓名、版权以及 CDDL 开源许可证,甚至还对功能进行了改进与增强。多年之后,甲骨文在 Oracle Solaris 11、BSD 社区在 FereBSD 上也采取了同样的开源成果吸纳方式。

 

事实上,这样盗用他人开源代码为自己谋利的案例有很多。去年,特朗普支持的社交媒体平台 Truth被 Mastodon 创始人告上法庭。Mastodon 的创始人 Eugen Rochko 称,该应用程序称从自己的开源项目中提取了大量代码。当时,网友们发现 Truth 测试版的界面与 Mastodon 基本相同,而且该网站的部分代码与其他社交网络的代码没有任何差异。

 

特朗普媒体与技术集团 (TMTG)此前还称 Truth 为“专有软件”,并试图隐藏 Truth 基于 Mastodon 的事实。这件事情被曝光后,其相关股价随之大跌。

 

结束语

 

事实上,开源软件本身允许其他平台使用自己的代码,但开源软件的许可证要求使用者将他们的源代码和做的任何修改提供给公众。但很多公司在使用了代码之后没有任何说明。

 

Wardle 认为,导致这种现象的本质是开发人员的任务就是找到某种解决方法,比如监控麦克风和摄像头,然后他们就找到相应的工具进行逆向工程并窃取算法,而公司的目的就要解决方案,并不会追问代码的来处。

 

“我相信这是一个系统性问题,因为当我开始寻找时,我不是只找到了一个,而是好几个,这些公司还都完全不相关。”Wardle 认为代码盗窃的做法非常普遍。

 

对此,Wardle 建议,对于软件开发人员来说,任何编写代码(无论是开源代码还是闭源代码)的人都应该假设它会被盗,并学习有助于他们发现这种情况的技术。对于公司而言,管理者应该教育员工或开发人员不要偷窃,并让他们认真了解围绕对一个产品逆向工程以获取商业利益的法律规范,否则将整个组织将面临法律风险。

 

此类事件的发生也在不断提醒人们,一定要规范使用开源软件的代码,否则对公司名誉、实际利益都没有好处。

 

参考链接:

https://gizmodo.com/black-hat-what-to-do-big-tech-company-steals-your-code-1849378076

https://www.theverge.com/2021/10/29/22752850/mastodon-trump-truth-social-network-open-source-gab-legal-notice

https://mp.weixin.qq.com/s?__biz=MjM5MDE0Mjc4MA==&mid=2651083118&idx=1&sn=d42542f5c8ad7bb6caad49c21d637711&chksm=bdb9a93d8ace202b16aca5fa85b6fcc29401badb132bc442ec40b4bd785db58f7f4ea514455d&scene=27#wechat_redirect

2022-08-12 14:4710916

评论 2 条评论

发布
用户头像
既然开源就该默认代码会被随意抄袭。不过抄袭者应该完整保留作者的姓名、版权以及 CDDL 开源许可证,这是做人的道德。
2022-08-13 08:43 · 浙江
回复
每个开源项目遵循的license都是不一样的,要求也不尽相同
2022-08-21 17:31 · 北京
回复
没有更多了
发现更多内容

刘伟光:超大型金融机构国产数据库全面迁移成功实践

OceanBase 数据库

兆骑科创创业大赛,线上直播路演,高层次人才引进服务平台

兆骑科创凤阁

7大特征交互模型,最好的深度学习推荐算法总结

博文视点Broadview

OceanBase CEO杨冰:小就是大,构建企业核心竞争力

OceanBase 数据库

定制开发APP——怎样吸引更多用户?

开源直播系统源码

软件开发 直播系统源码 定制开发 app定制开发

软件测试100天上岸3-测试有哪些最高原则

和牛

测试 8月月更

金融和科创深化合作,常熟农商银行与博云签署战略合作协议

BoCloud博云

云计算 容器 云原生

演进式架构从不缺设计方法,最大的阻力在于「人」

万事ONES

QCN9074 WiFi 6E Card OpenWRT, IPQ6010,802.11ax,wallys,QCN9074 802.11ax 4x4 MU-MIMO 6GHz wifi6E

wallys-wifi6

IPQ6010 QCN9074

2022 全球 AI 模型周报

Zilliz

深度学习 计算机视觉 Transformer 多模态

专访通过 OBCP V3 首位考生:V3 让知识更加结构化、体系化

OceanBase 数据库

高僧斗法(博弈-Nim博弈)

Five

算法竞赛 算法题 8月月更

leetcode 225. Implement Stack using Queues 用队列实现栈(简单)

okokabcd

LeetCode 数据结构与算法

毕业设计

Asha

万物皆可集成系列:低代码释放用友深度价值(1)—系统对接集成

葡萄城技术团队

3D可视化在智慧园区的应用

3DCAT实时渲染

轻量化服务,大道至简,触手可及

鼎道智联

微服务 云服务 PWA 轻应用 原子化服务

蓝桥杯历届试题 蚂蚁感冒(模拟版+非模拟版)

Five

算法 算法竞赛 8月月更

身价百亿的Zendesk:创业,从一个小目标开始

ToB行业头条

开源一夏 | Node.js实战之Node多进程与JXcore 打包深入运用

恒山其若陋兮

开源 8月月更

开源一夏 | Java 覆盖jar包内的方法

六月的雨在InfoQ

开源 钉钉 Java core 8月月更

VPN是什么?VPN与堡垒机有啥区别?

源字节1号

软件开发 小程序开发

缓存穿透、缓存击穿、缓存雪崩及解决方案

Steven

Java:在Word文档中添加或删除页眉页脚

Geek_249eec

Java word 页眉页脚

在Rust和C之间传递字符串,有 7 种方法!

非凸科技

c rust

OceanBase 4.0发布:首次实现单机分布式一体化架构、全面上云

OceanBase 数据库

观测云产品更新|观测云计费更新;新增场景仪表板/笔记/查看器的查看权限;优化监控器和事件等

观测云

Bundle-less 的思考和实践分享

字节跳动终端技术

bundle 字节跳动 前端 构建工具 拆包

基于 Impala 的高性能数仓建设实践之虚拟数仓

网易数帆

大数据 impala 数仓架构

​五大不良 coding 习惯,你占了几样?

SEAL安全

Code 代码规范 CODING

华为云安全云脑,让企业云化运营更放心

IT资讯搬运工

我的开源代码被大公司盗用后:有人承认,有人让我滚_开源_褚杏娟_InfoQ精选文章