跳到主要内容

8. 安全考虑事项

面向网络的应用在其处理输入数据的逻辑中可能存在漏洞. 复杂的解析器是众所周知的此类漏洞的可能来源, 例如能够远程使一个节点崩溃, 甚至在其上远程执行任意代码. CBOR 试图通过降低解析器复杂度、并在可能的情况下为整个可编码值域赋予含义, 来减少引入此类漏洞的机会.

资源耗尽攻击可能试图诱使解码器分配非常大的数据项 (串、数组、映射), 或者通过构造深度嵌套的数据项来耗尽栈深度. 解码器需要具备恰当的资源管理来缓解这些攻击. (给出了非常大尺寸的数据项也可能试图利用整数溢出漏洞.)

在 CBOR 数据项先由一个把关函数检查、随后又被另一个应用使用的应用中, 当该数据项可能存在多种解释时, 就可能暴露漏洞. 例如, 攻击者可以利用映射中重复的键以及数值的精度问题, 使把关函数所依据的解释不同于第二个应用将使用的解释. 在安全上下文中使用的协议应当以能够将这些多种解释可靠地归约为单一解释的方式来定义. 为便于实现这一点, 在此类上下文中使用的编码器和解码器实现应当至少提供一种严格操作模式 (第 3.10 节).