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

高效搜索,提升编程效率

一、搜索效率 1.1魔法上网 网址: 一个很变态但可以让你快速学会计算机的方法…………_哔哩哔哩_bilibili 谷歌镜像: https://search.fuyeor.com/zh-cn/Google 谷歌学术: https://link.zhihu.com/?targethttps%3A//scholar.lanfanshu.cn/…...

Java编程技巧:文件上传、下载、预览

目录 1、上传文件1.1、代码1.2、postman测试截图 2、下载resources目录中的模板文件2.1、项目结构2.2、代码2.3、使用场景 3、预览文件3.1、项目结构3.2、代码3.3、使用场景 1、上传文件 1.1、代码 PostMapping("/uploadFile") public String uploadFile(Multipart…...

【蓝桥杯选拔赛真题63】Scratch云朵降雨 少儿编程scratch图形化编程 蓝桥杯选拔赛真题解析

目录 scratch云朵降雨 一、题目要求 编程实现 二、案例分析 1、角色分析...

【新版】系统架构设计师 - 软件架构的演化与维护

个人总结,仅供参考,欢迎加好友一起讨论 文章目录 架构 - 软件架构的演化与维护考点摘要软件架构演化和定义面向对象软件架构演化对象演化消息演化复合片段演化约束演化 软件架构演化方式静态演化动态演化 软件架构演化原则软件架构演化评估方法大型网站架…...

安卓循环遍历计时器

计时器循环遍历 计时器的使用 我习惯两种方式如下: 第一种使用 handler: 1,初始化 声明 public static final int REGULAR_TIME 1000; //1秒 时间间隔private Handler mUiHandler;private int index0;Runnable runnable new Runnable()…...

Docker-基本了解

Docker-基本了解 一、基本概念1、镜像2、容器 二、执行流程三、体系结构 一、基本概念 Docker是容器化平台,提供应用打包,部署与运行应用的容器化平台,应用程序通过docker engine(Docker 引擎获取可用资源)&#xff0…...

Leetcode383. 赎金信

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成。 如果可以,返回 true ;否则返回 false 。 magazine 中的每…...

overleaf杂谈-Springer文献格式问题

目录 overleaf写作问题记录1.Latex中的%问题(文本变成灰色)2.Springer文献格式问题2.1 新建reference.bib2.2 谷歌学术搜索文章并引用2.3 复制BibTex2.4 复制进reference.bib2.5 在sn-article.tex的\end{document}前添加语句2.6 引用文献2.7 Springer模板…...

No148.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…...

BASH shell脚本篇4——函数

这篇文章介绍下BASH shell中的函数。之前有介绍过shell的其它命令,请参考: BASH shell脚本篇1——基本命令 BASH shell脚本篇2——条件命令 BASH shell脚本篇3——字符串处理 函数是代码重用的最重要方式。Bash函数可以定义为一组命令,在b…...

手机网站如何建站/网站优化公司

文章目录软件环境说明1. 什么是MyBatis1.1 Mybatis的资料1.2 持久层:完成持久化工作的代码块——dao层 【(Data Access Object) 数据访问对象2. 为什么需要Mybatis软件环境说明 jdk 8 、MySQL 5.7.19、maven-3.6.1、 IDEA 1. 什么是MyBatis MyBatis 是一款优秀的持…...

wordpress+获得子类id/2023新闻大事件摘抄

有人说改系统配置文件,虽说对geek们没啥,但是有一个更方便的方法,更好记。只需记住一个软件: GNOME Color Chooser。 安装完这个软件之后,选择Specific标签,更改Tooltips中的前景色(字体颜色&…...

卖挂的网站怎么做/手机怎么建自己的网站

Android 资源(Resources)访问有许多东西用来构建一个优秀的 Android 应用程序。除了应用程序的编码,你需要关注各种各样的资源,诸如你用到的各种静态内容,如位图,颜色,布局定义,用户界面字符串,…...

聊城网站建设公司/石首seo排名

")怎样用Python实现FTP自动上传请看PYTHON FTP模块的用法。怎么样通过Python实现自动添加脚本头信息的示例代码#!/usr/bin/python#title :test4.py#description :I am test script#author :python技术#date :20160902#version :0.1#…...

网站描述代码/怎么做app推广

福利资料见文末! 监控redis通过info信息来监控redis的状态 自动发现脚本编写 cat /etc/zabbix/scripts/redis_parameter #自动发现redis脚本参数的脚本 #!/bin/bash /usr/local/bin/redis-cli -p 3000 -a redis66cs "info">/home/zabbix/tmp/info.tx…...

电子商务网站建设的过程/电子商务与网络营销教案

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。一、理解什么是MyBatis?MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持…...