CVE-2023-5129 libwebp堆缓冲区溢出漏洞影响分析

漏洞简述

近日苹果、谷歌、Mozilla和微软等公司积极修复了libwebp组件中的缓冲区溢出漏洞,相关时间线如下:

  1. 9月7日,苹果发布紧急更新,修复了此前由多伦多大学公民实验室报告的iMessage 0-click 漏洞,漏洞被认为已经被NSO公司的Pegasus间谍软件所利用,漏洞编号CVE-2023-41064;

  2. 9月8日,libwebp 开发者提交 commit 修复了由于越界写入导致的堆缓冲区溢出漏洞;

  3. 9月11、12日,谷歌 chrome 、firefox、微软 Edge 游览器陆续发布更新,针对Chrome颁发漏洞编号CVE-2023-4863;

  4. 9月14日,libwebp 组件正式发布1.3.2版本,修复缓冲区溢出漏洞

  5. 9月26日,针对libwebp颁发了CVE-2023-5129漏洞编号

该漏洞利用复杂度很高,但由于libwebp是针对webp图像格式解析的事实标准,其被众多上层应用所依赖,除了影响客户端场景,还可能影响服务端,同时还存在被其他组件封装的情况,其影响非常广泛。

漏洞基本信息

漏洞编号CVE-2023-5129
标题libwebp堆缓冲区溢出漏洞
漏洞类型输入验证不当(CWE-20)
评分10
漏洞等级严重
处置建议强烈建议修复
利用所需权限无需权限
利用条件目标应用解析攻击者恶意构造的webp文件
影响范围[0.5.0, 1.3.2)
POC已公开

漏洞成因

libwebp在解析无损的WebP图片时,会使用霍夫曼编码(Huffman coding) 来构造霍夫曼编码表,并进行解码得到原始图像。在分配霍夫曼编码表的内存空间时,解码器提前会将所有一级表和二级表的空间同时分配。但是由于霍夫曼编码表数据读取自图片,未正确校验数据大小。当攻击者构造非法的霍夫曼表时,可以使得表的总内存大小超过预分配的大小,导致堆缓冲区溢出漏洞。

当前POC已经公开,生成恶意的WebP文件后,通过dwebp转换成png文件可触发该漏洞。

图片

影响分析

WebP是Google针对Web场景开发的一种栅格图形文件格式,相比JPEG、PNG和GIF等文件格式拥有更小的体积。Google于2010年9月宣布了WebP格式,并于2018年4月发布了其支持库的第一个稳定版本。

Libwebp 是谷歌提供用于编码和解码 WebP 格式图像的库,作为 WebP 规范的参考实现。WebP 在 Google Chrome、Safari、Firefox、Edge、Opera 浏览器以及许多其他工具和软件库中被原生支持,在客户端、服务端均有使用。

客户端

由于 WebP 格式的广泛使用,在各个处理 webp 图片格式的客户端中均可能受漏洞影响,如:

  • Photoshop的原生支持webp与webmproject/WebPShop: Photoshop plug-in for opening and saving WebP images 插件

  • 各种浏览器

  • 移动端系统SDK:苹果的Image I/O框架、安卓的 ImageDecoder 类

  • 使用Qt框架、Electron框架的应用程序

  • 支持 webp 格式的其他应用

典型的如:微信、腾讯会议、钉钉、WPS Office、IntelliJ IDEA、Android Studio

服务端

在服务端典型的涉及图像、视频处理的软件如FFmpeg、Affinity、Gimp也受到影响

ImageMagick中可以通过添加--with-webp=yes编译参数增加对webp格式的支持,但开发者表示目前还无法判断攻击路径的可达性。

图片

大部分Linux发行版中提供了libwebp组件,目前已经发布安全公告及补丁的包括:

Ubuntu | https://launchpad.net/ubuntu/+source/libwebp/1.2.4-0.3
Debian | https://www.debian.org/security/2023/dsa-5497-2
Redhat | https://access.redhat.com/errata/RHSA-2023:5309
Alpine | https://security.alpinelinux.org/vuln/CVE-2023-4863
Gentoo | https://security.gentoo.org/glsa/202309-05
SUSE | https://www.suse.com/security/cve/CVE-2023-4863.html
Oracle | https://linux.oracle.com/cve/CVE-2023-4863.html
Fedora|https://bodhi.fedoraproject.org/updates/FEDORA-2023-c4fa8a204d
Anolis 龙蜥 | https://anas.openanolis.cn/cves/detail/CVE-2023-4863

