iOS 系统爆 Bug!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/csdnnews/article/details/79736789

点击上方“CSDN”,选择“置顶公众号”

关键时刻,第一时间送达!

在昨天,苹果刚刚开完春季发布会,我们也刚刚分享过百万 Android 用户受感染,彼时还有用户留言道“还好用的 iOS”,然而万万没想到一语成谶,今天 iOS 11 同样跳了二维码识别的坑。

640?wx_fmt=jpeg&wxfrom=5&wx_lazy=1

作者 | 言则

责编 | 沭七

闭源系统、且由苹果完全掌握硬件的 iOS 一直被公认为安全系数极高,但是谁说“闭源”生态就不会中招?总有一些招数让你避无可避。据外媒 9to5Mac 近日报道,iOS 系统被曝出一个新漏洞,在用系统的相机应用扫描二维码时会自动提示“跳转网页”,系统有可能在用户不知情的情况下将用户引向恶意网站——这可比 Android 系统还要下载二维码识别器方便得多。

从 iOS 11 开始,iPhone 用户使用自带的相机应用扫描二维码时,即可读取其中的代码并进行相应操作。对于嵌入式网站 URL,iOS 也会显示链接地址并引导用户点击访问......但是,扫描出来的网页链接很可能就是一个坑。

这个漏洞是由 Infosec 安全研究人员 Roman Mueller 发现的。他表示,在用系统自带的相机扫描二维码之后,屏幕上可能会出现一个链接,如果用户点击了这个链接,则会被引导至恶意网站之上。

Mueller 演示了这个漏洞的工作方式:

  • 在安装了 iOS 11.2.1 的手机上,用系统相机扫描一个二维码之后,屏幕上会出现如下提示:在 Safari 中打开“facebook.com";

  • 但是如果你点击了这个链接,它所打开的却并不是 Facebook,而是https://infosec.rm-it.de/。

所有扫描了这个二维码的用户都会收到即将访问 Facebook 的提示,但是实际上打开的却是 Infosec 的网站。而实现这一目的所需做的就是以这种格式嵌入一个 URL:

https://开头XXX\ @ facebook.com:443@infosec.rm-it.de/

笔者按照 Mueller 所说也进行了一把实操,果然自动跳出了如下内容:

640?wx_fmt=jpeg

图中的二维码,你也可以自己尝试一下

可想而知,如果这个漏洞被恶意网站或是恶意程序所利用的话,毫无疑问将会带来严重的后果。

有趣的是,Mueller 在去年 12 月 23 日就已经向苹果提交了这个漏洞,但是截止到 2018 年 3 月 24 日,也就是最新版本 iOS 升级放出之后的数天,这个 bug 依然没有被修复。

自从 iOS 11 正式版推出以来,各种小毛病就没有断过,苹果所做的也只是哪里有问题就发小更新来解决——长此下来,用户体验又怎么会跟得上呢?

————— 推荐阅读 —————

点击图片即可阅读

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=png640?wx_fmt=gif

展开阅读全文

爆一个logcat工具的小小bug

12-21

最近在做android平台的自动测试工具,所以读了一些android开发工具的源码,今天不经意间发现了一个小小的BUG,对于一个新手来说,有点沾沾自喜阿,所以上来小小的炫耀下:rn 在读logcat工具源码的时候,在com.android.ddmuilib.logcat包的logpanel.java文件下的deleteFilter函数的时候,发现存在一处小小的逻辑错误,代码如下:rn [code=Java]public void deleteFilter() rn synchronized (mBuffer) rn if (mCurrentFilter != null && mCurrentFilter != mDefaultFilter) rn // remove the filter from the listrn removeFilterFromArray(mCurrentFilter);rn mCurrentFilter.dispose();rnrn // select the new filterrn mFolders.setSelection(0);rn if (mFilters.length > 0) rn mCurrentFilter = mFilters[0];rn else rn mCurrentFilter = mDefaultFilter;rn rn rn mCurrentFilter = mDefaultFilter;rnrn selectionChanged(mCurrentFilter);rnrn // update the content of the "other" filter to include what was filtered outrn // by the deleted filter.rn if (mDefaultFilter != null) rn initDefaultFilter();rn rnrn mFilterStorage.saveFilters(mFilters);rn rn rn [/code]rn deleteFilter函数在使用者点击logcat面板上的删除Filter按钮[img=http://hi.csdn.net/attachment/201012/21/0_1292937989m5dG.gif][/img]的时候被调用,函数的作用是,删除当前的filter,并释放其占用的资源,然后将default filter设定为当前过滤器(mCurrentFilter),并对default filter进行一些初始化操作。rn 但是在这几句中,发生了矛盾:rn [code=Java] mFolders.setSelection(0);rn if (mFilters.length > 0) rn mCurrentFilter = mFilters[0];rn else rn mCurrentFilter = mDefaultFilter;rn [/code]rn mFolders.setSelection(0);说明显示default filter面板。rn 但是之后的 if (mFilters.length > 0) rn mCurrentFilter = mFilters[0];rn else rn mCurrentFilter = mDefaultFilter;rn rn 却仅仅当,删除当前filter后不存在其他的自定义filter的情况下,才将mCurrentFilter设定为mDefaultFilter。所以当使用者创建了2个或者两个以上的自定义过滤器时,删除其中一个过滤器时,这个bug就会表现出来。rn 这个bug可以很容易地被验证:rn 1. 首先我们创建两个自定义过滤器,1和2,现在面板上有3个过滤器了,如下:rn [img=http://hi.csdn.net/attachment/201012/21/0_1292938728B75z.gif][/img]rn 2. 然后设定log标签(就是代码中的mDefaultFilter,我之前称之为default filter)的log级别为V,如图:rn [img=http://hi.csdn.net/attachment/201012/21/0_12929388937t5e.gif][/img]rn 3. 设定1标签的log级别为随便什么,和log标签的log级别不一样就行,我设定为D,如图:rn [img=http://hi.csdn.net/attachment/201012/21/0_12929390568o5c.gif][/img]rn 4. 然后删除标签2,正常逻辑来说,界面应该显示log标签,且log级别应该是V,也就是V按钮被选中,但是结果是:rn [img=http://hi.csdn.net/attachment/201012/21/0_1292939208pbm2.gif][/img]rn 如图所示,被选中的是D按钮,说明当前过滤器的log级别是D。rn 其实,这里的当前filter是1标签对应的filter,而不是log标签对应的default filter,说明这个BUG是的确存在的。rn rn 不过,其实发现这个BUG也没什么意思,基本不影响使用,要不是在读源码,我估计我这辈子也不见得会发现这个bug。rn 嘛嘛,很无聊的在这里发布下,权当给大家见笑了。 论坛

没有更多推荐了,返回首页