安全漏洞描述:对于一个Zigbee网络,任意节点只要采用Unsecure Rejoin的方式申请入网,就能从协调器或者路由器处“骗取”一个AssocList位置。如果一个Zigbee节点,不断的伪造自己的IEEE地址,然后加入扫描到的zigbee网络,就能很快的消耗完AssocList。而当一个FFD设备的AssocList被消耗完了,这个网络内的节点无法通过父节点切换的方式成为被消耗完AssocList的FFD的子节点。
建议补漏方法:1,对入网申请的设备经常IEEE认证,也就是MAC地址过滤。
2,这个是彻底解决的办法:节点入网是先发送入网申请,然后再获得协调器分配的密钥,成功入网了会发送DeviceAnnce命令,父节点在收到入网申请时,AssocList应该设置为Unauth状态,直到父节点收到子节点的DeviceAnnce命令,才算这个节点入网,AssocList才有永久保存的价值,AssocList自动删除没有按时上报DeviceAnnce命令的节点。
lihua jia:
Dear Aries Lord:
我在实际组网应用时就遇到关于AssocList被消耗完的情况,还请帮忙指导有没有解决的好办法。问题如下:
一个Router下同时上电超过25个EndDevice,只有25个是可以与Router正常联网通信的,其他设备一直处于离线状态。
我的处理方法是将已经通信过的设备根据其短地址,在Router的AssocList中找到并将该EndDevice的信息删除,这样处理
可以实现超过25个EndDevice与Router联网,但是实际运行时会出现部分设备在被删除信息后再也无法与Router重连,且状态
变回Init,单步运行程序,程序一直停在HAL_DEBOUNCE(!HAL_PUSH_BUTTON1());这个等待某按键触发的情况,EndDevice
设备无法正常工作了。
不知道您是否有好的方法解决以上问题?期待您的答复