在混沌计算大会(30C3)上,Sean "xobs" Cross、Andrew "bunnie" Huang等知名黑客组成的团队展示了他们的最新成果:部分SD存储卡包含漏洞,可以在卡上执行任意代码。
坏消息是,这可以促成发起中间人攻击(MITM),使得SD卡看上去在做一件事,实际上却在干别的。
好消息是,硬件高手们能够以非常低成本的方式获取大量的微型控制器资源。
事情要从闪存存储的特性说起。闪存,和其它任何东西一样,不可能完美无瑕,缺陷是必然存在的,只不过配合大量的纠错、坏块管理技术才显得那么可靠,而随着闪存工艺的进步,闪存可靠性越来越差,工程师们就不得不开发更复杂的算法。
而这些算法是如此复杂,且严重依赖特定设备,是不可能运行在系统、程序级别的,不得不使用特定的微控制器执行。即便在小巧的SD卡里,也包含主控制器、至少一颗闪存这么两颗芯片。
现代常用的微控制器一般都是基于8051、ARM CPU的定制版,频率高的可以在100MHz左右,还有硬件加速功能,而成本只要0.15-0.30美元(人民币一两块钱),基本可以忽略不计,所以与其费尽力气测试闪存芯片,干嘛不用这么廉价的方案?事实上这就是为什么闪存设备可以比按容量计算纯闪存价格更低的关键原因。
问题在于,硬件抽象层(HAL)是很容易有Bug的,特别是每一种闪存都需要特定的算法,这就导致微型控制器需要面对的HAL非常非常多,想不出事儿那是不可能的。
最关键的是,固件的载入、更新机制几乎是强制性的,特别是对地方控制器来说。一般情况下,固件的操作都是工厂内完成的,但是从来不乏高手,比如那些烧固件来冒充大容量欺骗顾客的奸商——原作者这里特别提到了他在中国看到的这种现象,羞愧……
xobx、bunnie等人在报告中提出,他们在Appotech AX211、AX215微型控制器里发现了一个简单的、通过制造商保留指令发送的“敲门”序列,会让控制器进入固件载入模式,这时候存储卡就会毫无保留地接受此后的512个字节代码,然后执行。
由此,黑客们借助自己的开源硬件平台Novena和定制的适配卡,逆向工程了8051微控制器的绝大多数功能寄存器,结果无需厂商私有文档就为该控制器开发了新的应用。
再然后怎么利用,那就看你想干啥了,是好是坏全在人心。
Appotech只是个微不足道的微型控制器厂商,还有很多你不知道的名字比如Alcor Micro、Skymedi、Phison、SMI,以及很多如雷贯耳的大厂比如闪迪、三星。他们的产品各有各的技术、算法、固件,是否有漏洞待查,但是至少三星的一个eMMC方案使用了有Bug的ARM指令集。
从安全的角度讲,这意味着黑客只需要一张小小的SD卡,就可以随意嵌入代码、发动恶意攻击,或者获取机密资料,而目前是没有统一防范措施的。
不过从DIY、黑客精神方面看,微型控制器有了新玩法。Arduino 8-bit 16MHz微型控制器需要花大约20美元,而拥有更强控制器、大容量闪存的SD卡才几个钱?
驱动之家的吐槽:
没说反,至少一般刚了解点的人只知道后面的牌子,因为更常见。
原贴:
"还有很多你不知道的名字比如Alcor Micro、Skymedi、Phison、SMI,以及很多如雷贯耳的大厂比如闪迪、三星。" 小编完全说反了吧,哎~~
河南省平顶山市游客
发表时间:2013-12-31 16:41:06
"还有很多你不知道的名字比如Alcor Micro、Skymedi、Phison、SMI,以及很多如雷贯耳的大厂比如闪迪、三星。" 小编完全说反了吧,哎~~
天津市游客
发表时间:2013-12-31 15:28:46
电路版上一个“小兔”什么意思?
江苏省常州市游客
发表时间:2013-12-31 14:25:30
那你去微软偷点源程序出来卖卖?
原贴:
掌控一片存储卡算什么,早都说过了,任何设备,什么防火墙路由器网关硬盘磁带机的,只要连上网络,数据就必然会被别人复制,在高手面前,仅存的障碍就仅仅是道德而已。
陕西省西安市游客
发表时间:2013-12-31 14:16:31
掌控一片存储卡算什么,早都说过了,任何设备,什么防火墙路由器网关硬盘磁带机的,只要连上网络,数据就必然会被别人复制,在高手面前,仅存的障碍就仅仅是道德而已。
江苏省常州市游客
发表时间:2013-12-31 13:23:45
因为可以自制固件,那就可以做到如下事情。如果正常操作系统去访问,会隐藏一部分空间(16G隐藏几百M根本不会有人注意的),但是如果软件通过特定方法去访问的话,就可以读写那一部分空间。这样就可以制作一个看似正常的TF卡,里面却装了各种木马,一旦你下载了特定的软件后(这个软件也没有病毒),就会把这个TF卡里的木马释放出来,你还无从查杀。自然也可以做到偷偷把你的一些敏感数据拷贝至这张卡上而不会留下痕迹。
狂忍原贴:
可以这么理解么?就是说SD卡其实是一个完整的片上系统,读写SD卡的过程是系统对系统的通信,不是系统对芯片的通信,而主系统对SD卡这个片上系统是不设防的,所以一个含有恶意固件的SD卡是没法防范的。是这个意思么?
山东省济南市手机用户游客
发表时间:2013-12-31 12:08:23
可以这么理解,但主系统本身一般都带有全方位的防护措施,而且与子系统的指令不兼容,所以只能做中间人攻击,无法实际对主系统产生严重影响。
类似的情况就是黑客破解了你的路由器,但对你的电脑本身是起不了太大威胁的。
狂忍原贴:
可以这么理解么?就是说SD卡其实是一个完整的片上系统,读写SD卡的过程是系统对系统的通信,不是系统对芯片的通信,而主系统对SD卡这个片上系统是不设防的,所以一个含有恶意固件的SD卡是没法防范的。是这个意思么?
广东省东莞市游客
发表时间:2013-12-31 11:40:01
可以通过感染SD卡的固件, 实现木马或者病毒的藏匿, 即便发现病毒, 也杀不掉.
狂忍原贴:
可以这么理解么?就是说SD卡其实是一个完整的片上系统,读写SD卡的过程是系统对系统的通信,不是系统对芯片的通信,而主系统对SD卡这个片上系统是不设防的,所以一个含有恶意固件的SD卡是没法防范的。是这个意思么?
江苏省淮安市游客
发表时间:2013-12-31 11:37:16
一样
Arduino 8-bit 16MHz微型控制器能干什么?
原贴:
这么专业的东西。。。。不懂
辽宁省锦州市 狂忍
发表时间:2013-12-31 11:32:46
可以这么理解么?就是说SD卡其实是一个完整的片上系统,读写SD卡的过程是系统对系统的通信,不是系统对芯片的通信,而主系统对SD卡这个片上系统是不设防的,所以一个含有恶意固件的SD卡是没法防范的。是这个意思么?
天津市游客
发表时间:2013-12-31 11:22:41
这下碉堡了,以后单片机的电子制作比赛都用SD卡了
天津市游客
发表时间:2013-12-31 11:18:20
这么专业的东西。。。。不懂