在试图理解反序列化漏洞时,注意到序列化是将一个复杂对象转换为一个字节流以便通过网络发送它的过程,并在接收端反序列化。
在分析OWASP顶级A8时,它说it行业高度流行这种被利用的特性。
问题:
为什么产品不加密序列化的数据,如下面的文章所讨论的那样?
发布于 2019-03-28 03:26:01
为什么产品不像#30723中讨论的那样加密序列化的数据?
因为加密本身并不能可靠地阻止数据的更改,这是这里的漏洞。正如马腾·波德威斯在这个问题上的评论。
为了防止篡改,你通常需要--就像OWASP所说--一个完整性检查,比如MAC或签名。不是加密。(尽管您已经进行了身份验证加密(它同时将加密和MAC作为一种组合操作),并且在最近几年变得更加流行和广泛可用,您还是可以使用它。)
现在,为什么人们不/不使用MAC或签名(或AE)的数据,如果改变可能是危险的?这是个好问题。对此我没有很好的答案。
发布于 2019-03-27 14:17:04
而不是在前十名,你可以说它是排名3,尽管他们确实说利用是困难的。在Git上有一些原始度量。OWASP A8实际上是指未加密的对象流,所以在“哪个更好:”序列化然后加密“还是”“加密然后序列化”中的争论?并不是完全正确的。
虽然有一个风险,答案可能是固执己见,我将尝试使用一些具体的逻辑。它真的可以归结为逻辑v语义。资讯科技的一个常见模式是:-
想象一下需要序列化的远程函数F的开发。它添加两个流参数并返回和。所以sum = F(a, b)。
现在使用上面的范例进行开发。在第1点完成之前,该函数无法工作。没有会议,尖叫或白色登机将有助于这一点,因为这是一个数学上的必然。
一旦F返回正确的值,它就开始工作了。第一步明确完成。这是一个容易测试的逻辑参数。因此,步骤2和步骤3是语义参数,没有纯逻辑的权威。谁能说什么是“对”还是“快”?加入一种敏捷化或DevOps思维(“更新的软件可以每隔几天部署一次,甚至每天部署几次”**),没有什么理由超越第一步。遵循米尔格拉姆和津巴多的心理习惯只是意味着人们不自觉地“做他们被告知的事情”。比如,在第一步完成后,继续下一项工作。因此,没有加密的流。
还有其他太多的原因值得提及。
*改编自:ButlerLampson的“计算机系统设计提示”(1983年),http://research.microsoft.com/en-us/um/people/blampson/33-hints/webpage.html和StephenC.Johnson和BrianW.Kernighan的“系统编程的C语言和模型”(1983年8月)。
https://crypto.stackexchange.com/questions/68335
复制相似问题