首页 科技内容详情
登1登2登3代理(www.9cx.net):深入考察与UI相关的平安破绽(下)

登1登2登3代理(www.9cx.net):深入考察与UI相关的平安破绽(下)

分类:科技

网址:

反馈错误: 联络客服

点击直达

Allbet Gmaing官网

欢迎进入Allbet Gmaing官网(www.aLLbetgame.us),欧博官网是欧博集团的官方网站。欧博官网开放Allbet注册、Allbe代理、Allbet电脑客户端、Allbet手机版下载等业务。

,

在本文中,我们将与读者一道,深入考察浏览器中与UI相关的平安破绽。

《深入考察与UI相关的平安破绽(上)》

提取私人信息

在先容这个破绽之前,让我们先领会一下占位符。众所周知,当我们与自动填充建议的用户界面互动时,若是将鼠标悬停在每个建议的条目上,都市发生一些有趣的事情。一个占位符值将被放置在我们试图填写的任何输入中。不外,这个占位符的值不应该允许网页随意接见:只有当用户明确选择了他们以为合适的条目后,浏览器才气读取自动填凑数据。除此之外,占位符将被设置为所有具有匹配名称的输入。这意味着信用卡号码、地址、用户名、全名等都可以被提取出来。

我第一次意识到这个玄妙的平安问题是由于这个破绽(作者Mark Amery),它使用CSS/字体技巧来提取占位符数据。

现在回到这个破绽自己。在试图找出我之条件到的问题(关于浏览器用户界面的伪造)的解决方案时,我有时发现了一个有趣的行为。在研究问题(2)时,我在自动填充泛起时切换了输入的类型,效果导致自动填充的用户界面一直存在。在这个例子中,我所做的不是改变输入类型,而是在第一个自动填充建议的用户界面泛起时,让另一个自动填充用户界面泛起:

1.用户与一个输入元素“A”互动

2.自动填充建议泛起在输入元素“A”上

3.让自动填充建议泛起在输入元素“B”上

4.从文档中删除输入元素“B”。

这样一来,最后剩下的只有输入元素“A”(包罗来自自动填充建议的占位符值),而现实的建议用户界面并不存在。这对攻击者来说是好事,由于现在他们有充实的时间来提取数据,而以前,一旦自动填充建议消逝,占位符值就会被删除。

下面是针对这一特定行为的小型PoC:

hit down arrow
< Br >< br >< form id="qsub" >
    < input id="qa" name=email placeholder="tester" type=text autocomplete=email >< /form >< form name="addr1.1" id="paymentForm" action="" method="post" >
    < input type="text" id="nameInput" name="name" autofocus >< /form >< script >
    nameInput.onkeydown = (e) = > {
        setTimeout((g) = > {
            qa.click();
            qa.focus();
            document.execCommand("insertText", false, "\u0000");
            qa.remove();
        }, 215);
    };
< /script >

我发现有两种方式可以提取这些数据并将其露出在网页上,详细如下所示。

CVE-2021-21177:拖放占位符的值

一个有趣的函数是document.execCommand('selectAll'),其作用就是选择一个可编辑文档中的所有文本(我们可以通过contenteditable=true属性将所有元素设置为可编辑)。我注重到,当占位符停留在输入中时,若是执行这个下令,它将被选中。不够,由于我们无法自动复制和粘贴所选的值(没有剪贴板使用权限),以是,我使用了另一种方式:拖放!

以是,破绽行使历程变为:

1.让用户点击页面

2.触发占位符持久性故障

3.诱使用户拖放页面的一部门

前面,我们已经先容了完成义务(1)的方式,对于义务(2),我的方式是放置一个冒充iframe的图片,当用户试图使用不存在的转动条向下转动时,他们会在不知不觉中拖放他们的自动填充占位符值。

演示视频:

https://youtu.be/UzvHIX--iTc

基于拖放方式的原始PoC可以从这里找到。

在这个破绽的相关讲述中,最初的讨论似乎是为了防止拖放适用于占位符的值。现实上,已经有一个CSS可以做到这一点“ -webkit-user-select: none;”。但这还不够,主要问题是自动填凑数据的持久性。

现实上,拖放已经是一种经常遇到的用户互动了,以是我想看看是否可以用一个更好的提取占位数据的方式来取代它。CSS和字体似乎基本不适用于占位符数据,以是,经由一番折腾,我最终发现了一个差其余方式。

CVE-2021-21177:使用window.find()提取占位符的值

这个函数一泛起在我的脑海中,我就对它抱有很大的期望,效果确实云云。

众所周知,window.find()是一个异常有用的API,网页通过它对自身的内容举行搜索。假设我们有一个只有Hello World文本的文档,那么window.find("Hello")==true,window.find("World")==true,固然window.find("doesntexist")==false。

现在,完整的破绽行使历程如下所示:

1.用户按下向下箭头

2.触发占位符故障

