当前位置:WooYun >> 漏洞信息

漏洞概要 关注数(24) 关注此漏洞

缺陷编号:wooyun-2015-0161222

漏洞标题:沃尔沃门锁遥控突破滚码机制可无限次解锁

相关厂商:沃尔沃

漏洞作者: xmyth

提交时间:2015-12-14 17:39

修复时间:2016-01-28 17:10

公开时间:2016-01-28 17:10

漏洞类型:设计不当

危害等级:高

自评Rank:20

漏洞状态:未联系到厂商或者厂商积极忽略

漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]

Tags标签:

4人收藏 收藏
分享漏洞:


漏洞详情

披露状态:

2015-12-14: 积极联系厂商并且等待厂商认领中,细节不对外公开
2016-01-28: 厂商已经主动忽略漏洞,细节向公众公开

简要描述:

危害:沃尔沃门锁遥控滚码机制被绕过,车锁可被无限次打开,危害用户财产安全。
成因:通过对汽车遥控钥匙的无线遥控信号进行监听获取,并将获取的信号按照特定的机制发送,可以成功的无限次的重现遥控车钥匙的功能。

详细说明:

汽车(沃尔沃xc90)门锁遥控滚码机制采用hcs芯片和keeloq算法,钥匙每次发送都会携带加密过的同步值,钥匙和汽车都对同步值进行保存,汽车会对每次发送的钥匙信号进行验证,用钥匙的同步值减去汽车内保存的同步值差值大于零且在一定范围时,汽车会认为遥控信号有效,会执行遥控命令。如果差值小于零,汽车认为无效,如果差值大于前面提到的范围,那么会进入二次同步机制。本次漏洞就在于使用过的信号差值为负数时仍然进入二次同步流程,通过套件测试是由于差值变量定义成无符号数,差值始终大于零,所以进入二次同步流程。

漏洞证明:

keeloq算法示意图.png


算法窗口1.png


官方给出的程序(经过分析程序,的确是没有问题的,也经得过实验的验证)。
看似没有问题,但是问题出在Etemp的类型是无符号还是有符号上。如果厂商疏忽,Etemp的类型为无符号,那么差值永远大于0,且较小值减去较大值大于16,进入二次同步流程!

实验套装结果.png


当Etemp为有符号时:
除非捕捉到相差小于32768的值。例如当前同步值为-32766(二进制等于无符号32770),那么假设我们捕捉到的信号同步值是1,则差值为7FFF(32767),差值为正且>16,那么就能进入二次同步流程。
捕捉到当前信号,等他按完32768次后,这时同步值差值进入到16-32k的范围,然后确实可以破解了,但是这样破解的时间成本太高。
当Etemp为无符号时:
无论捕捉到什么样的信号,差值没有负数,那么只能进入正常执行流程或者二次同步流程.

修复方案:

检查HCS系列车型解码程序进入二次同步流程条件,检查同步码ETemp差值变量定义类型,修改汽车解码程序,将差值变量定义成有符号数即可。

版权声明:转载请注明来源 xmyth@乌云


漏洞回应

厂商回应:

未能联系到厂商或者厂商积极拒绝

漏洞Rank:15 (WooYun评价)