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

IoT 7个月前 admin
166 0 0

漏洞简述

近日苹果、谷歌、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文件可触发该漏洞。

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

影响分析

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格式的支持,但开发者表示目前还无法判断攻击路径的可达性。

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

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

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


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

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


代码仓库地址

star数

https://github.com/electron/electron

109k

https://github.com/nginx/nginx (默认未启用)

19.1k

https://github.com/tanersener/mobile-ffmpeg

3.7k

https://github.com/WaterfoxCo/Waterfox

3.1k

https://github.com/mozilla/gecko-dev

2.9k

https://github.com/ytsaurus/ytsaurus

1.6k

https://github.com/libgd/libgd

835

https://github.com/zjupure/GlideWebpDecoder

695

https://github.com/classilla/tenfourfox

248

https://github.com/rmottola/Arctic-Fox

238

https://github.com/papyrussolution/OpenPapyrus

218

典型的如Sumatra PDF项目

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

其他语言中包含libwebp的组件

通过对maven中央仓库中的组件分析,我们发现存在以下组件制品包中直接包含了libwebp的动态链接库:
org.demen.android.opencv:opencv-imgorg.lucee:sejda-webpcom.criteo:jvipsio.github.darkxanter:webp-imageioorg.sejda.webp-imageio:webp-imageio-sejdade.sg-o.lib:opencvcom.facebook.spectrum:spectrum-webpde.marcreichelt:webp-backportorg.demen.android.opencv:opencv_worldcn.rongcloud.sdk:fu_beautifierio.github.greycode:ocrliteorg.jetbrains.skiko:skiko-awt-runtime-linux-arm64org.robolectric:nativeruntime-dist-compatapp.cash.paparazzi:layoutlib-native-linuxcom.freeletics.fork.paparazzi:layoutlib-native-linuxorg.jetbrains.skiko:skiko-jvm-runtime-linux-arm64com.github.zjupure:webpdecodercom.github.gotson:webp-imageiocom.eworkcloud:ework-cloud-starter-imageio.github.zumikua:webploader-desktoporg.sejda.imageio:webp-imageioscience.aist:aistcvcom.computinglaboratory:opencvorg.openpnp:opencvorg.jetbrains.skiko:skiko-jvm-runtime-linux-x64com.facebook.fresco:webpsupportcom.eworkcloud:starter.ework-cloud-starter-imageio.github.humbleui:skija-linux-x64io.tiledb:tiledb-cloud-javaapp.cash.paparazzi:native-linuxorg.demen.android.opencv:opencvcom.github.usefulness:webp-imageioorg.jetbrains.skiko:skiko-awt-runtime-linux-x64com.aiyaapp.aiya:AyEffectSDKio.github.humbleui:skija-linuxcom.github.nintha:webp-imageio-core

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


github.com/kolesa-team/go-webpgithub.com/tidbyt/go-libwebpgithub.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漏洞及投毒情报以全、准、快、精为核心特点,为客户提供全网更新更快、分析更详细、信息准确有保障的情报推送,同时还推送大量独家的情报信息,客户可将该情报用于应急响应、软件成分分析产品检测等场景,该产品已服务于蚂蚁、美团等数十家企业客户,当前企业可通过以下方式申请试用:


一、长按二维码申请:

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


二、访问申请链接:

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




产品官网:

https://murphysec.com




【关于墨菲安全】

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


【关于墨菲安全实验室】

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

原文始发于微信公众号(墨菲安全实验室):CVE-2023-5129 libwebp堆缓冲区溢出漏洞影响分析

版权声明:admin 发表于 2023年9月28日 下午2:01。
转载请注明:CVE-2023-5129 libwebp堆缓冲区溢出漏洞影响分析 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...