Firefox 46解决安全问题,改善性能
jopen 9年前
<p style="text-align: center;"><img alt="" src="https://simg.open-open.com/show/e51a19e60ae952dd18eff1dd6436cdcf.jpg" /></p> <p>Mozilla刚刚<a href="/misc/goto?guid=4958990169053577366">发布</a>了Firefox 46,该版本修复了多个严重漏洞,并改善了JavaScript JIT编译器的安全性。</p> <p>安全和性能改进是Firefox 46最大的变化。该版本共修复10个安全漏洞,其中有1个严重漏洞,4个高危漏洞,其余6个为中等严重程度的漏洞。</p> <p>这个严重漏洞与Mozilla所称的<a href="/misc/goto?guid=4958990169162745947">其他内存安全隐患</a>有关,“某些情况导致的内存错误”证明了该Bug的存在,Mozilla团队称,“付出足够努力”就能利用它执行任何代码。</p> <p>其他高危漏洞则与<a href="/misc/goto?guid=4958990169267064272">Firefox for Android有关</a>,在这些漏洞的影响下,攻击者有可能通过移动设备的握持方向数据(Orientation data)和动作传感器推测出触屏上的操作。Mozilla的报告认为,如果不修复这个问题可能危及用户隐私,并有可能暴露“随同用户其他活动输入的PIN码”。</p> <p>该版本中新增了有关JavaScript Just In Time(JIT)编译器的重要更新。在<a href="/misc/goto?guid=4958977006739790999">Firefox已启用W^X JIT代码这篇博客</a>中,Mozilla软件工程师<a href="/misc/goto?guid=4958990169388127666">Jan de Mooij</a>称:</p> <blockquote> <p>几乎所有JIT(包括Firefox目前使用的)都会使用RWX(读-写-执行)权限为代码分配内存页面。JIT通常需要修补代码(例如用于内联缓存(Inline cache)),如果内存可写,就能在不影响性能的情况下做到这一点。</p> </blockquote> <p>然而de Mooij认为,这种做法会造成内存出错和安全隐患,RWX页面的存在使得Bug更容易被利用。在Firefox 46中,JIT代码页默认为不可写。</p> <p>对于这个改动,de Mooij也承认W^X并不“完美”,也不是“能解决任何安全问题的万全之策”,但依然坚信这个改动可以“让某些攻击更难实施...只有少量(相对简短的)代码路径可以访问RW代码,并且可读写的时间窗更短”。</p> <p>为了改善稳定性和性能,Mozilla还在Firefox 46中修复了多个与<a href="https://bugzilla.mozilla.org/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&columnlist=component,changeddate,priority,cf_rank,assigned_to,bug_status,short_short_desc&component=Audio/Video%3a%20cubeb&component=Audio/Video%3a%20GMP&component=Audio/Video%3a%20MediaStreamGraph&component=Audio/Video%3a%20Recording&component=WebRTC&component=WebRTC%3a%20Audio/Video&component=WebRTC%3a%20Networking&component=WebRTC%3a%20Signaling&product=Core&resolution=FIXED&target_milestone=mozilla46">WebRTC</a>有关的问题。</p> <p>针对Android上的Firefox用户,Firefox 46也提供了一些更新。例如通知信息中列出的<a href="/misc/goto?guid=4958990169584527990">后台打开的标签页</a>现在已经可以显示标签页的URL,自动补全功能可补全<a href="/misc/goto?guid=4958990169689527282">默认域名</a>,并且Firefox现在可以在运行时<a href="/misc/goto?guid=4958990169782975131">申请权限</a>。Firefox 46取消了对Android for Honeycomb的支持,并已停止支持Firefox Sync 1.1,开始推荐用户使用火狐账号(Firefox Accounts)。</p> <p>针对Linux/GNU用户,Firefox 46提供了大家期待已久的针对GNOME和其他桌面环境的GTK3集成。</p> <p>Firefox 46还为开发者提供了一个名为<a href="/misc/goto?guid=4958990169890121641">Dominators</a>的内存工具新视图。</p> <p><img src="https://simg.open-open.com/show/1a00f9ea20a113341039d1a66dfc2345.png" alt="Firefox 46解决安全问题,改善性能" width="1800" height="514" /></p> <p>Dominators树“有助于帮您理解自己网站中为不同对象分配的‘保留大小’”,可显示保留内存最多的节点。</p> <p>借此可以了解“节点内存保留大小的字节数或总占比”,“节点Shallow大小的字节数或总占比”,以及“节点的名称和内存地址”。</p> <p>在Firefox 47中,<a href="/misc/goto?guid=4958990169981004175">Retaining Paths窗格</a>可以为单一节点显示5个最短保留路径(Retaining path),这样就可以看到阻止特定节点被垃圾回收的所有节点。开发者可以通过保留路径了解哪些对象保留了对已泄漏对象的引用。</p> <p>Firefox 46的完整改进清单可参阅<a href="/misc/goto?guid=4958990169053577366">发布说明</a>。</p> <p>来源:<a href="http://www.infoq.com/cn/news/2016/05/Firefox-46-JIT-security?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=news">InfoQ</a></p>