【5天打卡】学习Lodash的第四天——安全要牢记

这篇具有很好参考价值的文章主要介绍了【5天打卡】学习Lodash的第四天——安全要牢记。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

安全漏洞的问题一直是大家关心的问题,仿佛是巧合,在云视频会议服务提供商 Zoom 刚刚被爆出存在”零日漏洞“威胁 Mac 用户隐私和信息安全的同时,开发者熟知的 npm 库 Lodash 也被爆出存在高严重性安全漏洞——”原型污染“漏洞,该漏洞将威胁超过 400 万个项目的服务安全性。

目录

漏洞原因

lodash 版本4.7.12(4.7.12及以后版本已修复)之前defaultsDeep函数会污染原型。

解决方法:

JQuery的安全漏洞了解:

jquery3.4.0(3.4.0及以后版本已修复)之前版本中extend函数会导致原型污染

避免原型污染有以下几种方法:


所以我们一起来学习Lodash,今天打卡第四天,加油!

【5天打卡】学习Lodash的第四天——安全要牢记

Lodash 是一款流行的 npm 库,GitHub 上使用它的项目就多于 400 万。昨天,开源安全平台 Snyk 的开发者 Liran Tal 发现了一个高严重性的原型污染漏洞,影响所有版本的 Lodash,包括最新版本 4.17.11。该漏洞对使用 Lodash 的用户群和服务安全性造成极大威胁。

该漏洞被指定为 CVE-2019-10744,可能会影响大量的前端项目。因为 Lodash 的普及率非常高,每月的下载量超过 8000 万次。

漏洞原因

其实漏洞很简单,举一个例子:lodash 中 defaultsDeep 方法,

_.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } })

输出:

{ 'a': { 'b': 2, 'c': 3 } }

如上例,该方法:

分配来源对象(该方法的第二个参数)的可枚举属性到目标对象(该方法的第一个参数)所有解析为 undefined 的属性上

这样的操作存在的隐患:

const payload = '{"constructor": {"prototype": {"toString": true}}}'

_.defaultsDeep({}, JSON.parse(payload))

如此一来,就触发了原型污染。原型污染是指:

攻击者通过某种手段修改 JavaScript 对象的原型(prototype)

对应上例,Object.prototype.toString 就会非常不安全了。

const payload = '{"constructor": {"prototype": {"lodash": true}}}'
_.defaultsDeep({}, JSON.parse(payload))
console.log({}.lodash); // lodash4.7.12版本前会输出true

lodash 版本4.7.12(4.7.12及以后版本已修复)之前defaultsDeep函数会污染原型

解决方法:

在遍历 merge 时,当遇见 constructor 以及 __proto__ 敏感属性,则退出程序。

lodash修复原型PR

lodash修复原型PR 2

【5天打卡】学习Lodash的第四天——安全要牢记

JQuery的安全漏洞了解:

这就让人联想到jquery的安全漏洞:

对于 jQuery:如果担心安全问题,建议升级至最新版本 jQuery 3.4.0,如果还在使用 jQuery 的 1.x 和 2.x 版本,那么你的应用程序和网站仍有可能遭受攻击。

let a = $.extend(true, {}, JSON.parse('{"__proto__": {"devMode": true}}'))
console.log({}.devMode); // jquery3.4.0版本前会输出true

jquery3.4.0(3.4.0及以后版本已修复)之前版本中extend函数会导致原型污染

解决方法:在遍历对象时,当遇见 __proto__ 敏感属性,则退出程序。

jQuery 修复原型污染 PR

【5天打卡】学习Lodash的第四天——安全要牢记

避免原型污染有以下几种方法:

冻结 Object.prototype,使原型不能扩充属性
Object.freeze() 方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze() 返回和传入的参数相同的对象。

  1. Object.freeze(Object.prototype);
  2. 使用无原型对象Object.create(null);
  3. 建立一个名单专门用来存储敏感属性,遇到时过滤它;
  4. 使用一些第三方工具来检验代码的安全性,比如Snyk、JFrog Xray;

参考学习:Lodash库爆出严重安全漏洞,波及400万+项目

Lodash 严重安全漏洞背后 你不得不知道的 JavaScript 知识 - 知乎

