新漏洞 RAMpage 曝光:2012年后发布的所有的 Android 手机都危险!

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

640?wx_fmt=gif

近日,据外媒报道,一个安全团队最新发现了一个名为 RAMpage 的漏洞,可以改变 Android 手机的随机存取存储器(Random Access Memory,简称 RAM)的存储内容,由此黑客可窃取存储在手机上的所有数据,如密码、照片、视频、电子邮件以及文档等等。

受影响的设备包括了自 2012 年以来发布的所有 Android 设备。


何为 Rowhammer 攻击?


RAMpage 漏洞被标记为 CVE-2018-9442,是几年前 Rowhammer 攻击的一个变种。

而 Rowhammer 是现代存储卡中的硬件错误。它被众所周知是在 2014 年,卡内基·梅隆大学研究人员在足够多的访问次数后让某个内存单元的值从 1 变成 0,当然主要是利用临近内存单元之间电子的互相影响,这种现象被称为比特翻转。后来,他们在论文中称此漏洞主要为威胁到搭载特定 DRAM 的设备,这主要是 x86 架构的笔记本电脑。漏洞的主要表现是:当攻击者敲打(Hammering)内存的特定某几行时,会导致其它行的内存单元相应地翻转。

到了 2015 年,谷歌的安全研究人员发布了一个名为 Rowhammer 的漏洞可通过网页入侵用户电脑的动态随机存储器。由于内存单元分布太过密集,动态随机存储器容易受到电干扰。反复访问一排内存单元会导致临近的单元改变自身的二进制值。

通过研究人员进一步的调查发现,在网络上使用 JavaScript 就可操作攻击行为,入侵任何结构、编程语言和运行环境,并且不需要对电脑进行物理访问,大大提高了其危险性。此外也可以通过 GPU 卡和网络包执行 Rowhammer 攻击。


RAMpage 是最新的 Rowhammer 攻击突变


对 Android 设备的第一次 Rowhammer 攻击被命名为 DRammer,它可以修改 Android 设备数据以及 Android 智能手机的 root 权限。如今,研究人员对该攻击有了新的发现。

