近日,Gmail被曝出现漏洞:在邮件的“发件人”部分,如果使用错误的标题结构则可能导致攻击者在发件人字段中插入任意内容。
虽然这个漏洞目前还不会造成太大的危害,但是能够添加任意的收件人地址以及发送邮件,也无形之中增加了网络犯罪的可能性。
漏洞来源
该漏洞由软件开发人员Tim Cotten发现,起因是他所在的公司有一名员工上报,表示在自己的邮件中发现了一些并非本人发送的内容,经过查看后发现,这些邮件确实不是通过她的邮箱发送,而是外部账户,但在发送后会被自动归档到这名员工的发件箱中。
研究人员发现,这些邮件的发件地址的标题结构中出现了明显的异常:既有发件人的地址,也有收件人的地址。
对此,开发人员解释说,这个问题出现在发件人位置,发件人字段中包含的收件人地址和其他信息会被gmail的其他app读取并用来过滤或执行相关指令,而外来人员则可通过这个渠道去假冒收件人信息。因此,在发件人中插入其他的文本内容,便会被gmail的过滤机制读取并自动添加发件目标,而效果就像是原发件人发出的一样。
Cotten就此事与谷歌进行了联系,但目前尚未收到答复。但在上报之后,目前再使用相同的方法进行测试,gmail会提示有多个地址而无法发送,也就是说这个漏洞已经被修复了。
但研究人员是用另一种方式尝试发件之后发现,类似的问题仍然存在。
如果攻击者在发送邮件界面,在发件人字段中直接填写收件人的地址时,gmail就会弹出不正确的提示。首先,发送的邮件会到达收件箱,同时,在已发送界面中同样会多处一个新邮件,这很容易会引起人的注意。
攻击者的福利
当然,漏洞的存在就意味着风险的存在,邮件攻击一向是网络犯罪中的热门选项,而gmail的漏洞,使得攻击者可以在标题中添加任何电子邮件的地址,这就可能会具备相当高的欺骗性。
Cotten通过电子邮件演示了漏洞的具体情况,也向人们展示了其可用性:收件人可以看到不同于发件人的来源,但发件人并不知情。
上图的实例显示了邮件可与任意地址相关联。虽然用于诈骗来说,这种方法还比较低端,但也许用在网络钓鱼方面会是个不错的选择,毕竟具有欺骗性的邮件来源很容易让人们忽视风险。
一个bug引发的历史遗留问题
Cotten对漏洞的公开披露引发了大量针对gmail的舆论,同时还引起了针对另一个gmail漏洞的讨论。该漏洞虽然已被修复,但有人指出,在向谷歌上报了19个月之后,在Android系统中仍然存在类似的问题。
由于对输入字段的检查不够充分,因此可以使用两个电子邮件的地址创建“mailto:URL”的方法,一个填写接收者名称,另一个则填写实际的收信地址,如下所示:
mailto:“support@paypal.com”
如果将该方法真正用于网络诈骗中,将收件人的地址填写成攻击者的收件箱,那么受害者只能看到后面的mailto的地址,即“xxx@xxx.com”这一部分。具体如何利用,一个简单的栗子,只需要把后面的链接换成恶意邮件就行了。