当前位置: 首页 > 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 性能测试 一.项目背景 当学习完一项技能后,我们总会习惯通过博…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

idea大量爆红问题解决

问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

2024年赣州旅游投资集团社会招聘笔试真

2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

如何在网页里填写 PDF 表格?

有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据&#xff…...

算法岗面试经验分享-大模型篇

文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...