当前位置: 首页 > news >正文

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


【关于墨菲安全】

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

【关于墨菲安全实验室】

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

相关文章:

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

漏洞简述 近日苹果、谷歌、Mozilla和微软等公司积极修复了libwebp组件中的缓冲区溢出漏洞,相关时间线如下: 9月7日,苹果发布紧急更新,修复了此前由多伦多大学公民实验室报告的iMessage 0-click 漏洞,漏洞被认为已经被…...

leetcode做题笔记155. 最小栈

设计一个支持 push ,pop ,top 操作,并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。int get…...

蓝海彤翔亮相2023新疆网络文化节重点项目“新疆动漫节”

9月22日上午,2023新疆网络文化节重点项目“新疆动漫节”(以下简称“2023新疆动漫节”)在克拉玛依科学技术馆隆重开幕,蓝海彤翔作为国内知名的文化科技产业集团应邀参与此次活动,并在美好新疆e起向未来动漫展映区设置展…...

【AI视野·今日NLP 自然语言处理论文速览 第四十四期】Fri, 29 Sep 2023

AI视野今日CS.NLP 自然语言处理论文速览 Fri, 29 Sep 2023 Totally 45 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers MindShift: Leveraging Large Language Models for Mental-States-Based Problematic Smartphone Use Interve…...

【VsCode】vscode创建文件夹有小图标显示和配置

效果 步骤 刚安装软件后, 开始工作目录下是没有小图标显示的。 如下图操作,安装vscode-icons 插件,重新加载即可 创建文件夹,显示图标如下:...

celery分布式异步任务队列-4.4.7

文章目录 celery介绍兼容性简单使用安装使用方式 功能介绍常用案例获取任务的返回值任务中使用logging定义任务基类 任务回调函数No result will be storedResult will be stored任务的追踪、失败重试 python setup.py installln -s /run/shm /dev/shmOptional configuration, …...

解决M2苹果芯片Mac无法安装python=3.7的虚拟环境

问题描述 conda无法安装python3.7的虚拟环境: conda create -n py37 python3.7出现错误 (base) ➜ AzurLaneAutoScript git:(master) conda create -n alas python3.7.6 -y Collecting package metadata (current_repodata.json): done Solving environment: fa…...

Sound/播放提示音, Haptics/触觉反馈, LocalNotification/本地通知 的使用

1. Sound 播放提示音 1.1 音频文件: tada.mp3, badum.mp3 1.2 文件位置截图: 1.3 实现 import AVKit/// 音频管理器 class SoundManager{// 单例对象 Singletonstatic let instance SoundManager()// 音频播放var player: AVAudioPlayer?enum SoundOption: Stri…...

Oracle实现主键字段自增

Oracle实现主键自增有4种方式: Identity Columns新特性自增(Oracle版本≥12c)创建自增序列,创建表时,给主键字段默认使用自增序列创建自增序列,使用触发器使主键自增创建自增序列,插入语句&…...

【C++数据结构】二叉树搜索树【完整版】

目录 一、二叉搜索树的定义 二、二叉搜索树的实现: 1、树节点的创建--BSTreeNode 2、二叉搜索树的基本框架--BSTree 3、插入节点--Insert 4、中序遍历--InOrder 5、 查找--Find 6、 删除--erase 完整代码: 三、二叉搜索树的应用 1、key的模型 &a…...

TouchGFX之字体缓存

使用二进制字体需要将整个字体加载到存储器。 在某些情况下,如果字体很大,如大字号中文字体,则这样做可能不可取。 字体缓存使应用能够从外部存储器只能加载显示字符串所需的字母。 这意味着整个字体无需保存到在可寻址闪存或RAM上&#xff…...

windows系统关闭软件开机自启的常用两种方法

win10中安装软件时经常会默认开机自启动,本文主要介绍两种关闭软件开机自启动方法。 方法1 通过任务管理器设置 1.在任务管理器中禁用开机自启动:打开任务管理器,右键已启动的软件,选择禁用。 方法2 通过windows服务控制开机自启…...

巧用@Conditional注解根据配置文件注入不同的bean对象

