Tag Archives: 安全

编译加速、分布式版本管理和IE7漏洞

  pFind代码慢慢变得庞大,每次make clean再make all,等待越来越漫长:喝咖啡、收邮件、伸懒腰、作体操、聊八卦……因此这两天在考虑引入distcc和ccache。

  总踅摸着用python写个make的替代品,今天刚刚接触到scons。不好意思,穿越了。

  一查Google Reader的starred items,发现很早就标过一篇BLOG,解释distcc、ccache和scons如何联用的。

  所以一线体会很重要,没有切身接触到实际问题,对技术方案就不会那么敏感。

  另一个例子:Eclipse CDT的团队负责人Doug Schaefer的BLOG上刚刚发了一篇Time for Distributed Source Control is Now

  好几年前Linus就在谈论内核代码如何利用Git进行分布式版本管理(Google Tech Talk视频)。但我们这里SVN用得还行,相安无事,感觉离那些太空武器还很遥远。然而最近一段时间,团队越来越大,逐渐分成几个方向,出现异地开发(比如到生物学家这里常驻),问题就多起来。

  回头再查,云风的BLOG早把我们面临的问题总结出来了

  若干年前我们淘汰了加锁的协作编码方式,到今天是时候再做一些改变了。或许,分布式的版本控制工具才是未来的发展方向。我想总有一天,CVS/SVN 这类集中式版本控制工具会被淘汰掉的。

  说说我的困扰吧,可能很多开发小组也遇到过。

  1. 我们禁止提交不能编译通过的代码,尽量不提交不能测试通过的代码。结果,对于很复杂的模块,有人几乎一个月都没提交过一次。他总是觉得程序还不太成熟,但几经修改的代码其实从来没有作版本控制。

  2. 有些模块由两个人合作编写,关系非常紧凑。有时候需要在两人之间交换一些代码,为了方便,大家通过代码仓库中转,结果在仓库中留下许多未完成的版本。

  3. 代码被用笔记本带回家,结果在家完成的部分无处可以提交。(为了安全,我们的代码仓库不能从外网访问)

  4. 某人写了一个模块,总是有 bug 没有修改完,而不敢提交。这个时候,另一个人希望协助他找问题,却没有合适的途径 share 那段完成了一半的模块。跑过去 XP 一下么?天哪,为什么我们这里每个人用的编辑器都不一样,还都爱用些特别个性的配色方案呢?

  当然也不是100%同意他的观点。比如第4条,对于我们来说,双人编程和Code Review是很频繁的。

  说到穿越、火星、反应慢,最近还有件事。

  一直患有打补丁强迫症,以前都第一时间升级Windows补丁。可是这次的IE7严重漏洞,直到昨天正在跑实验的机器被Windows Update强制重启后才注意到(微软太霸道,跑了两天的实验又得重新来过)。用惯Ubuntu以后就很少启动Windows,就算启动,一般也用Firefox浏览器。

  搜索了一下,Yahoo上有一篇:Chinese Team Mistakenly Released Unpatched IE7 Exploit。找到文中所提的中国的KnownSec team的BLOG,他们是这么解释的:

  鉴于此漏洞的危险性,作为微软的安全服务提供商,我们已第一时间发布公告,并提交给美国微软相关部门,这里不再公布具体细节。

  KnownSec team于近期捕获利用IE7一个内存越界的漏洞进行攻击的恶意代码。此漏洞于11月在小范围内泄露,于12月9日前后才完全出售流通,有人制出网马生成器,相信会在短期内十分流行。

  由于最初捕获时,在网络上发现了网马及代码帖子,误以为是已修补的漏洞,不是0DAY,便在内部共享粘贴,导致代码散布。这是我们的失误:(