首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前10-2017 A8-不安全反序列化,为什么产品不实现加密

前10-2017 A8-不安全反序列化,为什么产品不实现加密
EN

Cryptography用户
提问于 2019-03-27 10:18:39
回答 2查看 80关注 0票数 1

在试图理解反序列化漏洞时,注意到序列化是将一个复杂对象转换为一个字节流以便通过网络发送它的过程,并在接收端反序列化。

在分析OWASP顶级A8时,它说it行业高度流行这种被利用的特性。

问题:

为什么产品不加密序列化的数据,如下面的文章所讨论的那样?

哪个更好:“序列化然后加密”还是“加密然后序列化”?

EN

回答 2

Cryptography用户

回答已采纳

发布于 2019-03-28 03:26:01

为什么产品不像#30723中讨论的那样加密序列化的数据?

因为加密本身并不能可靠地阻止数据的更改,这是这里的漏洞。正如马腾·波德威斯在这个问题上的评论。

为了防止篡改,你通常需要--就像OWASP所说--一个完整性检查,比如MAC或签名。不是加密。(尽管您已经进行了身份验证加密(它同时将加密和MAC作为一种组合操作),并且在最近几年变得更加流行和广泛可用,您还是可以使用它。)

现在,为什么人们不/不使用MAC或签名(或AE)的数据,如果改变可能是危险的?这是个好问题。对此我没有很好的答案。

票数 2
EN

Cryptography用户

发布于 2019-03-27 14:17:04

而不是在前十名,你可以说它是排名3,尽管他们确实说利用是困难的。在Git上有一些原始度量。OWASP A8实际上是指未加密的对象流,所以在“哪个更好:”序列化然后加密“还是”“加密然后序列化”中的争论?并不是完全正确的。

虽然有一个风险,答案可能是固执己见,我将尝试使用一些具体的逻辑。它真的可以归结为逻辑v语义。资讯科技的一个常见模式是:-

  1. 让它发挥作用,
  2. 做好准备,
  3. 让它快速*。

想象一下需要序列化的远程函数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://devops.com/metrics-devops/

票数 0
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/68335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档