一位用户最近黑掉了GitHub官方托管的Ruby on Rails代码存储库和漏洞追踪器,目的是告诉Rails开发团队他此前报告的漏洞有多严重。
Ruby on Rails,通常被简称为Rails,是Ruby编程语言中越来越流行的一种Web应用开发架构,其目标是让程序员把重心放在应用创建上而不是仅仅了解后台所发生的事情。
使用最广泛的Rails Web服务时GitHub。这是一个大型代码托管和协作型开发平台,该平台还托管了Ruby on Rails项目的官方代码存储库和漏洞追踪器。
上周四,一位名叫Egor Homakov的俄罗斯用户报告了一个漏洞,黑客可利用此漏洞从Web表单将未验证数据插入Rails应用数据库,就像是SQL注入一样。
这一安全问题源于一个名为mass assignment的Rails特性,如果有安全隐患的话,那么此特性可能被滥用。虽然几年前就被告知此特性有被滥用的可能性,但是Rails开发团队认为应由应用程序员来限制哪项属性可被更改。
该问题的实质就是Rails程序员是否该将此性能列入黑名单或白名单;他们是否应该允许所有属性被默认修改,并期望程序员将比较敏感的项目列入黑名单呢?或者他们应该默认拦截所有属性,在经过安全方面的权衡后,再让程序员启用他们需要的属性。
遗憾的是,过去的经验告诉我们把安全问题的权衡交给用户通常不是个好主意,因为这会导致用户安装大量不安全的应用,Homakov称这是过去几年里Rails mass assignment所导致的结果。
在未能说服Rails团队的情况下,Homakov决定亲自做演示,以证明该漏洞不仅存在于GitHub中,从而令Rails团队强制部署必要的限制。
上周日,Homakov利用GitHub上的这个漏洞在Ruby on Rails漏洞追踪器上创建一个模糊输入。他替换了一名程序员进入GitHub数据库的公共密钥后获取了进入官方Rails代码存储库的权限。
上周日,GitHub程序员Tom Preston Werner在自己的博客中写道:“上午8:49,一名GitHub用户利用公共密钥更新表单中的漏洞将自己的公共密钥添加到了rails中,于是他可以将新文件推入该项目中,作为证明此漏洞存在的演示。”
GitHub用不到一小时的时间修复了该漏洞,并暂时停用了Homakov的账号以作调查。如果GitHub团队证明其意图并非恶意,晚些时候会恢复其账号的使用。
“在对此次攻击展开调查的同时,我们也对GitHub代码库展开了一次全面审核,以确保不会再出现类似的漏洞,”Preston-Werner说。“此次审核仍在继续,我本人也要确保我们能有一种长期性的策略防止此类漏洞重演。”
这次事件吸引了众多目光,Rails程序员现在也比以前更愿意就此问题进行讨论并找到相应的解决方案。尽管如此,这个漏洞已经获得广泛的关注度,而针对不安全Rails应用的攻击威胁也增加了。