我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1136|回复: 4

[技术文章] FPGA惊爆无解漏洞 - “StarBleed”技术细节全解读

[复制链接]

该用户从未签到

5

主题

179

回帖

0

积分

二级逆天

积分
0

终身成就奖特殊贡献奖原创先锋奖

发表于 2020-4-25 09:08:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?立即注册

×
以下内容  节选自微信公众号  老石谈芯




今年4月,来自德国的研究者披露了一个名为“StarBleed”的漏洞,它存在于赛灵思的Virtex、Kintex、Artix、Spartan 等全部7系列FPGA中。通过这个漏洞,攻击者可以同时攻破FPGA配置文件的加密(confidentiality)和鉴权(authenticity),并由此可以随意修改FPGA中实现的逻辑功能。更严重的是,这个漏洞并不能通过软件补丁的方式修复,一旦某个芯片被攻破,就只能通过更换芯片的方式修复。



StarBleed漏洞的具体攻击方法


整个攻击过程分为两大部分,第一是对加密的比特流文件进行破解,第二是获取鉴权密钥。


为了破解加密的比特流文件,攻击者利用了赛灵思FPGA里的一个特殊的配置寄存器WBSTAR,这个寄存器原本保存了FPGA MultiBoot功能的起始地址,当启动FPGA时,就通过读取这个寄存器从片外非易失性存储器找到映像文件。因此,当FPGA复位时,这个寄存器的内容是不会被抹掉的


对加密比特流的破解过程分为5个步骤。


第一步,攻击者对一个合法的比特流文件进行了简单篡改。具体来说,他需要修改比特流的一个32位字,将其改成对WBSTAR寄存器的写操作。写入的内容,就是比特流本身。


第二步,将篡改后的比特流加载到FPGA里。此时,FPGA会对比特流进行解密,并将一个32位字写入WBSTAR寄存器。值得注意的是,这里写入的是已经解密的比特流内容!


第三步,加载完毕后,由于比特流发生了修改,因此校验失败,并自动触发系统复位。


第四步,使用另外一个未加密的比特流文件,读取WBSTAR寄存器的内容。由于WBSTAR寄存器的特殊性,它的内容不会随着复位而清除。因此,此时攻击者再使用另外一个未加密的比特流文件读取这个寄存器的内容,就可以得到解密后的FPGA比特流的32位内容了。这个未加密的比特流文件已开源,请在文末扫码进入知识星球查看。


第五步,手工复位,然后重复上述步骤,直到整个比特流都解密完成。


可以看到,攻击者利用了上面提到的鉴权过程晚于加解密过程这个缺陷,通过“蚂蚁搬家”的方式完成了对比特流的完全解密。最可怜的是,此时的FPGA本身也沦为了帮助解密的工具。这也解释了为什么只能通过更换FPGA芯片才能修补这个漏洞。


读出一个32位字大概需要7.9毫秒,那么破解一个Kintex FPGA的比特流就大概需要3小时42分钟。


接下来,就可以对鉴权过程进行破解了。这个过程相对简单,事实上,身份校验所需的HMAC密钥就存储在比特流文件中,并且未经其他额外的加密。这正是所谓的“谜底就在谜面上”。所以只需要读取完整的比特流,就可以免费附赠HMAC密钥一枚。有了它,就可以任意修改比特流文件的内容,并重新计算身份校验。此外,攻击者甚至可以修改HMAC密钥本身。


综上所述,StarBleed漏洞正是利用了赛灵思7系列FPGA的两大设计缺陷:
1. 身份校验发生在解密过程之后
2. 身份校验的密钥直接存储在加密后的比特流文件里,且无额外加密


通过StarBleed漏洞,攻击者破解了全系列的赛灵思7系FPGA,包括SAKURA-X板卡上的Kintex-7,Basys3板卡上的Artix-7等等。同时,攻击者还利用同样的原理攻击了6系FPGA,例如ML605板卡上的Virtex-6FPGA,也能实现不完全破解。




防御方法


由于StarBleed漏洞直接利用了赛灵思7系列FPGA芯片的设计缺陷,且攻击过程直接在加载映像文件时展开,因此不能使用软件补丁或固件升级的方法规避这个漏洞。目前唯一的修复方法只有更换芯片,赛灵思官方已经向研究者承认了这一点。


事实上,攻击者使用这种方法无法破解UltraScale或更新的FPGA系列。这说明上面所说的设计缺陷已经在新型FPGA架构中得到了修复。例如,首先对比特流文件进行鉴权,通过后再进行加载。


虽然除了换芯片外没有完全防御的方法,我们仍然可以采用一些设计手段增加破解的成本和复杂度。一个常见的方法是在设计中增加额外的冗余逻辑,这些额外的部分并不影响逻辑功能,但会极大的提升设计的复杂度,从而增加破解的时间成本。比如,在状态机中增加很多无用状态等等。


此外,还可以在板卡设计时封锁FPGA的配置端口,比如研究者使用的JTAG和SelectMAP端口等。事实上,在量产的FPGA设计中,应该也很少有暴露的JTAG端口。
回复

使用道具 举报

该用户从未签到

13

主题

112

回帖

0

积分

二级逆天

积分
0

终身成就奖特殊贡献奖原创先锋奖

发表于 2020-4-25 09:19:32 | 显示全部楼层
回复

使用道具 举报

  • TA的每日心情
    慵懒
    2024-6-14 16:03
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    0

    主题

    1万

    回帖

    7618

    积分

    二级逆天

    积分
    7618

    终身成就奖特殊贡献奖原创先锋奖优秀斑竹奖

    QQ
    发表于 2020-4-25 19:45:23 | 显示全部楼层
    回复

    使用道具 举报

    该用户从未签到

    38

    主题

    396

    回帖

    1809

    积分

    PADS-241024高级班

    积分
    1809

    终身成就奖特殊贡献奖

    发表于 2020-4-25 20:43:57 | 显示全部楼层
    ~只要思想不滑坡,办法总比困难多~
    回复

    使用道具 举报

  • TA的每日心情
    郁闷
    15 小时前
  • 签到天数: 105 天

    [LV.6]常住居民II

    2

    主题

    7206

    回帖

    1万

    积分

    三级逆天

    积分
    10617

    终身成就奖特殊贡献奖原创先锋奖

    QQ
    发表于 2020-5-27 08:57:19 | 显示全部楼层
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    公告:服务器刚移机,
    大家请不要下载东西。
    会下载失败


    Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

    本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

    ( 闽ICP备2024076463号-1 ) 论坛技术支持QQ群171867948 ,论坛问题,充值问题请联系QQ1308068381

    平平安安
    TOP
    快速回复 返回顶部 返回列表