jquery版本漏洞
2019年,版本一个做外包的漏洞朋友接了个企业官网维护的活。甲方说网站被挂了博彩链接,版本他上去一看,漏洞页脚被人塞了一段加密的版本js,追查下去发现是漏洞jQuery 1.7.2的XSS漏洞被利用了。那会儿jQuery 3.x已经出了四年,版本但甲方这套系统从2012年就没更新过库文件。漏洞 这事不稀奇。版本jQuery的漏洞版本漏洞,本质上是版本历史包袱问题。2006年John Resig发布第一个版本时,漏洞浏览器兼容性是版本头号难题,jQuery靠封装DOM操作和Ajax迅速占领市场。漏洞但那个年代的版本安全模型很粗糙,很多API设计没考虑恶意输入场景。 最典型的漏洞集中在1.x和2.x早期版本。CVE-2015-9251是个分水岭——jQuery 3.0.0之前的版本,当执行 这个漏洞的触发条件很日常。比如你的代码写 另一个常被忽略的是 选择器引擎Sizzle也有坑。CVE-2019-11358影响jQuery 3.4.0之前的所有版本, 版本升级的阻力往往不在技术层面。我见过一个金融系统,前端用了jQuery 1.4.2,因为某个老插件依赖 jQuery团队的反应速度其实不慢。3.5.0版本专门加固了 如果你现在维护老系统,先查 最后说个真实案例。某政府网站用了jQuery 1.11.3,安全扫描报告标了中危,运维觉得“中危不要紧”。三个月后,攻击者利用CVE-2020-11022—— 别等出事再升级。jQuery的漏洞史告诉我们:前端库的版本管理,和操作系统打补丁一样,是运维底线。$.ajax()或$.get()跨域请求时,如果响应头Content-Type缺失,jQuery会默认按HTML解析。攻击者可以构造一个JSONP风格的响应,实际返回恶意脚本,直接在你的页面上下文里执行。$.get('/api/user'),没指定dataType,服务端又没设Content-Type,那浏览器就会把返回内容当HTML跑。我见过一个电商站,用户头像URL接口被篡改后,所有访问者都中了挖矿脚本。jQuery.htmlPrefilter。1.12.0之前的版本,$(htmlString)会直接执行内联事件处理器。比如$(',这行代码在旧版里真的会弹窗。很多前端模板引擎内部调用了这个API,导致模板注入变成XSS。')
$.extend(true, { }, ...)深拷贝时,如果源对象包含__proto__属性,会污染Object原型。攻击者能通过JSON接口往原型上挂方法,后续所有对象都带恶意属性。这个漏洞的可怕之处在于——它不依赖用户交互,纯服务端数据就能触发。$.browser——这个API在1.9就被移除了。开发团队宁愿写polyfill也不愿改插件。结果2018年爆出CVE-2018-18406,jQuery.fn.init在处理标签时存在XSS,他们又被迫打补丁。htmlPrefilter,把self-closing标签的解析逻辑重写了。但问题在于,大量生产环境还在跑1.x。W3Techs 2023年的数据说,全球仍有约77%的网站在用jQuery,其中四分之一是1.x版本。$.fn.jquery。1.9以下的基本可以判定为高危。升级到3.x不是改个版本号那么简单——$.ajax的success回调参数顺序变了,$.parseJSON被废弃,$.isFunction移到了$.isFunction之外。但比起被挂马,这些重构成本值得付。jQuery.htmlPrefilter在3.5.0之前对标签处理不当——在页面里注入CSS,通过@import加载外部字体,实际是键盘记录脚本。中危变高危,只需要一个肯研究的攻击者。
-
上一篇
-
下一篇
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-