3.使用window.find提取占位符

这意味着,用户只需要在一个恶意的页面上按下偏向键,我就能提取许多私人信息,其中最危险的是信用卡信息。

演示视频:

https://youtu.be/hJWXMxcxSdg

原始PoC可以从这里找到。

CVE-2021-21216:隐藏自动填充建议的用户界面

我们知道,有一些UI应该始终显示给用户。其中,最受迎接的是当我们进入全屏时泛起的“You are now in fullscreen”的信息。由于进入全屏后,由于浏览器的头部会消逝,因此,攻击者可以容易通过伪造的信息来取代它来诱骗用户的。

我清晰地熟悉到,自动填充建议的用户界面和全屏用户界面一样主要。这是由于,在它从未显示出来的情形下,攻击者就可以让用户按下某些键盘按钮,并神不知鬼不觉地用自动填充值来填充隐藏的输入元素。关于这一点,我也是从一个破绽行使代码中融会到的:响应的PoC是一个游戏,以获得提取数据所需的用户手势。

使用一个类似于之前讨论的内陆浏览器伪造的破绽,我注重到:可以让自动填充建议的UI“泛起”在用户屏幕之外。因此,换句话说,攻击者可以让用户看不到自动填充的用户界面,只管该界面确实存在。

行使这个破绽的方式异常简朴:

1.诱骗用户接见恶意页面,想法让他们点击向下的箭头。

2.让隐藏的自动填充泛起在屏幕外的某个地方,并选择第一个建议的效果,随后用占位符的值填充多个隐藏的输入。

3.让恶意页面诱导用户点击“Enter”键。

这样的话,就能让用户会在不知不觉中用自动填凑数据填写一个隐藏的表单。

演示视频:

https://youtu.be/ZtXpmxyej0g

原始PoC可以从这里找到。

自动挖掘UI平安破绽

我开发了一个审查UI平安问题的工具,固然,这只能算是我学习Fuzzer事情原理的副产物,由于我在加入现在团队之前,从未真正使用过Fuzzer。这是一个异常简陋的工具,险些都不能算作Fuzzer,之以是这么说,是由于Fuzzer通常能够发现内存问题。通常来说,浏览器的溃逃是泛起平安问题的明确信号,但检测用户界面问题却没有这样明确的信号。以是,我为该工具设置了一个模式,以考察的用户可以手动选择某个器械看起来是不是很新鲜。

登1登2登3代理

登1登2登3代理(www.9cx.net)实时更新发布最新最快最有效的登1登2登3代理网址,包括新2登1登2登3代理手机网址,新2登1登2登3代理备用网址,皇冠登1登2登3代理最新网址,新2登1登2登3代理足球网址,新2网址大全。

效果是,我既能发现内存问题的破绽,也能发现与UI有关的设计缺陷。在继续之前,让我先先容一下这个简朴的自动测试器是若何事情的。

使用通俗Web内容可挪用的UI列表及其响应的PoC,我确立了一个测试用例,以随机的顺序随机地显示这些用户界面。当测试用例运行时,我就举行某种导航操作:

        -在历史中导航

        -导航到一个新标签

        -打开一个弹出式窗口

        -在一个iframe中运行测试案例 + (可选)出现两个按钮,看看是否泛起某些新鲜的器械

        -若是泛起:保留测试用例,并最先新的迭代

        -若是没有泛起:直接最先新的迭代

这个实验确实找到了一些有趣的效果,详细如下所示。

smartscreen:FlyoutShower中的堆使用后释放破绽(仅限Edge浏览器)

这个内部破绽是我最先发现的,该破绽与Smartscreen有关。Smartscreen是Edge浏览器特有的一种功效,相当于谷歌的平安浏览功效:举行响应的检查,以确保下载的文件和接见的网站没有被符号为恶意的。

然而,它们的区别在于Edge处置被符号为潜在网络钓鱼网站的网站的详细方式。若是我们使用Edge浏览器导航到这种类型的网站,就会看到:

因此,这自然成为我实现自动化的UI挪用下令之一。不久后,我发现Edge溃逃了,原来是浏览器历程崩了。

< html >
 
< body >
    < script >
        const blob = new Blob(
            [
                `< iframe id="qss"
    src="https://nav.smartscreen.msft.net/other/areyousure.html"
    target="_blank" rel="noreferrer noopener" >< /iframe >`,
            ], {
                type: "text/html"
            }
        );
        var test = window.open(window.URL.createObjectURL(blob));
        var blank = window.open("about:blank");
        setTimeout(function() {
            blank.close();
            test.close();
        }, 1400);
    < /script >< /body >
 
< /html >

之以是泛起这种情形,是由于SmartScreen UI没有平安地处置指向WebContents工具的指针所致。在Chromium和Edge浏览器中,WebContents工具是直接与标签的寿命挂钩的。由于标签可以自行关闭,思量到它们有一个开启器,我们可以滥用挪用这个用户界面的自行关闭的标签,并可靠地令其溃逃。

