Redis高危漏洞-GHSA-whxg-wx83-85p5:用户可能会使用特制的 Lua 脚本来触发堆栈缓冲区溢出
官方漏洞描述:https://github.com/redis/redis/security/advisories/GHSA-whxg-wx83-85p5
Redis 是一个高性能的键值数据库,广泛用于缓存和存储数据。由于其功能丰富,Redis 允许用户通过 Lua 脚本来执行服务器端的操作。Lua 脚本通常用来在 Redis 中执行一些原子操作,减少多次网络请求的开销。然而,Redis 中使用 Lua 脚本的实现存在一个潜在的安全漏洞,称为“Lua 脚本堆栈缓冲区溢出漏洞”,该漏洞可以被恶意用户利用来引发堆栈溢出,甚至可能导致远程代码执行。
1. Lua 脚本的执行方式
Redis 支持使用 Lua 脚本来原子化多个操作。Lua 脚本的执行方式是通过 EVAL
命令提交给 Redis 服务器,Redis 会将脚本载入内存并在服务器上执行。这种机制本质上是为了提高性能,但也暴露了潜在的安全问题。
2. 堆栈溢出漏洞的产生
在 Redis 的实现中,Lua 脚本被执行时,会在服务器的内存中开辟一个栈空间来处理脚本的运行。这个栈空间并没有做足够的边界检查,导致如果脚本中存在恶意构造,可能会导致堆栈缓冲区溢出。
堆栈缓冲区溢出是指,当脚本中的数据超出栈的大小限制时,可能会覆盖栈上相邻的内存区域,进而破坏栈上的控制信息(如返回地址、函数指针等)。如果攻击者能精心设计这个脚本,可能会在内存中执行恶意代码,导致远程代码执行或服务器崩溃。
3. 漏洞利用
利用这一漏洞的基本思路是通过精心设计的 Lua 脚本,在 Redis 服务器上触发堆栈溢出。攻击者可以通过以下方式利用此漏洞:
- 恶意脚本构造:攻击者通过精心构造 Lua 脚本,超出 Redis 脚本执行栈的边界,触发缓冲区溢出。
- 执行恶意代码:溢出的数据可能覆盖 Redis 内部的数据结构或控制流,进而执行任意恶意代码。这可能导致攻击者能够远程执行命令、获取敏感数据或控制 Redis 服务器。
4. 漏洞的修复
针对这个问题,Redis 的开发团队已经采取了一些措施来修复该漏洞:
- 栈保护机制:对栈的大小进行了限制,以防止 Lua 脚本触发溢出。
- 更严格的输入验证:增加了对脚本输入的检查和限制,确保不会执行过于复杂或者含有恶意构造的脚本。
- 限制脚本的复杂度:限制了 Lua 脚本的执行时间、执行深度等,避免恶意脚本造成性能损耗或者引发溢出漏洞。
5. 如何防范
如果你使用 Redis,以下是一些防范该漏洞的建议:
- 升级 Redis 版本:确保你的 Redis 版本已经修复了此类漏洞。定期检查 Redis 的安全公告,及时进行版本升级。
- 限制脚本的使用:可以通过配置文件限制 Lua 脚本的执行权限,或者在应用层面通过 API 控制哪些用户可以执行 Lua 脚本。
- 使用防火墙或 ACL:配置访问控制列表(ACL)来限制用户只能执行特定的 Redis 命令,防止执行潜在的危险命令。
- 监控日志和异常行为:定期查看 Redis 的日志文件,监控异常的命令执行行为,尤其是大量或复杂的 Lua 脚本执行。
总结
Redis 的 Lua 脚本堆栈缓冲区溢出漏洞是由于脚本执行栈没有严格的边界检查,攻击者可以通过特制的脚本来触发溢出,进而可能实现远程代码执行。通过及时更新 Redis 版本、限制脚本执行和加强访问控制等措施,可以有效防范此类漏洞的利用。
相关文章:
Redis高危漏洞-GHSA-whxg-wx83-85p5:用户可能会使用特制的 Lua 脚本来触发堆栈缓冲区溢出
官方漏洞描述:https://github.com/redis/redis/security/advisories/GHSA-whxg-wx83-85p5 Redis 是一个高性能的键值数据库,广泛用于缓存和存储数据。由于其功能丰富,Redis 允许用户通过 Lua 脚本来执行服务器端的操作。Lua 脚本通常用来在 …...
分组通道自注意力G-CSA详解及代码复现
G-CSA定义 G-CSA (Grouped Channel Self-Attention) 是一种创新性的视觉注意力机制,巧妙地结合了卷积和自注意力的优势。通过将输入特征图划分为多个独立的通道组,在每个组内执行自注意力操作,G-CSA实现了高效的全局信息交互,同时保留了局部特征细节。这种方法不仅提高了模…...
Unity 自定义批量打包工具
打包配置项 using UnityEngine; using System.Collections.Generic;namespace MYTOOL.Build {[System.Flags]public enum VersionOptions{None 0,Major 1,Minor 4,Build 8,Revision 0x10,}/// <summary>/// 批量打包配置文件/// </summary>[CreateAssetMenu]…...
WebGL性能检测
WebGL性能检测系统说明 检测维度 1. WebGL版本支持检测(20分) WebGL 1.0 和 WebGL 2.0 版本检测WebGL 2.0 支持得20分仅支持WebGL 1.0 得12分主要影响高级特性和性能优化的可用性2. GPU性能评估(25分) 通过WEBGL_debug_renderer_info获取显卡信息根据GPU品牌和型号进行评…...
C#,图论与图算法,输出无向图“欧拉路径”的弗勒里(Fleury Algorithm)算法和源程序
1 欧拉路径 欧拉路径是图中每一条边只访问一次的路径。欧拉回路是在同一顶点上开始和结束的欧拉路径。 这里展示一种输出欧拉路径或回路的算法。 以下是Fleury用于打印欧拉轨迹或循环的算法(源)。 1、确保图形有0个或2个奇数顶点。2、如果有0个奇数顶…...
Jenkins触发器--在其他项目执行后构建
前言: jenkins中有多种触发器可用,可以方便的控制构建的启动 这里简单介绍下项目后构建的配置方法 1. 解释: Build after other projects are built Set up a trigger so that when some other projects finish building, a new build is…...
UE5.4运行报错解决(关于osg使用-无法解决的外部命令)(未解决)
报错如下: 09:38:06:665 4>EpicGames.Core -> E:\AppInstall\EpicGames\UE_5.4\Engine\Source\Programs\Shared\EpicGames.Core\bin\Development\net6.0\EpicGames.Core.dll 09:38:06:668 5>------ 已启动全部重新生成: 项目: EpicGames.MsBuild, 配…...
Swift语言的软件工程
Swift语言的软件工程 引言 随着科技的不断进步,软件开发行业正在经历着前所未有的变化。在这场变革中,Swift语言作为苹果公司推出的一种新型编程语言,凭借其简洁、高效及安全的特性,正在快速崛起,成为现代软件工程中…...
国内外网络安全政策动态(2024年12月)
▶︎ 1.2项网络安全国家标准获批发布 2024年12月6日,根据2024年11月28日国家市场监督管理总局、国家标准化管理委员会发布的中华人民共和国国家标准公告(2024年第29号),全国网络安全标准化技术委员会归口的2项网络安全国家标准正…...
DELTA并联机械手视觉方案荣获2024年度机器人应用典型案例奖
直击现场 2025年1月9日晚,2024深圳市机器人年度评选颁奖典礼在深圳市南山区圣淘沙酒店正式拉开帷幕。本次颁奖活动由中国科学院深圳先进技术研究院指导,深圳市机器人协会与《机器人与智能系统》杂志组织承办。 正运动公司受邀参与此次典礼,…...
python 3个线程轮流打印A、B、C
要实现 Python 中三个线程轮流打印 A、B、C 的效果,可以使用 threading 模块和 Condition 或 Lock 来同步线程。以下是使用 Condition 的解决方案: 代码实现 import threading# 初始化条件变量 condition threading.Condition() current 0 # 共享变…...
Http 响应状态码 前后端联调
http 响应状态码 :是服务器在处理HTTP请求时返回的状态信息,用于表示请求的处理结果 1xx : 信息性状态码 100 Continue: 服务器已收到请求头部,客户端应继续发送请求体。 101 Switching Protocols : 切换协议。服务器已理解客户端的请求&a…...
AI Agent:软件测试自动化的新纪元
在信息技术日新月异的今天,人工智能(AI)技术的蓬勃发展正引领着各个行业的深刻变革,软件测试领域同样迎来了前所未有的机遇与挑战。AI Agent,这一融合了先进机器学习与自然语言处理技术的智能实体,正悄然成…...
C#结构体,枚举,泛型,事件,委托--10
目录 一.结构体 二.特殊的结构体(ref struct): 三.枚举 四.泛型 泛型的使用: 1.泛型类:定义一个泛型类,使用类型参数T 2.泛型方法:在方法定义中使用类型参数 3.泛型接口 五.委托及泛型委托 委托 泛型委托 六.事件 事件: 泛型事件:使用泛型委托(如Event…...
MATLAB语言的语法糖
MATLAB语言的语法糖 在现代编程语言中,语法糖(Syntactic Sugar)是一个常见的概念,它指的是某种编程语言提供的语法,使得代码更加简洁易读,而不改变语言本身的功能。MATLAB作为一种广泛应用于科学计算、工程…...
前端开发:HTML常见标签
1.注释标签 注释不会显示在界面上 . 目的是提高代码的可读性 . ctrl / 快捷键可以快速进行注释 / 取消注释 . <!-- 我是注释 --> 2.标题标签 有六个 , 从 h1 - h6. 数字越大 , 则字体越小 <h1> hello </h1> //我们所写的csdn的格式中的标题一…...
《AI发展的三个关键视角:基础设施、开源趋势与社会影响》
基础设施在AI研究中至关重要,但往往被忽视 基础设施在AI研究中至关重要,但往往被忽视,这一观点可以从多个方面进行深入探讨: 1. 基础设施的定义 基础设施在AI研究中通常指的是支持研究和开发的硬件、软件、网络和数据管理系统。…...
eslint.config.js和.eslintrc.js有什么区别
eslint.config.js 和 .eslintrc.js 的主要区别在于它们所对应的 ESLint 版本和配置方法: 1. .eslintrc.js: 这是 ESLint v8 及更早版本使用的配置文件格式。 它使用层级式的配置系统。 现在被称为"旧版"配置格式 。 2. eslint.config.js&am…...
Open FPV VTX开源之默认MAVLink设置
Open FPV VTX开源之默认MAVLink设置 1. 源由2. 准备3. 连接4. 安装5. 配置6. 测试6.1 启动wfb-ng服务6.2 启动wfb-ng监测6.3 启动QGroundControl6.4 观察测试结果 7. 总结8. 参考资料9. 补充9.1 telemetry_tx异常9.2 DEBUG串口部分乱码9.3 PixelPilot软件问题 1. 源由 飞控图传…...
一学就废|Python基础碎片,OS模块
Python 中的操作系统模块提供了与操作系统交互的功能。操作系统属于 Python 的标准实用程序模块。该模块提供了一种使用依赖于操作系统的功能的可移植方式。os和os. path模块包括许多与文件系统交互的函数。 Python-OS 模块函数 我们将讨论 Python os 模块的一些重要功能&…...
新版本的IDEA如何解决Git分支显示为警告⚠<unknown>的问题
目录 问题再现 解决思路 首先我们要想到 这个分支有没有从远程代码仓库拉去下来 复习一下 git 命令 其次思考 最后思考 问题再现 这边我使用的是 IDEA 2024.3.3.1 Jetbrains 官网的最新版 同时也是官方账号登录 的 今天上 github 去拉项目到 本地 出现了分支不显示的问…...
HTML和CSS相关的问题,为什么页面加载速度慢?
页面加载速度慢是网站优化中一个常见的问题,可能由于多种原因,包括HTML和CSS的代码编写方式、资源的加载顺序、页面渲染的复杂性等。以下是一些常见的原因和优化方法,结合实际项目代码示例进行讲解。 1. 过多的资源请求 如果页面包含大量的…...
使用葡萄城+vue实现Excel
最终实现效果如下 包含增加复选框 设置公式 设置背景颜色等,代码实在太多 有需要可留言 第一步:创建表头 请使用官网提供的网址:在线 Excel 编辑器 | SpreadJS 在线表格编辑器 1.点击下方号,创建一个新的sheet页 默认新创建的she…...
【漫话机器学习系列】042.提前停止训练的优势(Early Stopping Advantages)
提前停止训练(Early Stopping)的优势 提前停止是一种有效的正则化技术,在训练模型时通过监控验证集的性能来决定训练的结束点,从而避免过拟合。以下是提前停止的主要优势: 1. 防止过拟合 提前停止通过在验证集性能开…...
【2024遥感应用组一等奖】基于风云四号卫星的小时级大气气溶胶和颗粒物监测
作品介绍 01 研究背景 人口和产业的增长和集聚,增加了污染物的排放,改变了污染物的扩散条件,导致中国区域空气污染严重,是目前可持续发展面临的重大挑战之一。其中细颗粒物(PM2.5)是国内主要的空气污染物,威胁居民的身心健康,影响城市生态系统中社会、经济和自然…...
Cesium加载地形
Cesium的地形来源大致可以分为两种,一种是由Cesium官方提供的数据源,一种是第三方的数据源,官方源依赖于Cesium Assets,如果设置了AccessToken后,就可以直接使用Cesium的地形静态构造方法来获取数据源CesiumTerrainPro…...
Spring-Cloud-Gateway-Samples,nacos为注册中心,负载均衡
背景:本想找个简单例子看下,无奈版本依赖太过复杂,花了点时间。记录下吧 使用Spring Cloud Gateway作为网关服务,Nacos作为注册中心,实现对子服务的负载均衡访问。简单例子。 环境要求:JDK1.8、nacos 1.3…...
Centos9 + Docker 安装 MySQL8.4.0 + 定时备份数据库到本地
Centos9 Docker 安装 MySQL8.4.0 定时备份数据库到本地 创建目录,创建配置文件启动容器命令定时备份MySQL执行脚本Linux每日定时任务命令文件内参数其他时间参数 AT一次性定时任务 创建目录,创建配置文件 $ mkdir -p /opt/mysql/conf$ vim /opt/mysql/…...
【开源免费】基于Vue和SpringBoot的英语知识应用网站(附论文)
本文项目编号 T 138 ,文末自助获取源码 \color{red}{T138,文末自助获取源码} T138,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...
aws(学习笔记第二十四课) 使用sam开发step functions
aws(学习笔记第二十四课) 使用sam开发step functions 学习内容: 生成sam的step functions实例程序什么是SAM amazon Serverless Application ModelSAM程序结构SAM执行程序 1. 生成sam的step functions实例程序 参照文档 这里参照AWS的官方文档SAM amazon Serverl…...
RabbitMQ介绍与使用
RabbitMQ官网 RabbitMQ 介绍 RabbitMQ 是一个开源的消息代理和队列服务器,基于 AMQP(高级消息队列协议)标准,使用 Erlang 编程语言构建。它是消息队列(MQ)的一种,广泛应用于分布式系统中&#x…...
LeetCode 热题 100_腐烂的橘子(52_994_中等_C++)(图;广度优先遍历(队列))
LeetCode 热题 100_腐烂的橘子(52_994) 题目描述:输入输出样例:题解:解题思路:思路一(广度优先遍历(队列)): 代码实现代码实现(思路一…...
【数学】概率论与数理统计(五)
文章目录 [toc] 二维随机向量及其分布随机向量离散型随机向量的概率分布律性质示例问题解答 连续型随机向量的概率密度函数随机向量的分布函数性质连续型随机向量均匀分布 边缘分布边缘概率分布律边缘概率密度函数二维正态分布示例问题解答 边缘分布函数 二维随机向量及其分布 …...
《AI模型格局演变:Claude、Gemini Flash与OpenAI的技术角力》
Anthropic的Claude模型在通用聊天模型中表现优异,但在市场份额上仍落后于OpenAI Anthropic的Claude模型在通用聊天模型中的表现优异,主要体现在以下几个方面: 1. 技术优势 性能表现: Claude模型在处理复杂任务(如编程、自然语言…...
[0405].第05节:搭建Redis主从架构
Redis学习大纲 一、3主3从的集群配置: 1.1.集群规划 1.分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下: 2.每组是一主一从&#x…...
01、kafka知识点综合
kafka是一个优秀大吞吐消息队列,下面我就从实用的角度来讲讲kafka中,“kafka为何有大吞吐的机制”,“数据不丢失问题”,“精准一次消费问题” 01、kafka的架构组织和运行原理 kafka集群各个节点的名称叫broker,因为kaf…...
K8S集群常用命令
1,查看pod kubectl get pods -A 查看所有的pod kubectl get pods 这个只查看namespace为default下的pod,也就是只查看默认命名空间下的pod kubectl get pod -A -o wide 查看所有的pod,并且放出的信息更全(包含了pod的ip࿰…...
数据集-目标检测系列- 石榴 检测数据集 pomegranate >> DataBall
数据集-目标检测系列- 石榴 检测数据集 pomegranate >> DataBall DataBall 助力快速掌握数据集的信息和使用方式,会员享有 百种数据集,持续增加中。 需要更多数据资源和技术解决方案,知识星球: “DataBall - X 数据球(fre…...
【ubuntu24.04】配置ssh以root登录
ubuntu默认不能以root登录 SSH 访问 Ubuntu 时,root 用户登录提示 Access denied 的问题,通常是因为 Ubuntu 默认禁用了 root 用户通过 SSH 登录。这是出于安全性考虑的默认配置。原因分析 默认禁用 root 登录: 在 /etc/ssh/sshd_config 配置文件中,PermitRootLogin 默认…...
python学opencv|读取图像(二十九)使用cv2.getRotationMatrix2D()函数旋转缩放图像
【1】引言 前序已经学习了如何平移图像,相关文章链接为: python学opencv|读取图像(二十七)使用cv2.warpAffine()函数平移图像-CSDN博客 在此基础上,我们尝试旋转图像的同时缩放图像。 【2】…...
Python语言的编程范式
Python语言的编程范式探讨 引言 在当今的编程世界中,Python语言以其简洁、易读和强大的功能深受开发者的喜爱。作为一种多范式编程语言,Python支持多种编程风格,包括面向对象编程(OOP)、函数式编程和命令式编程等。每…...
JAVA多线程学习
文章目录 线程相关概念线程创建继承Thread类Runnable接口多个线程同时操作同一个对象测试:实现callable接口(了解)静态代理lamda表达式 线程状态线程停止线程休眠线程礼让 线程相关概念 线程:是进程的一部分,一个进程之内的线程之间共享进程的…...
【c语言】指针 (完结)
一、sizeof和strlen的对比 1、sizeof 前面我们在学习操作符的时候,我们学习了sizeof,知道其是计算变量所占内存的大小的,单 位是字节,如果操作数是数据类型的话,计算的就是这个类型的变量所占的内存空间的大…...
vue使用自动化导入api插件unplugin-auto-import,避免频繁手动导入
unplugin-auto-import是一个现代的自动导入插件,旨在简化前端开发中的导入过程,减少手动导入的繁琐工作,提升开发效率。它支持多种构建工具,包括Vite、Webpack、Rollup和esbuild,并且可以与TypeScript配合使用&…...
matlab函数讲解——randsample
在MATLAB中,randsample函数用于从一个给定的集合中随机选择样本。函数的基本用法是从指定范围内随机选择元素,具体用法如下: 用法 y randsample(n, k, true, w)参数说明 n: 整数,表示从1到n的集合中进行抽样。例如,…...
50_Lua垃圾回收
1.Lua垃圾回收机制概述 Lua采用了一种自动内存管理机制,称为垃圾回收(Garbage Collection, GC)。垃圾回收的主要目的是回收程序中不再被使用的内存,从而避免内存泄漏。Lua的垃圾回收器负责回收动态分配的对象,如函数、用户数据、表、字符串、线程、内部结构等。Lua的垃圾…...
【Python】数据容器:列表,元组,字符串,集合字典及通用操作
文章目录 一.序列1.1list列表定义常用操作列表的遍历 1.2tuple元组定义常见操作元组的遍历 1.3str字符串定义常见操作字符串的遍历 1.4序列常用操作——切片 二.set集合定义常见操作集合的遍历 三.dict字典定义常用操作字典的嵌套 *数据容器对比总结四.数据容器的通用操作4.1通…...
Wi-Fi Direct (P2P)原理及功能介绍
目录 Wi-Fi Direct (P2P)介绍Wi-Fi Direct P2P 概述P2P-GO(P2P Group Owner)工作流程 wifi-Direct使用windows11 wifi-directOpenwrtwifi的concurrent mode Linux环境下的配置工具必联wifi芯片P2P支持REF Wi-Fi Direct ÿ…...
系统看门狗配置--以ubuntu为例
linux系统配置看门狗 以 ubuntu 系统配置看门狗为例 配置看门狗使用的脚本文件,需要使用管理员权限来执行: 配置是:系统每 30S 喂一次狗,超过 60S 不进行投喂,就会自动重启。 1. 系统脚本内容: #!/bin/b…...
Mysql--基础篇--多表查询(JOIN,笛卡尔积)
在MySQL中,多表查询(也称为联表查询或JOIN操作)是数据库操作中非常常见的需求。通过多表查询,你可以从多个表中获取相关数据,并根据一定的条件将它们组合在一起。MySQL支持多种类型的JOIN操作,每种JOIN都有…...