level 8
铁血烈鹰
楼主
这个漏洞是Zigbee协议栈的一个漏洞,我在TI的Z-stack上发现的,基本上使用TI芯片的Zigbee,都会出现,而且这个漏洞源代码是开放的,所以我在我们自己的产品上,修改了这个漏洞。
Zigbee的入网方式有两种,一种是Associate-Join,另一种是Rejoin。Associate Join是基于MAC层,节点向FFD发起入网请求,FFD分配地址给节点。通常用的PermitJoin就是开启或者关闭协调器或者路由的Associate-Join处理功能。一个节点向一个PermitJoin未打开的协调器发送Associate Req命令,协调器不会有任何响应。
而Rejoin,则是基于网络层的命令,IEEE802.15.4的MAC层命令只有简单的几条,分别功能就是信标搜索,Associate-Req,Data Request等,保证基本的传输。而802.15.4不光用于Zigbee,还有6LowPAN,WIA-PA等协议,因此Zigbee网络层还有很多命令用于Zigbee的设备管理。
Rejoin与AssociateJoin不同,Rejoin的设备必须拥有自己的16位网络地址,还要有ExternalPANID。ExternalPANID一般就是协调器的MAC地址。当一个节点入网后,如果要切换路由,会向一个新的路由发送Rejoin命令。首先,节点会搜索网络,如果当前网络中存在其它路由,而且路由的子节点列表有空位,节点就会加入到新的路由中,而原来的路由会删除该节点占用的位置。当然,一个网络中,协调器和路由器的子节点表都满了,这个网络中就不能再加入新节点了。
如果,向一个协调器一直发送Rejoin命令,并不断改变节点的MAC地址,会怎么样呢?这个协调器的子节点表会全部占满,导致其无法再加入新的设备,同样如果对路由发,结果更危险,会导致正常的节点无法切换到其它路由上。
2014年07月04日 08点07分
1
Zigbee的入网方式有两种,一种是Associate-Join,另一种是Rejoin。Associate Join是基于MAC层,节点向FFD发起入网请求,FFD分配地址给节点。通常用的PermitJoin就是开启或者关闭协调器或者路由的Associate-Join处理功能。一个节点向一个PermitJoin未打开的协调器发送Associate Req命令,协调器不会有任何响应。
而Rejoin,则是基于网络层的命令,IEEE802.15.4的MAC层命令只有简单的几条,分别功能就是信标搜索,Associate-Req,Data Request等,保证基本的传输。而802.15.4不光用于Zigbee,还有6LowPAN,WIA-PA等协议,因此Zigbee网络层还有很多命令用于Zigbee的设备管理。
Rejoin与AssociateJoin不同,Rejoin的设备必须拥有自己的16位网络地址,还要有ExternalPANID。ExternalPANID一般就是协调器的MAC地址。当一个节点入网后,如果要切换路由,会向一个新的路由发送Rejoin命令。首先,节点会搜索网络,如果当前网络中存在其它路由,而且路由的子节点列表有空位,节点就会加入到新的路由中,而原来的路由会删除该节点占用的位置。当然,一个网络中,协调器和路由器的子节点表都满了,这个网络中就不能再加入新节点了。
如果,向一个协调器一直发送Rejoin命令,并不断改变节点的MAC地址,会怎么样呢?这个协调器的子节点表会全部占满,导致其无法再加入新的设备,同样如果对路由发,结果更危险,会导致正常的节点无法切换到其它路由上。
