Gulp即将滑向Log4j2的深渊

2024-04-09 10:32
文章标签 即将 log4j2 gulp 滑向 深渊

本文主要是介绍Gulp即将滑向Log4j2的深渊,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Gulp
​​

log4shell漏洞暂时平息之际,是时候注意其他类似log4j流行度极广而又非常缺乏维护的包了,在前端十分流行任务运行器gulp就是其中一个值得关注的对象。

查阅一下gulp的release,发现最后一次更新是2019年5月7日发布的v4.0.2,但请注意,从v4.0.0开始这就是一个破坏性的版本,连声明task的方式都发生了变化,task是gulp的基石,这种根基上的修改很难使人愿意对其进行升级,依然有很多人在使用v3.9.1,过去七天内它的下载量仍然高达30万次,在Github是查看这是一个2019年4月22日的版本,这一天gulp在12:56时同时发布了以下版本:

v4.0.1, v3.9.1, v3.9.0, v3.8.11, v3.8.10, v3.8.9, v3.8.8, v3.8.7, v3.8.6, v3.8.5, v3.8.4, v3.8.3, v3.8.1

这是非常糟糕的发布方式,怎么会有人在同一时刻发布这么多版本?这是不可能的,在npm上查一下原来v3.8.1发布于2014年6月18日,但gulp团队在2019才在Github上同步发行了它,这是因为gulp在2019年才开放源代码吗?当然不是,gulp2013年6月4日就建立了gulp,他只是一直无视Github的release,那时候gulp还是用coffeescript编写的,gulp早已全盘抛弃了coffeescript,如今它似乎连自己也要抛弃了。

由于npm设计的非常糟糕,参考npm-audit-broken-by-design,使很多开发人员不想去处理由npm报告的漏洞,很多微不足道的问题被打上criticalhigh的安全问题,他们也许真的写了非常危险的代码,但是这些危险是需要一个入口的,绝大多数情况下,这个入口只存在于幻想之中或是源代码被修改,这让大家都变成了惊弓之鸟。对此开发者们分为两派,一派彻底放弃npm的管理,将依赖包集成到内部,package.json变的干干净净,npm无法扫描到依赖项,由自己把控安全风险,这一派可以称为自信派。另一派则坚持传统,但对安全问题摆烂,禁止社区报告安全漏洞,坚持不修复安全漏洞。gulp就是传统派,即使有人写好了升级项#2630,gulp也拒绝merge,认为这些东西都是nothing的,还会破坏现状,现在安装gulp@v4.0.2,由于愚蠢的glob-parent,npm将报告6个高危漏洞,实际上gulp.src()gulp.watch()都有可能引发漏洞,把漏洞的入口交给了用户,他们说开发人员们应该清楚自己使用了什么路径,但如今时代不同很多路径也都是拼合而来的,gulp也早已进入了许多CI/CD中,gulp不再是一个“第一入口”,也在逐渐成为一个“中间件”,真的有必要保持这么多年的自信吗,升级glob-parent不会让gulp失去什么,只会让它变得健壮。

谈到CI方面,gulp的Appveyor CI失败已经两年多了,github对每次CI失败都会向contributors们发送失败的邮件,gulp的开发人员情愿收两年邮件也不愿意修复这样的错误,当然也可能早已拒收了来自gulp的邮件。令人惊奇的是,这个CI还在尝试在Node 0.10.48这种平台上运行gulp,而所尝试的最新的平台也仅是Node 10.24.1,面对如今的Node 17.4.0,它实在掉队太远太远了,不过也不用怀疑是否有效,Node也是热衷于破坏性更新的,已经有中国的开发者报告在Node 14 support上的问题了(存疑,我同样在Node14.x上跑gulp,watch部分从2020年底到如今都运行良好)。

尽管到目前为止gulp并没有出现较大的安全危机,但最后一次package升级,已经是2019年4月22日的一个commit,所直接或间接依赖的274个module,他们未来的安全性,随着gulp几乎停止的维护令人越来越感到担忧,同时对于平台的支持性,gulp越来越滞后,Node的LTS版本也从14升到了16,gulp还停留在10.x,未来这个项目即使要继续维护,也要经过很多大修大改,在生态方面,很多包还在用gulp早年推出的gulp-util,如今它已经被废弃5年之久,gulp-typescript在使用的ts版本为3.6.3,而现在的ts最新版是4.6.0,即使无力维护对typescript的支持,3.x的版本最新的也应该是3.9.7,gulp-typescript已经停更两年了,UglifyJS发布了v3.15.0,而还在使用v3.0.5的gulp-uglify已经停止更新3年多了,gulplog已经6年没有更新,连gulp自己都放弃了它,宁愿更多的使用console.log这样完全无法控制的东西,这个快速,支持并行的任务运行器还会持续存活吗?还是等来正式的停止维护通知?还是像Log4j2?

Log4j2从2018年3月到高危漏洞事发前夕3年半的时间总计不到1000个commit,比2013年到2018年间任何一年的commit量都要低,当一个基础项目的维护变得缓慢都将引发灾难,那么一个基础项目彻底停止呢?