直接包含libwebp的C/C++开源项目

墨菲安全实验室对GitHub中热门的开源项目分析,发现存在不少项目源码中直接包含了libwebp,至少包括:

代码仓库地址star数
https://github.com/electron/electron109k
https://github.com/nginx/nginx (默认未启用)19.1k
https://github.com/tanersener/mobile-ffmpeg3.7k
https://github.com/WaterfoxCo/Waterfox3.1k
https://github.com/mozilla/gecko-dev2.9k
https://github.com/ytsaurus/ytsaurus1.6k
https://github.com/libgd/libgd835
https://github.com/zjupure/GlideWebpDecoder695
https://github.com/classilla/tenfourfox248
https://github.com/rmottola/Arctic-Fox238
https://github.com/papyrussolution/OpenPapyrus218

典型的如Sumatra PDF项目

图片

其他语言中包含libwebp的组件

通过对maven中央仓库中的组件分析,我们发现存在以下组件制品包中直接包含了libwebp的动态链接库:

org.demen.android.opencv:opencv-img
org.lucee:sejda-webp
com.criteo:jvips
io.github.darkxanter:webp-imageio
org.sejda.webp-imageio:webp-imageio-sejda
de.sg-o.lib:opencv
com.facebook.spectrum:spectrum-webp
de.marcreichelt:webp-backport
org.demen.android.opencv:opencv_world
cn.rongcloud.sdk:fu_beautifier
io.github.greycode:ocrlite
org.jetbrains.skiko:skiko-awt-runtime-linux-arm64
org.robolectric:nativeruntime-dist-compat
app.cash.paparazzi:layoutlib-native-linux
com.freeletics.fork.paparazzi:layoutlib-native-linux
org.jetbrains.skiko:skiko-jvm-runtime-linux-arm64
com.github.zjupure:webpdecoder
com.github.gotson:webp-imageio
com.eworkcloud:ework-cloud-starter-image
io.github.zumikua:webploader-desktop
org.sejda.imageio:webp-imageio
science.aist:aistcv
com.computinglaboratory:opencv
org.openpnp:opencv
org.jetbrains.skiko:skiko-jvm-runtime-linux-x64
com.facebook.fresco:webpsupport
com.eworkcloud:starter.ework-cloud-starter-image
io.github.humbleui:skija-linux-x64
io.tiledb:tiledb-cloud-java
app.cash.paparazzi:native-linux
org.demen.android.opencv:opencv
com.github.usefulness:webp-imageio
org.jetbrains.skiko:skiko-awt-runtime-linux-x64
com.aiyaapp.aiya:AyEffectSDK
io.github.humbleui:skija-linux
com.github.nintha:webp-imageio-core

在其他语言中也存在封装的情况,如Go语言中的

github.com/kolesa-team/go-webp
github.com/tidbyt/go-libwebp
github.com/nickalie/go-webpbin

NPM中的cwebp和PyPI仓库中的webp都提供了对libwebp二进制的封装调用。

排查建议

预计在接下来一段时间,会陆续有更多上层应用发布补丁修复libwebp漏洞。从漏洞的排查来看,需要关注以下引入场景:

  • 针对对外提供的客户端/二进制,可以通过SCA进行排查是否包含有漏洞的libwebp组件,0.5.0版本引入的导出函数WebPCopyPlaneWebPCopyPixels可作为排查的特征关键字,1.3.2版本引入的VP8LHuffmanTablesAllocate函数可以作为一部分安全版本的排查特征关键字。

  • 在服务端可能运行上层客户端应用,如headless浏览器,可通过进程排查。

  • 代码中可能通过静态、动态链接的方式引入libwebp,可能自行编译、yum/apt等包管理器引入,高级语言可能会对动态链接库封装调用,因此需要排查系统包、进程、制品文件中是否存在libwebp。