今天,来自三所大学和两家私人企业的八位学者组成的安全团队发布了一篇“GuardION: Practical Mitigation of DMA-based Rowhammer Attacks on ARM”(https://vvdveen.com/publications/dimva2018.pdf)报告,其表示在 Android 设备上发现了一个类似 Rowhammer 的新攻击,其被命名为 RAMpage。

“RAMpage 打破了用户应用程序和操作系统之间最基本的间距,”研究人员说。 “虽然 App 通常不允许从其他 App 中读取数据,但恶意程序可以利用 RAMpage 漏洞以获得管理控制权限并获取存储在设备中的秘密。”

这可能包括存储在密码管理器或浏览器中的密码、个人照片、电子邮件、即时消息甚至关键业务文档。


RAMpage 也可能影响 Apple 设备、PC 和 VM


对 RAMpage 漏洞的研究仍处于初期阶段,但该团队表示,该攻击可能会影响基于 Android 的智能手机和平板电脑。

此外,RAMpage 也可能影响苹果设备、PC 甚至云服务器。

研究人员表示,他们已经更新了以前用于检测设备是否受 DRammer 袭击的 App,现在可以用此 App 来检测 Android 设备是否容易受 RAMpage 的影响。该 App 在 Play 商店中不可用,可通过该链接下载(https://vvdveen.com/drammer.apk)必须从此处下载。


RAMpage 面向 Android 的 ION 子系统


之前的 Android 设备上的 Drammer Rowhammer 攻击和较新的 RAMpage Rowhammer 攻击之间的区别在于,RAMpage 是专门针对名为 ION 的 Android 存储子系统。

简而言之,ION 是 Android OS 的一部分,用于管理应用程序和操作系统之间的内存分配。谷歌在 2011 年 10 月 18 日发布的 Android 4.0(冰淇淋三明治)中推出了 ION。

通过用 Rowhammer 攻击攻击 ION,RAMpage 允许入侵者打破 Android 应用程序和底层操作系统之间的界限,从而使攻击者可以完全控制设备及其数据。

对此,研究人员发布了一个名为 GuardION 的工具,用于在 ION 子系统前面放置“警卫”以防止 RAMpage 的攻击。现在,这款工具已在 GitHub 上开源,地址:https://github.com/vusec/guardion


自 2012 以来发布的 Android 设备都受到影响


目前研究人员仅在 LG4 智能手机上发现了 RAMpage 攻击,但他们表示,“每台配备 LPDDR2、LPDDR3 或 LPDDR4 内存的移动设备都可能受到影响,那么自 2012 年以来,每台 Android 手机都在其中。”

对此,研究小组搭建了一个网站,用于详细地介绍其发现漏洞的根由(https://rampageattack.com/)。尽管该网站是用于 Meltdown 和 Specter 漏洞的网站的副本,但研究人员表示,Meltdown / Spectre 和 RAMpage 之间没有任何相似之处。这是因为 Meltdown 和 Specter 袭击的数据存储在 CPU 高速缓存上,而 RAMpage 袭击的数据存储在 RAM 之上。

截止目前,还不能完全清楚 Rowhammer 漏洞(硬件错误)的普遍程度,不过希望更多的人参与其中,预防于未然,毕竟想要修复这个漏洞比较困难。

原文:https://www.bleepingcomputer.com/news/security/every-android-device-since-2012-impacted-by-rampage-vulnerability/

作者:Catalin Cimpanu

编译:屠敏

 征稿啦!

CSDN 公众号秉持着「与千万技术人共成长」理念,不仅以「极客头条」、「畅言」栏目在第一时间以技术人的独特视角描述技术人关心的行业焦点事件,更有「技术头条」专栏,深度解读行业内的热门技术与场景应用,让所有的开发者紧跟技术潮流,保持警醒的技术嗅觉,对行业趋势、技术有更为全面的认知。
如果你有优质的文章,或是行业热点事件、技术趋势的真知灼见,或是深度的应用实践、场景方案等的新见解,欢迎联系 CSDN 投稿,联系方式:微信(guorui_1118,请备注投稿+姓名+公司职位),邮箱(guorui@csdn.net)。



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


640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=gif

640?wx_fmt=gif

展开阅读全文

不是所有的控件路径都返回值???

07-09

#include rn#include rn#include rn#include rnrnusing namespace std;rnvoid printSudoku(int[][9]);rnbool isLegal(int,int,int[][9],int);rnbool solve(int,int,int[][9]);rnvoid stringAnalyze(string[],int[][9]);rnrnint main()rn string orders[30] = "018","034","052","076","113",rn "124","169","171","209","216",rn "278","284","332","341","356",rn "533","545","557","608","614",rn "677","685","712","726","761",rn "773","819","837","851","874";rn int sudoku[9][9] = 0,0,0,0,0,0,0,0,0,rn 0,0,0,0,0,0,0,0,0,rn 0,0,0,0,0,0,0,0,0,rn 0,0,0,0,0,0,0,0,0,rn 0,0,0,0,0,0,0,0,0,rn 0,0,0,0,0,0,0,0,0,rn 0,0,0,0,0,0,0,0,0,rn 0,0,0,0,0,0,0,0,0,rn 0,0,0,0,0,0,0,0,0rn ;rn stringAnalyze(orders,sudoku);rn printSudoku(sudoku);rn// for(int i = 0;i < 9;i++)rn// for(int j = 0;j < 9;j++)rn// solve(j,i,sudoku);rn// rn// rn solve(0,0,sudoku);rn cout << "\n";rn printSudoku(sudoku);rn return 0;rnrnrnvoid stringAnalyze(string orders[],int sudoku[][9])rn for(int count = 0;count < 30;count++)rn const char* point = orders[count].c_str();rn int tmp = atoi(point);rn int i = tmp / 100;rn int j = tmp / 10 - i * 10;rn int value = tmp % 10;rn sudoku[i][j] = value;rn rnrnrnvoid printSudoku(int sudoku[][9])rn for(int i = 0;i < 9;i++)rn for(int j = 0;j < 9;j++)rn cout << sudoku[i][j] << " ";rn rn cout << "\n";rn rnrnrnbool isLegal(int i,int j,int sudoku[][9],int value)rn for(int count = 0;count < 9;count++)rn if(count != i && sudoku[count][j] == value)rn return false;rn rn rn for(int count = 0;count < 9;count++)rn if(count != j && sudoku[i][count] == value)rn return false;rn rn rn int m = i / 3;rn int n = j / 3;rn for(int i = m * 3;i < 3 + m * 3;i++)rn for(int j = n * 3;j < 3 + n * 3;j++)rn if(sudoku[i][j] == value)rn return false;rn rn rn rn return true;rnrnrnbool solve(int i,int j,int sudoku[][9])rn// if(sudoku[i][j] != 0)rn// return;rn// elsern// for(int count = 1;count <= 9;count++)rn// if(isLegal(i,j,sudoku,count))rn// sudoku[i][j] = count;rn// return;rn// rn// rn// rn if (i == 9) rn i = 0;rn if (++j == 9)rn return true;rn rn if (sudoku[i][j] != 0) rn return solve(i+1,j,sudoku);rn for (int val = 1; val <= 9; val++) rn if (isLegal(i,j,sudoku,val)) rn sudoku[i][j] = val;rn if (solve(i+1,j,sudoku))rn return true; rn rn rnrnrnrn1>Sudoku.cpprn1>f:\projects\pd\pd\sudoku.cpp(111) : warning C4715: “solve”: 不是所有的控件路径都返回值rn1>正在链接...rn1>LINK : 没有找到 F:\Projects\PD\Debug\PD.exe 或上一个增量链接没有生成它;正在执行完全链接rn1>正在嵌入清单...rn1>生成日志保存在“file://f:\Projects\PD\PD\Debug\BuildLog.htm”rn1>PD - 0 个错误,1 个警告rnrn用的是VS2008,不清楚是什么问题。。。求高手解答下 论坛

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