项目中使用了mq,kafka两种消息队列进行发送数据,为了避免硬编码,在项目中通过不同的配置文件自动识别具体消息队列策略。这里整理两种实施方案,仅供参考! 方案一:创建一个工具类,然后根据配置文…...

论文笔记(整理):轨迹相似度顶会论文中使用的数据集

0 汇总 数据类型数据名称数据处理出租车数据波尔图 原始数据:2013年7月到2014年6月,170万条数据 ICDE 2023 Contrastive Trajectory Similarity Learning with Dual-Feature Attention 过滤位于城市(或国家)区域之外的轨迹 过…...

Python实现单例模式

使用函数装饰器 def singleton(cls):_instance {}def inner():if cls not in _instance:_instance[cls] cls()return _instance[cls]return innersingleton class Demo(object):def __init__(self):passdef test():b1 Demo()b2 Demo()print(b1, b2)使用类装饰器 class si…...

spark相关网站

Spark的五种JOIN策略解析 https://www.cnblogs.com/jmx-bigdata/p/14021183.html 万字详解整个数据仓库建设体系(好文值得收藏) https://mp.weixin.qq.com/s?__bizMzg2MzU2MDYzOA&mid2247484692&idx1&snf624672e62ba6cd4cc69bdb6db28756a&…...

ThreeJS-3D教学四-光源

three模拟的真实3D环境,一个非常炫酷的功能便是对光源的操控,之前教学一中已经简单的描述了多种光源,这次咱们就详细的讲下一些最常见的光源: AmbientLight 该灯光在全局范围内平等地照亮场景中的所有对象。 该灯光不能用于投射阴…...

Linux 回收内存到底怎么计算anon/file回收比例,只是swappiness这么简单?

概述 Linux内核为了区分冷热内存,将page以链表的形式保存,主要分为5个链表,除去evictable,我们主要关注另外四个链表:active file/inactive file,active anon和inactive anon链表,可以看到这主要分为两类,file和anon page,内存紧张的时候,内核开始从inactive tail定…...

软件测试中的测试工具和自动化测试

1. 测试工具 测试工具也分为不同人员使用的 开发人员:测试框架,编写测试用例;各类线上dump分析工具如windgb;开发时的集成IDE工具如Visual Studio,idea等等 面向不同测试需求的测试工具 软件测试是软件开发生命周期…...

个人博客系统测试报告

个人博客系统测试报告 一.项目背景二.项目功能三.测试用例3.1 功能测试3.2 自动化测试(部分测试)3.2.1登陆页面3.2.2博客详情页3.2.3博客编辑页3.2.4个人列表页3.2.5测试结果 3.3 性能测试 一.项目背景 当学习完一项技能后,我们总会习惯通过博…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

vue3 字体颜色设置的多种方式

在Vue 3中设置字体颜色可以通过多种方式实现&#xff0c;这取决于你是想在组件内部直接设置&#xff0c;还是在CSS/SCSS/LESS等样式文件中定义。以下是几种常见的方法&#xff1a; 1. 内联样式 你可以直接在模板中使用style绑定来设置字体颜色。 <template><div :s…...

视频字幕质量评估的大规模细粒度基准

大家读完觉得有帮助记得关注和点赞&#xff01;&#xff01;&#xff01; 摘要 视频字幕在文本到视频生成任务中起着至关重要的作用&#xff0c;因为它们的质量直接影响所生成视频的语义连贯性和视觉保真度。尽管大型视觉-语言模型&#xff08;VLMs&#xff09;在字幕生成方面…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

ABAP设计模式之---“简单设计原则(Simple Design)”

“Simple Design”&#xff08;简单设计&#xff09;是软件开发中的一个重要理念&#xff0c;倡导以最简单的方式实现软件功能&#xff0c;以确保代码清晰易懂、易维护&#xff0c;并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计&#xff0c;遵循“让事情保…...

JVM 内存结构 详解

内存结构 运行时数据区&#xff1a; Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器&#xff1a; ​ 线程私有&#xff0c;程序控制流的指示器&#xff0c;分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 ​ 每个线程都有一个程序计数…...