对于使用了libwebp的场景,建议升级到 1.3.2 版本、升级系统包。

参考链接

  • https://blog.isosceles.com/the-webp-0day/

  • https://github.com/ImageMagick/ImageMagick/discussions/6650

  • https://github.com/mistymntncop/CVE-2023-4863

墨菲安全企业版0day漏洞及投毒情报

墨菲安全企业级的0day漏洞及投毒情报以全、准、快、精为核心特点,为客户提供全网更新更快、分析更详细、信息准确有保障的情报推送,同时还推送大量独家的情报信息,客户可将该情报用于应急响应、软件成分分析产品检测等场景,该产品已服务于蚂蚁、美团等数十家企业客户,当前企业可通过以下方式申请试用:

一、微信扫描二维码申请:

图片

二、访问申请链接:

https://murphysec.feishu.cn/share/base/form/shrcnUf2LcR1HuMkKab7yathocf


【关于墨菲安全】

墨菲安全是一家专注于软件供应链安全产品方向的科技创新公司,团队核心成员均来自百度、华为、贝壳,拥有超过十年的企业安全建设和攻防经验。目前已服务蚂蚁、小米、快手、美团、中国银行、中国移动、中国电信等数十家企业级客户。

【关于墨菲安全实验室】

墨菲安全实验室是墨菲未来科技旗下的安全研究团队,专注于软件供应链安全相关领域的技术研究,关注的方向包括:开源软件安全、程序分析、威胁情报分析、企业安全治理等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/145238.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Element-UI】Mock.js,案例首页导航、左侧菜单

一.Mock.js 1、什么是Mock.js Mock.js是一个用于生成模拟数据的JavaScript库。它能够模拟后端API接口,用于前端开发时进行接口调试和测试提高自动化测试效率。使用Mock.js可以快速创建虚拟的数据,并且可以设置数据的类型、格式和规则,从而模…

TouchGFX之动态位图

标准位图会被编译到应用中,因此必须在编译时提供。在运行时间在RAM中创建位图,被称为动态位图。 动态位图的使用与编译到应用中的静态位图相同。 动态位图配置 必须先配置位图缓存,然后才能创建动态位图。 FrontendApplication.hpp#inclu…

【冰糖R语言】创建R包(打包R程序)

目标:将现有R程序打包 可能涉及知识点:devtools包、usethis包、Rstudio软件 一、R包的类型 通常一个R包中包含以下元素: 1)R文件夹:函数代码 2)man文件夹:存放每个函数的注释文件 3&#x…

大数据Flink(九十二):DML:集合操作

文章目录 DML:集合操作 DML:集合操作 集合操作支持 Batch\Streaming 任务。 UNION:将集合合并并且去重。

抖音短视频seo矩阵系统源代码开发系统架构及功能解析

短视频seo源码,短视频seo矩阵系统底层框架上支持了从ai视频混剪,视频批量原创产出,云存储批量视频制作,账号矩阵,视频一键分发,站内实现关键词、短视频批量搜索排名,数据统计分类多功能细节深度…

【教学类-38】A4红纸-国旗灯笼(庆祝中华人民共和国成立74周年)

