Windows 10源代码泄露风波(下)

    回顾NT内核的历史,一共有三次规模较大的源代码泄露。

    第一次是2004年2月发生的NT 4.0和Windows 2000泄露,我们将其简称为NT4泄露。

    第二次是Windows Server 2003版本的Windows Research Kernel(WRK)泄露,本来的意图是提供给大学和研究机构做学习和研究用途的。但是一旦到了大学后,基本就相当于公开给全世界了。就在老雷写作这篇短文前,搜索了一下,居然发现有位北京邮电大学的同学竟然把WRK的几乎所有代码文件都上传到了GITHUB上,而且留着自己的名字,还有链接到他的主页,主页上有自己发表的论文,论文里有大学名称、姓名和邮件地址,主页上还说他将到美国留学......真让老雷跌破眼镜啊,不禁想起孔夫子的话:“吾党之小子狂简,不知所以裁之?”老雷出于好意已经给他发了邮件提醒......

    第三次便是上个周末发生的Windows 10 Shared Source Kit(SSK)泄露。SSK本来是提供给ARM、INTEL等硬件合作伙伴的。从文件清单来看,内核和启动部分显然是提供给ARM阵营的公司,叫他们如何学习X86来实现Windows On ARM(WoA)。图形有关的部分是给显卡厂商的。SD、WiFi和Audio分别是给对应设备的开发商的。

    比较三次泄露,从源文件数量看,NT4泄露的数量最大,根据国内两位同行发表在《程序员》杂志上的文章,单只Windows 2000部分,就有30915个文件,约有1,350万行代码。SSK泄露次之,大约有5000多个文件。WRK的文件数最少,不到1000。

    从可编译度来看,虽然WRK的源文件个数不多,但是因为微软以lib和DLL形式提供了其它组件,因此是最容易编译和运行起来的。NT4泄露的NT4部分也比较完整,有个开源的OpenNT项目就是使用泄露的NT4代码,已经能够构建出可启动的系统,取名为OpenNT 4.50。

5b8bef62f2ca25edf4df36919ab9e1d5.png

    从技术含量的角度来看,老雷认为这一次的SSK泄露不容低估,一是代码很新,是最新的Windows 10代码。二是包含BootMgr、WinLoad以及内核中很多敏感操作的代码,比如中断/异常管理,多CPU通信,另外非常值得注意的是,在Boot部分中还有一个很多人一直非常关心的NTFS文件系统的引导版本。

    MainSoft泄露发生在2004年2月12日,微软在2月20日,主要内容摘录如下:

REDMOND, Wash., Updated, Feb. 20, 2004 — On Thursday, February 12, Microsoft became aware that portions of the Microsoft Windows 2000 and Windows NT 4.0 source code were illegally made available on the Internet. Subsequent investigation has shown this was not the result of any breach of Microsofts corporate network or internal security, nor is it related to Microsofts Shared Source Initiative or its Government Security Program, which enable our customers and partners, as well as governments, to legally access Microsoft source code. Microsoft reaffirms its support for both the Shared Source Initiative and the Government Security Program.

Microsoft continues to work closely with the U.S. Federal Bureau of Investigation and other law enforcement authorities on this matter. Microsoft source code is both copyrighted and protected as a trade secret. As such, it is illegal to post it, make it available to others, download it or use it. Microsoft will take all appropriate legal actions to protect its intellectual property. These actions include communicating both directly and indirectly with those who possess or seek to possess, post, download or share the illegally disclosed source code.

http://news.microsoft.com/2004/02/12/statement-from-microsoft-regarding-illegal-posting-of-windows-2000-source-code/ 

    NT4泄露的破案过程非常有意思。说起来还是调试技术做了大贡献。当微软和FBI忙着四处找线索而没有结果的时候。有喜欢调试同行在泄露的众多文件中发现了一个崩溃转储文件(core文件),打开分析,显示系统的环境变量,公司名、用户名、用户信箱......所有信息都有了:

PWD=/usr/ms/win2k_sp1/private/security/msv_sspi 

DOMAIN=mainsoft.com 
REPLYTO=eyala@mainsoft.com 
ORGANIZATION=Mainsoft Co. Ltd. 
MWBATCH_SERVER=lod:8000 
MSOFTLM_HOST=@xor 
MAINSOFTLM_HOST=@xor 
XAPPLRESDIR=/il2/users/eyala/app-defaults 
EDITOR=vi 
BASE_LIBPATH=/usr/lib 

    上面信息中的MainSoft是一家软件公司的名字,总部在美国,在以色列设有分支机构。转储信息中的用户全名叫Eyal Alaluf,是分支机构中的一个领导(director)。MainSoft当时是微软的合作伙伴,为微软把某些Windows应用移植到Unix环境上。根据这个转储文件,大家推测出泄露的NT4代码来自Eyal先生使用过的Unix系统。泄露的过程有以下几种可能:

    Eyal本人因为某个原因把自己电脑上的NT4源代码打包,无意之中把一个转储文件也一起打包了,然后这个包通过某种渠道泄露到了互联网。

    某个黑客攻破了Eyal的电脑,把NT4源代码打包,复制,然后上传到互联网,无意中包含了一个转储文件。

    Eyal得罪了某个同事,那个同事从Eyal的电脑上复制了一个转储文件,然后把它和NT4源代码打包,故意泄露出去。

    因为后来的调查结果没有公布,我们不能确定到底是哪一种情况。但是无论如何,微软认定这次泄露和MainSoft有关。之后还是否给它合作机会可想而知。今天MainSoft的原来域名已经无法访问了,据说公司已经改叫其它名字了。

    在泄露事件被公开报道后的第三天,BetaArchive网站在论坛上公布了新的FTP服务器政策,将删除所有源代码包,而且禁止新的上传:

    Due to recent events it has come to attention to us that certain kind of files carry a much higher risk of being misused and misinterpreted. It's one thing to release binaries which requires extensive knowledge to trace and debug, but it's an another when you got the original developer code in front of you in all its glory. Every nuance, every method, every command and call just as the developers intended. This can, for an experienced debugger, lead to a very good understanding of how the developer thought when making the code, the methodology behind it, and for a debugger or coder with malice intent also a very good way of finding exploits within the source code. ...

Therefore we are going to remove all source code compilations from this site. Any distribution of source code will also be prohibited

(https://www.betaarchive.com/forum/viewtopic.php?f=1&t=37300)。

    是啊,源代码包含的信息太丰富了,每个方法,每个变量,每次调用,每一条注释,缩进的方式,命名的规则,都可能让人生发出很多联想。尤其是NT这种本来一直不出闺阁的源代码,希望一窥庐山真面目的人会更多一些。

    当然不同的人,看源代码的目的不同。对于程序员同行来说,写一手好的代码何其重要?NT内核之父David Cutler的代码最值得见识一下,当然华人前辈Shie-Lin Tzong的汇编代码也是经典,就此打住,有些东西不可名言。

***********************************************************

正心诚意,格物致知,以人文情怀审视软件,以软件技术改变人生。

欢迎关注格友公众号

ce8315e427be1fd48c0f252210d3bb38.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值