y18n引发安全漏洞,警惕javascript原型链污染

本文关注javascript原型链污染问题,通过分析y18n包的安全漏洞,探讨如何使用Object.freeze防止此类问题。文章指出,不恰当的原型使用可能导致资源消耗不受限制的安全风险,提醒开发者注意代码审查和外部输入的安全验证。

警惕javascript原型链污染问题

昨天收到了github的邮件,提醒我有一条Dependabot alerts,包依赖存在安全问题,当然这不是第一次了,正常情况我批准merge掉后就不会关心了,不过我发现这个包是y18n,这让我感到奇怪,这个包的功能非常简单,其实就是i18n,做语言国际化用的,逻辑应该非常简单,怎么会出安全问题呢?

我找到了这个安全问题的具体信息,他的CVE ID为CVE-2020-7774,并且上报了SNYK,代码为SNYK-JS-Y18N-1021887,SNYK对此安全问题给出了7.3的高分,并将安全类别划分为CWE-400(资源消耗不受限制),如此严重的问题是怎么回事呢?

找到具体的修复PR,在https://github.com/yargs/y18n/pull/108,commit只有一个,为https://github.com/yargs/y18n/pull/108/commits/e90e8ce71b2fd5aa27c5109884ea47525fde961f,打开这个commit,发现其实主要只改了一行代码,加了两个检测原型的单元测试,这一行代码修改如下

-    this.cache = {
   
   }
+    this.cache = Object.create(null)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值