使用这种手艺,我们在Edge和上游浏览器中还发现了其他一些与UI相关的破绽,这些破绽要么还没有被完全修复,要么没有那么有趣,因此,这里就不先容了。

CVE-2020-26953:绕过Firefox中的全屏UI

作为BVR团队的一员,我们被激励对其他浏览器中举行相关的平安测试。虽然Chromium的代码库与Firefox差异,但两者可能具有相同的设计缺陷。这样做的另一个利益是:可以领会Firefox是若那边理某种行为的,并从中获得启示。 

在一个周末,我决议修改自己的工具,看看对Firefox的效果若何,效果发现一个UI设计缺陷不停泛起,但并不稳固。这个破绽会导致浏览器进入全屏时,通知用户进入全屏的UI完全不能见。

最初讲述的PoC中有一个谜团:似乎只有在确立websocket毗邻并失败的情形下,它才会起作用。不仅云云,你还必须不停地把它改变到另一个无效的位置(假设是为了绕过任何缓存)。

原始PoC可以从这里找到。

一位Mozilla员工(Gijs)指出,PoC中神秘的websocket部门可以用卸载处置程序中的console.log()挪用取代。这个转变对我来说是个谜,console.log与全屏UI显示与否有什么关系?若是您想领会其中的缘由,请参阅Bugzilla的相关讲述。

根据上述讲述给出的建议,我用卸载处置程序替换了websocket毗邻,还添加了一个blob导航,而不是导航到统一个页面,最终获得了一个更可靠的PoC。

关于修订版的PoC,可以从这里找到。

演示视频:

https://youtu.be/REAZZ1BvRys

对我来说,这具有很主要的意义,由于这个破绽是以半自动的方式发现的,从而让我看到了自动挖掘逻辑/设计破绽的潜力。

与标签相关的平安破绽

标签是用户界面的一部门,可以说是浏览器中对照庞大的用户界面之一。因此,当我注重到标签页中的一个平安破绽被修复时,我以为这个代码中一定另有更多的破绽尚未发现。例如,通过标签,我们可以将它们添加到组中,举行拖放,将一个窗口中的标签转换成另一个窗口中的标签,反之亦然,等等。正如之条件到的,标签是可以自行关闭(若是它们有一个开启器的话)的,这意味着网页内容可以控制标签的寿命。

我所做的事情,只是确立了一个脚原本打开标签,而这些标签会自行关闭;然后,在这个延续的打开和关闭标签的历程中,对标签的差异功效举行了响应的处置。

以下平安破绽已被上报并随后获得了修复。

CVE-2021-21197:TabStrip的堆缓冲区溢出

这里被行使的主要标签功效是将标签拖放到自己的窗口中的能力。当一个标签在拖动另一个标签到自己的窗口时关闭,就会发生溃逃。

相关的PoC可以从这里找到。

演示视频:

https://youtu.be/vQZhcXGWdt4

CVE-2021-21192:标签组中的堆缓冲区溢露马脚

这里再次行使了拖放手艺,只不外,这次拖动的不是一个通俗的标签,而是在标签关闭时将标签组拖出并拖入主窗口。

相关的PoC可以从这里找到。

演示视频:

https://youtu.be/TxNaX0pon0o

CVE-2021-21154:页签列(Tab Strip)中的堆缓冲区溢出

您猜对没错:在一些标签关闭时拖动一组标签会导致这种溃逃。在这个例子中,用到了通过按住shift键+选择局限来选择标签的主要标签功效。

相关的PoC可以从这里找到。 

演示视频:

https://youtu.be/5XjsZrSWbfQ

CVE-2021-21180:标签搜索功效中UAF破绽

该破绽与一个相对较新的功效有关,该功效使用户能够搜索自己的流动标签。我发现,这个新的标签搜索用户界面现实上就是一个位于chrome://tab-search.top-chrome/的WebUI。

 

在这个标签搜索用户界面中,我们可以关闭标签,然则,当我们在自己的窗口中打开“chrome://tab-search.top-chrome/”,然后试图使用标签搜索用户界面的关闭机制来关闭自己时,就会触发UAF破绽。

演示视频:

https://youtu.be/DoejrSLb6vY

小结

我们希望本文能够辅助读者领会UI平安的相关知识,正如您所看到的,这并不是一个单纯的逻辑/设计问题,由于有时还会掺杂内存损坏问题。另外,UI平安的审计事情,是很难实现自动化和模糊处置的,纵然是围绕着标签的内存问题也需要举行拖放操作,然则险些没有Fuzzer会模拟这些操作。由此看起来,UI平安是自动化破绽挖掘领域中的一块童贞地,一旦获得突破,将曝出更多的平安破绽。

本文翻译自:https://microsoftedge.github.io/edgevr/posts/ui-security-thinking-outside-the-viewport/

发布评论