jQuery和lodash导致原型污染的安全问题_My_Bells的博客-CSDN博客文章来源地址https://www.toymoban.com/news/detail-427201.html

以上就就是今天的学习,关注我,大家一起进步!~

到了这里,关于【5天打卡】学习Lodash的第四天——安全要牢记的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【零基础SRC】成为漏洞赏金猎人的第一课:加入玲珑安全漏洞挖掘班

    你是否对漏洞挖掘充满好奇?零基础或有基础但想更进一步?想赚取可观的漏洞赏金让自己有更大的自由度? 不妨了解下《玲珑安全团队》。 玲珑安全团队,拥有多名实力讲师,均就职于互联网头部公司以及国内国有企业,并荣获过多次SRC奖杯以及网鼎杯各赛事等荣誉。 玲

    2024年04月14日
    浏览(138)
  • 学习c#的第二十四天

    目录 C# 事件(Event) 事件概述 如何订阅和取消订阅事件 以编程方式订阅事件 使用匿名函数订阅事件 取消订阅 如何发布符合 .NET 准则的事件 发布基于 EventHandler 模式的事件 如何在派生类中引发基类事件 如何实现接口事件 如何实现自定义事件访问器 示例 事件(Event) 基本

    2024年02月04日
    浏览(31)
  • 第四十四天打卡

    零钱兑换 II 中等 1K 相关企业 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带符号

    2024年02月03日
    浏览(39)
  • Day 4 打卡第四天

    给你一个链表,删除链表的倒数第  n   个结点,并且返回链表的头结点。 示例 1: 示例 2: 示例 3: 提示: 链表中结点的数目为  sz 1 = sz = 30 0 = Node.val = 100 1 = n = sz 双指针,注意创建虚拟头节点,方便发生删除头节点的情况;注意快指针需要多移动一位进行删除操作 给你

    2024年02月10日
    浏览(31)
  • 拒绝摆烂!C语言练习打卡第四天

    🔥 博客主页: 小王又困了 📚 系列专栏: 每日一练 🌟 人之为学,不日近则日退  ❤️ 感谢大家点赞👍收藏⭐评论✍️ 目录 一、选择题 📝1.第一题  📝2.第二题 📝3.第三题 二、编程题 📝1.第一题  📝2.第二题 🗒️前言: 在前面我们学习完C语言的所以知识,当然练习

    2024年02月12日
    浏览(24)
  • Web安全——Web安全漏洞与利用上篇(仅供学习)

    漏洞描述   Web 程序代码中对于用户提交的参数未做过滤就直接放到 SQL 语句中执行,导致参数中的特殊字符打破了 SQL 语句原有逻辑,黑客可以利用该漏洞执行任意 SQL 语句,如查询数据、下载数据、写入 webshell 、执行系统命令以及绕过登录限制等。 测试方法    在发现

    2024年02月10日
    浏览(31)
  • [算法很美打卡第四天] 字符串篇(中)

    使用Unicode256编码集解决 使用hashmap解决: 正则表达式:

    2024年02月13日
    浏览(26)
  • Java 进阶之旅的第四天

    Collections集合工具类作用/特点 可以对创建的集合进行操作,比如批量添加等 查看源码可得,该工具类的构造函数用private修饰( private Collections() {} ),所以使用时不需要创建该类.直接调用即可 Collections常用的API 方法名称 说明 public static boolean addAll(Collection c,T… elements) 批量添加元

    2024年01月22日
    浏览(25)
  • 新手如何学习挖漏洞?【网络安全】

    前言 有不少阅读过我文章的伙伴都知道,我从事网络安全行业已经好几年,积累了丰富的经验和技能。在这段时间里,我参与了多个实际项目的规划和实施,成功防范了各种网络攻击和漏洞利用,提高了安全防护水平。 也有很多小伙伴私信问我怎么学?怎么挖漏洞?怎么渗

    2024年02月05日
    浏览(29)
  • 网络安全进阶学习第七课——文件包含漏洞

    开发人员通常会把可重复使用的函数写到单个文件中,在 使用某些函数 时, 直接调用此文件 ,而无需再次编写,这种调用文件的过程一般被称为包含。 为了使代码更加灵活,通常会将被包含的文件设置为 变量 ,用来进行动态调用,但正是由于这种灵活性,从而导致客户端

    2024年02月15日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包