作品展示: 背景需求: 从教十余年,我在每年国庆都带领中大班孩子们制作与“国旗相关”国庆庆祝物品——国旗、礼盒 一、国旗(吸管、A4红纸、黄纸打印五角星) 二、铅画纸手提袋(8K铅画纸、A4红纸、黄色打印…

leetCode 213. 打家劫舍 II 动态规划 房间连成环怎么偷呢?

213. 打家劫舍 II - 力扣(LeetCode) 你是一个专业的小偷,计划偷窃沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装…

学信息系统项目管理师第4版系列13_立项管理

1. 项目立项管理包括 1.1. 项目建议与立项申请 1.2. 项目可行性研究 1.2.1. 初步可行性研究 1.2.2. 详细可行性研究 1.2.2.1. 不可缺少 1.2.2.1.1. 【高21上选21】 1.2.3. 可以依据项目的规模和繁简程度合二为一 1.3. 项目评估与决策 2. 立项申请 2.1. 项目建议书 2…

针对数据中心机房散热问题仿真

在对于部分室内布局设计而言我们需要考虑到室内的空气流通问题,当然了对于数据中心机房而言,电子信息设备在运行过程中产生大量热,这些热量如果不能及时排除,将导致机柜或主机房内温度升高,过高的温度将使电子元器件性…

windows 修改hosts映射,可以ping通,但是无法通过http url 路径访问,出现 500 Internal Privoxy Error

问题描述 今天在学习nginx时,想在hosts配置一个nginx的域名映射,但是发现访问nginx服务的ip时可以访问通,在dos命令窗口ping配置的域名映射也可以ping通,但是一旦在浏览器通过http请求访问配置的hosts域名映射时却出现 500 Inter…

JOSEF约瑟DZJ-402 DZY-401导轨式中间继电器 触点形式 两转换 AC、DC220V

DZY(J)-400导轨式中间继电器 系列型号 DZY、DZJ-401 DZY、DZJ-402 DZY、DZJ-403 DZY、DZJ-404 DZY、DZJ-405 DZY、DZJ-406 DZY、DZJ-407 DZY、DZJ-408 DZY、DZJ-409 DZY、DZJ-410 DZY、DZJ-411 DZY、DZJ-412 DZY、DZJ-413 DZY、DZJ-414 DzY、DZJ-415 DZY、DZJ…

利用抽象工厂模式提升游戏开发的精度与灵活性

引言 大家好,我是亿元程序员,一位有着8年游戏行业经验的主程。 本系列是《和8年游戏主程一起学习设计模式》,让糟糕的代码在潜移默化中升华,欢迎大家关注分享收藏订阅。 在开发过程中,如何有效地管理各种游戏对象并…

PHP各种老版本下载方式

最近因工作需要,要下载PHP7.3的最新版本版本。 PHP官网上提供了各种老版本下载地址: https://windows.php.net/downloads/releases/archives/ 下载速度不稳定,时快时慢。 使用前,给下载留足时间。 貌似晚上速度快一些。

ORACLE 内存结构之系统全局区(SGA)

每个 Oracle 数据库实例都会在内存中分配一个很大的内存结构, 称为系统全局区(System Global Area), 这是一个大型的共享内存结构,每个Oracle进程都会访问它。 在Linux/Unix操作系统上,SGA是一个物理实体,使用操作系统命令能“看到它”。 它被操作系…

算法题系列8·买卖股票的最佳时机

目录 题目描述 实现 提交结果 题目描述 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。 设计一个算法来计算你所能获取的最大利润。…

mrctf2020_shellcode_revenge

mrctf2020_shellcode_revenge Arch: amd64-64-little RELRO: Full RELRO Stack: No canary found NX: NX disabled PIE: PIE enabled RWX: Has RWX segments64位,开了PIE和RELRO,看到RWX出来,就感觉是shellcode了…

什么是Promise链(Promise chaining)?它在异步编程中的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 什么是 Promise 链?⭐ 异步编程中的作用⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、…

FreeRTOS入门教程(空闲任务和钩子函数及任务调度算法)

文章目录 前言一、空闲任务概念二、钩子函数概念三、任务调度算法四、任务调度算法实验1.实验代码2.是否抢占3.时间片是否轮转4.空闲任务让步 总结 前言 本篇文章将带大家学习一下什么是空闲任务以及钩子函数,以及学习FreeRTOS中的任务调度算法,了解在F…

基于风险的漏洞管理实现高效安全

通常,网络中存在很多漏洞,修补和修复它们是一个永无止境的过程。但总会有这样的问题:“我应该首先补救什么?如果在我发现另一个开放漏洞之前就被攻击者利用怎么办?” 如何才能避免自己陷入怨恨和悔恨的想法中&#x…

麒麟信安服务器操作系统V3.5.2重磅发布!

9月25日,麒麟信安基于openEuler 22.03 LTS SP1版本的商业发行版——麒麟信安服务器操作系统V3.5.2正式发布。 麒麟信安服务器操作系统V3定位于电力、金融、政务、能源、国防、工业等领域信息系统建设,以安全、稳定、高效为突破点,满足重要行…