G.O.S.S.I.P 阅读推荐 2023-11-29 GitHub的一种关怀

admin 2023年11月30日09:38:20评论11 views字数 2265阅读7分33秒阅读模式

2023年的ACM CCS正在哥本哈根如火如荼地进行,今天我们介绍一篇CCS 2023的会议论文The Effectiveness of Security Interventions on GitHub,讨论了GitHub对于开发者的一种关怀。

G.O.S.S.I.P 阅读推荐 2023-11-29 GitHub的一种关怀

GitHub从2017年开始引入了所谓的security intervention机制,也就是在开发者往GitHub提交代码以后,利用代码安全扫描工具主动介入,分析其中可能存在的问题和风险,如果发现存在问题或风险,就警告开发者(是否处理全凭开发者心情)。具体地,security intervention机制分为三种:

  1. 安全告警(security alert):检查代码中是否引入了已知的漏洞,并给出推荐的修复建议;

  2. 安全更新(security update):检查有漏洞的代码是否存在已知的安全问题和相关修复,如果存在,就自动生成一个pull request来提示开发者更新代码;

  3. 代码扫描(code scanning):通过CodeQL来扫描代码中和CWE相关的一些代码缺陷(注意这个选项不像前面两项是默认开启的,而是可选的)

然而,这种“干预”手段并不一定讨人喜欢,尤其是它可能让开发者增加了更多负担。而且,对于代码进行安全分析能够提升系统安全这个结论更不是所有人都认可的,就像世界上有许多人对疫苗都能质疑,也觉得全球变暖跟他们浪费资源没有半毛钱关系(“富人坐一趟飞机抵过我一辈子碳排放”),为了更加科学地确认GitHub引入的三种security intervention机制的功效,本文作者开展调查,但是遇到了一些困难,也是在社会科学调查研究里面经常会遇到的困难——现实情况太复杂、变量太多,也没法做对照组实验,所以很多所谓的“规律”根本不靠谱(比如我的一个朋友一直相信能找到股市的因果规律,然后投入了买车的钱,最后只能买葱)。举个例子,有人声称学历越高(大脑越聪明)的人越不容易得阿尔茨海默病,但是有可能这类人有较好的教育背景,对自己身体管理更严格,因此可能是后天的努力而非先天的基因导致他们更不容易患病。如果想要逻辑严密地对因果关系进行考察,能不能让高学历的人去按照普通学历的人那样生活,然后再来考察患病率呢?

本文研究的问题也面临同样的困境,即如果要严格考察到底security intervention机制是否生效,其实应该随机将用户/repo分为“部署security intervention机制”和“不使用security intervention机制”两组,然后考察两边的差异性,但是这种方法可能导致那些被分配到“不使用security intervention机制”组的用户的代码中引入更多安全问题,GitHub也不是一个安全研究机构,它只是想对大家好,于是只能让安全研究人员去费时费力地想办法找到更多的信息来进行因果推断了。

作者对41097个GitHub repo引入了统计学分析中的time series analysis也就是时间序列分析方法,评估了在安全干预机制引入后,和安全问题相关的commit的情况,从而推断出安全告警/安全更新机制和代码安全修复之间的因果关系。除此之外,作者还分析了包含491525个repo快照(主要是JS和Python代码)的历史数据集,观察它们在代码扫描机制执行前后的情况,进而评估代码扫描机制的作用。在进行完分析后,作者观察到了安全告警机制的明显积极影响——人工进行代码安全修订的次数有了149%的增幅;而安全更新机制额外带来了超过32%的代码安全修订;代码扫描机制对安全的影响则中规中矩,针对JavaScript代码,帮助减少了约2%的CWE-079(XSS)相关的缺陷代码。

论文里介绍了一个很有意思的项目——githut,它和我们熟知的TIOBE编程语言排行榜有点像,是通过统计GayHub所有项目的编程语言使用数量来评估谁是世界上最好的programming language,可以看到PHP现在已经式微了!

https://madnight.github.io/githut/

G.O.S.S.I.P 阅读推荐 2023-11-29 GitHub的一种关怀

前面我们说到,尽管作者分析中收集了大量的数据,但是进行因果分析(causal analysis)时,并没有办法进行对照分析,因此作者在这里使用了counterfactual prediction(怎么翻译呢?反事实因果预测?)这种技术,也就是说,在没法启动两条不同分支的情况下,通过假设某种前提不存在(例如在本文中,假定某种安全干预机制不存在),然后进行预测,看后面会发生什么事情,当然这个预测方法在我们安全研究领域用得不多,大家可能需要去社科领域补补课才能搞清楚作者的方法,我们在这里也不多介绍了(原谅编辑部的知识储备太匮乏)。不过作者还介绍了一个GitHub项目,可以来画出好看的图(我们今天这个阅读推荐怎么变成了GitHub项目推荐了)。

https://github.com/tcassou/causal_impact

G.O.S.S.I.P 阅读推荐 2023-11-29 GitHub的一种关怀

G.O.S.S.I.P 阅读推荐 2023-11-29 GitHub的一种关怀

G.O.S.S.I.P 阅读推荐 2023-11-29 GitHub的一种关怀

作者在最后也给大家(特别是代码管理者)提出了建议:

  1. 安全干预机制是必要的,建议默认开启。

  2. 安全干预机制要和源码管理无缝集成,方便使用。

  3. 安全干预机制要给用户提供如何修复代码的建议。

  4. 安全干预机制最好能和LLM结合起来,自动化生成patch,为开发者提供更好的帮助。


论文:https://dl.acm.org/doi/10.1145/3576915.3623174


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-11-29 GitHub的一种关怀

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年11月30日09:38:20
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2023-11-29 GitHub的一种关怀https://cn-sec.com/archives/2254170.html

发表评论

匿名网友 填写信息