攻击者如何掩盖 GitHub 拉取请求中的恶意代码更改?

信息安全 欺骗 github
2021-08-30 05:36:03

在 GitHub(或任何其他平台上的等效平台)上查看拉取请求时,Web 界面会显示更改的差异供您查看。

审查差异显然容易受到人为错误的影响,因为恶意更改可能会被潜入(请参阅mortenson/pr-sneaking)。

是否有任何混淆技术无法被人类在 GitHub Web 界面中进行彻底的代码审查合理地发现?

一个例子是同形文字攻击,它可能使一系列字符在人类看来是一个值,而实际上是另一个值。

差异引擎或输出显示中也可能存在漏洞/错误,可用于隐藏或掩盖拉取请求中的恶意代码。

为了澄清,我不是在询问人类准确审查代码更改的能力 - 我是在询问潜在的欺骗/屏蔽漏洞,攻击者可能利用这些漏洞来欺骗人类接受看似合法的拉取请求。

1个回答

差异生成过程中的错误不太可能出现。VCS 系统的几乎每个 Web 界面实际上都会调用 VCS 工具本身来生成差异。几乎,任何可能存在的错误都很可能很快被发现并修复(它正在生成面向用户的数据,因此任何错误都具有很高的可见性)。

鉴于此,您的选择相当于:

  • 您已经提到过同形文字攻击。我认为这些可能性不大,因为它们依赖于用于渲染的字体,并且它们必须在大多数编程语言中的数据文字中才能不导致语法错误,这反过来又严重限制了哪些类型的你可以介绍的错误。
  • 修改 repo 中的二进制文件。在处理二进制数据时,大多数 VCS 系统只会告诉您文件已更改,而不是如何更改,因此除了下载和使用修改后的文件外,在 PR 中无需查看更改。这是理智的人不对二进制数据使用版本控制的两个原因之一,另一个是它在有效处理它方面确实很糟糕。因为没有多少人这样做,所以它不太可能成为攻击媒介。
  • 简单的隐写术。这本质上依赖于审阅者不注意或不理解他们正在审阅的代码。两种明显的方法是包括一个小的更改,在具有大量更改的几个部分的中间引入错误,或者利用每行显示更改的事实。