首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何处理原型污染攻击漏洞?

如何处理原型污染攻击漏洞?
EN

Security用户
提问于 2019-05-27 09:45:08
回答 1查看 3K关注 0票数 5

据报道,房客在4.17.5以前的版本中容易受到所谓的原型污染攻击(不包括)。

现在,lodash是 最依赖于包装在JavaScript eco系统中。其影响是,几乎每一个至少中等规模的项目都在不同版本中包含了大量不同的目录依赖项和子依赖项(在您自己选择的JS项目中运行npm ls | grep lodash )。现在,要为所有在版本< 4.17.5中使用lodash的开源项目做出贡献,需要大量的努力和大量的时间。

请解释,攻击者如何使用此漏洞,以及如何在大型前端处理此问题的正确方法,该前端具有<#>A LOT的产品依赖关系,并使用can进行处理。

EN

回答 1

Security用户

回答已采纳

发布于 2019-05-27 12:14:36

以下是几个被挤成一个的问题,因此我将试着逐一回答每个问题:

什么是原型污染以及如何被攻击者使用?

我不知道您有多少JavaScript知识,所以我将尽量保持通用。JavaScript广泛使用原型来实现对象继承。基本上,您在原型中写入的内容将在对象实例中。Mozilla文档会比我更好地解释这个问题。

根据关于HackerOne的报告,如果攻击者能够将自己的数据插入目录中,他们就可以向对象中添加自己的代码。下面的PoC演示了这一点:

代码语言:javascript
复制
var _= require('lodash');
var malicious_payload = '{"__proto__":{"oops":"It works !"}}';

var a = {};
console.log("Before : " + a.oops);
_.merge({}, JSON.parse(malicious_payload));
console.log("After : " + a.oops);

如果运行这段代码,您可以看到a被修改了,即使它从未被直接写入。

那么这对您的应用程序有什么影响呢?这取决于你的代码。没有“无话可说”的答案。在某些情况下,它可能是拒绝服务,而在另一些情况下,则是远程代码执行。

例如,可以用文字字符串替换函数toString()。试图调用字符串将导致错误,从而导致拒绝服务。

大型应用程序如何处理易受攻击的包?

要么尽快更新您的存档版本,要么自己应用手动支持补丁程序。这可能不容易,但这是绝对必要的。

如果您的应用程序从来不处理任何用户输入,那么您可能会将更新推迟到可以的时候,但是它应该在您的优先级列表中很高。

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

https://security.stackexchange.com/questions/210851

复制
相关文章

相似问题

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