Log4j2 contributors map

如果Gulp陷入这样的境地,和现在一样持续的无法支持新版node,无法支持新版ts,欠账越累越多,未来使用的人就会越来越少,那一直所依赖gulp构建的项目又将不得不换成与其相似的任务运行器Grunt,而Grunt与Gulp的差异极大,同时Grunt是笨重的,它通常产生临时文件,不像Gulp专注于stream的传输,且不能并行执行,是一种极大的限制,通常情况下Grunt 需要的时间几乎是 Gulp 的两倍,这场向下“升级”又是一场前端的领域的Log4j2式的灾难

这篇关于Gulp即将滑向Log4j2的深渊的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/887913

相关文章

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

AI跟踪报道第55期-新加坡内哥谈技术-本周AI新闻: GPT NEXT (x100倍)即将在2024推出

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领域的领跑者。点击订阅,与未来同行! 订阅:https://rengongzhineng.io/ 点击下面视频观看在B站本周AI更新: B 站 链接 观看: 本周AI

PostgreSQL 17即将发布,新功能Top 3

按照计划,PostgreSQL 17 即将在 2024 年 9 月 26 日发布,目前已经发布了第一个 RC 版本,新版本的功能增强可以参考 Release Notes。 本文给大家分享其中 3 个重大的新增功能。 MERGE 语句增强 MERGE 语句是 PostgreSQL 15 增加的一个新功能,它可以在单个语句中实现 INSERT、UPDATE 以及 DELETE 操作,非常适合数据

log4j2.xml配置笔记

转载自阿豪聊干货:https://www.cnblogs.com/hafiz/p/6170702.htmlConfiguration Configuration 最外层节点 status:日志打印级别 monitorinterval:重新配置的监测间隔时间 –Appenders ----Console 定义输出到控制台的Appender. name:指定Appender的名字

代码执行漏洞-Log4j2漏洞

1.执行以下命令启动靶场环境并在浏览器访问 cd log4j/CVE-2021-44228docker-compose up -ddocker ps 2.先在自己搭建的DNSLOG平台上获取⼀个域名来监控我们注⼊的效果 3.可以发现 /solr/admin/cores?action= 这⾥有个参数可以传,可以按照上⾯的原理 先构造⼀个请求传过去存在JNDI注⼊那么ldap服务端会执⾏

CIOE中国光博会&电巢科技即将联办“智能消费电子创新发展论坛”

在科技浪潮汹涌澎湃的当下,从通信领域的高速光传输,到消费电子中的高清显示与先进成像技术,光电技术的应用范围不断拓展且日益深化。而AIGC 凭借其丰富的内容供给与个性化反馈能力,正为新一代消费电子及智能穿戴产品开辟崭新的发展路径。但与此同时,AI 技术的快速推进不仅对硬件性能提出了更为苛刻的要求,也给整个光电行业带来了诸多挑战,如技术创新的瓶颈、市场竞争的加剧以及产业链协同的复杂性等。

Xcode中如何在即将启动的APP中设置断点调试

在实际的App应用中,我们可能会碰到这么一种情况:我们设计一个APP,它可能会在外界发送某种消息或满足某种条件时,被动的启动加载,并根据外界传入的一些参数进行初始化工作。 这里由于程序是由其他程序启动的,所以我们不能够直接在XCode中编译运行程序并设置断点调试。但幸运的是,XCode提供了附加在进程上的调试功能,并且可以在进程启动前,通过进程名称等待进程运行,并在进程真正加载起来时,进入断点调

智能手机、汽车新应用,星纪魅族幸运星号”卫星即将发射

朋友们!你想象过我们的智能手机和汽车能与卫星直接通信吗? 这听起来像是科幻小说里的情节,但很快,这将成为现实!星纪魅族科技最近宣布了一个振奋人心的消息——他们将与时空道宇合作发射“星纪魅族幸运星号”卫星。这不仅是一次科技的飞跃,更是智能科技生态建设的一大步。 今天,就让我们一起来探讨这颗卫星及其应用将如何影响我们的未来。 一、卫星的技术特点和运行轨道 首先,让我们来看看“星纪魅族幸运星

Pencils Protocol生态新进展,即将上线 Vault 产品

“极高的盈利预期、通证的持续回购与销毁,Vault产品的推出正在成为Pencils Protocol生态发展的重磅利好。” Pencils Protocol是目前Scroll生态TVL最高的DeFi平台 ,即便是行情整体较为平淡,其仍旧能够保持在3亿美元左右的锁仓价值,并拥有超过247,000名活跃用户。 而进入到9月,Pencils Protocol陆续迎来了

Flutter 小技巧之 Row/Column 即将支持 Flex.spacing

事实上这是一个相当久远的话题,如果对于前因后果不管兴趣,直接看最后就行。 这个需求最早提及应该是 2018 年初在 #16957 被人提起,因为在 Flutter 上 Wrap 有 runSpacing 和 spacing 用于配置垂直和水平间距,而为什么 Colum 和 Row 这样更通用的控件居然没有 spacing 支持? 而后在 2020 年,Flutter 在 #55378 用户希望