基于补丁方式修复 nginx漏洞 缓冲区错误漏洞(CVE-2022-41741)、越界写入漏洞(CVE-2022-41742)

本文主要是介绍基于补丁方式修复 nginx漏洞 缓冲区错误漏洞(CVE-2022-41741)、越界写入漏洞(CVE-2022-41742),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

nginx1.22.0版本漏洞 CVE-2022-41741 、CVE-2022-41742

漏洞描述

1、nginx 缓冲区错误漏洞(CVE-2022-41741)

此插件基于版本检测,有可能误报,未开启 MP4 模块的nginx属于误报,请忽略该漏洞。Nginx是美国Nginx公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。 Nginx在 ngx_http_mp4_module 中存在漏洞,这可能允许攻击者激发 worker 进程的崩溃,或者通过使用特制的 mp4 文件致使 worker 进程出现内存泄露。该问题仅影响启用了 ngx_http_mp4_module 模块(默认不启用)并在配置文件中使用 .mp4 指令的 NGINX。此外,只有当攻击者能够触发使用 ngx_http_mp4_module 对特制 mp4 文件的进行处理时,攻击才有可能成功。

2、nginx 越界写入漏洞(CVE-2022-41742)

此插件基于版本检测,有可能误报。Nginx是美国Nginx公司的一款轻量级Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
Nginx Plus 的模块 ngx_http_hls_module 中存在一个漏洞,该漏洞可能允许本地攻击者破坏 NGINX 的工作进程内存,从而导致其崩溃或在使用特制的音频或视频文件时产生其他潜在的影响。只有当配置文件中使用 hls 指令时,该问题才会影响 Nginx Plus。
此外,只有当攻击者可以触发使用模块 ngx_http_hls_module 对特制音频或视频文件进行 处理时,攻击才有可能成功。一次成功的利用可能允许一个本地攻击者破坏 NGINX 的 worker 进程,导致其中止或其他潜在的影响。

官方文档

https://mailman.nginx.org/pipermail/nginx-announce/2022/RBRRON6PYBJJM2XIAPQBFBVLR4Q6IHRA.html

解决方式

解决方式一 通过升级nginx版本解决

1. 受影响的版本 nginx 1.1.3+, 1.0.7+
2. 修复的版本为 1.23.2, 1.22.1
所以通过升级版本可以修复这两个漏洞

解决方式二 通过补丁方式修复漏洞

1. 官方给出的补相丁下载地址
http://nginx.org/download/patch.2022.mp4.txt
2. 打开补丁文件 获取补丁信息 ,然后找到安装的nginx的源码, 按补丁描述将src/http/modules/ngx_http_mp4_module.c 文件下载到本地进行修改
以下为补丁部分信息截图

在这里插入图片描述

该补丁文件为一个git差异文件

  • 第一行 diff --git src/http/modules/ngx_http_mp4_module.c src/http/modules/ngx_http_mp4_module.c 表示有差异的文件的路径
  • 第二行 和第三行 表示漏洞发生的文需要修改的文件
  • 第四行 @@ -1121,6 +1121,12 @@ ngx_http_mp4_read_ftyp_atom(ngx_http_mp4
    其中 @@ -1121,6 +1121,12 @@ 表示修复前的漏洞位置在1121行的后6行,
    修复后的位置为1121行起后12行
    修改示例:
    补丁描述截图

在这里插入图片描述

修复前截图

在这里插入图片描述
修复后截图
在这里插入图片描述
修复后 自己可以数一下 看看是否和补丁文档中描述的修改后的位置相符
注意:需要添加的部分为+号部分,+号前后部分的内容是为确定位置上下文对比用的,我们复制完+号部分的内容后,可以根据给定的行号位置检查修改的位置是否正确,复制漏洞文件需要删除+号(+表示新增)
补丁文件越往后 @@ @@中的修改前 及修改后的行号位置相差很大,这是由于我们修改从上往下修改,前面变动的内容会影响到后面内容的原始位置,所以我们修改过程越往后 越需要用后面修改后的超始位置去定位 例:@@ -1862,6 +1906,12 @@ 这个中 1862的位置是说这个文件在原始未变动时的位置,随着我们从下往下修改,轮到修改到这个差异时,此时这个位置就变成了1906

  • 第四行@@ -1121,6 +1121,12 @@ ngx_http_mp4_read_ftyp_atom(ngx_http_mp4
    其中 ngx_http_mp4_read_ftyp_atom(ngx_http_mp4 表示要修改的函数名
3. 当按补丁文件修改完后,将修改后的文件替换掉源码中的src/http/modules/ngx_http_mp4_module.c 文件
4. 进行到nginx安装目录下 一般为/usr/local/nginx/sbin下,执行 ./nginx -V命令

在这里插入图片描述

5. 通过nginx -V 获取到configure arguments 后面的参数,然后进行到nginx源码路径下

在这里插入图片描述

5. 执行命令

./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module-master/src --with-http_stub_status_module --with-http_ssl_module
其中 ./configure 后面的参数就是为 nginx -V 获取到configure arguments参数

6. 执行编绎命令 make
**注意:不要make install,不然会覆盖现有的安装路径下的文件**
7. 编译成功后会生成一个objs目录,进行objs目录,拷贝nginx 替换掉原来的nginx安装路径下sbin中的nginx,注意:复制前记录先备份原有的文件,且需要先停止运行nginx
/usr/local/nginx/sbin/nginx -s stop
cp nginx /usr/local/nginx/sbin
8.替换完成后 启动nginx即可

/usr/local/nginx/sbin/nginx

这篇关于基于补丁方式修复 nginx漏洞 缓冲区错误漏洞(CVE-2022-41741)、越界写入漏洞(CVE-2022-41742)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/830845

相关文章

使用Java将各种数据写入Excel表格的操作示例

《使用Java将各种数据写入Excel表格的操作示例》在数据处理与管理领域,Excel凭借其强大的功能和广泛的应用,成为了数据存储与展示的重要工具,在Java开发过程中,常常需要将不同类型的数据,本文... 目录前言安装免费Java库1. 写入文本、或数值到 Excel单元格2. 写入数组到 Excel表格

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Java对象转换的实现方式汇总

《Java对象转换的实现方式汇总》:本文主要介绍Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java对象转换的多种实现方式1. 手动映射(Manual Mapping)2. Builder模式3. 工具类辅助映

Spring Boot读取配置文件的五种方式小结

《SpringBoot读取配置文件的五种方式小结》SpringBoot提供了灵活多样的方式来读取配置文件,这篇文章为大家介绍了5种常见的读取方式,文中的示例代码简洁易懂,大家可以根据自己的需要进... 目录1. 配置文件位置与加载顺序2. 读取配置文件的方式汇总方式一:使用 @Value 注解读取配置方式二

JAVA保证HashMap线程安全的几种方式

《JAVA保证HashMap线程安全的几种方式》HashMap是线程不安全的,这意味着如果多个线程并发地访问和修改同一个HashMap实例,可能会导致数据不一致和其他线程安全问题,本文主要介绍了JAV... 目录1. 使用 Collections.synchronizedMap2. 使用 Concurren

Nginx location匹配模式与规则详解

《Nginxlocation匹配模式与规则详解》:本文主要介绍Nginxlocation匹配模式与规则,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、环境二、匹配模式1. 精准模式2. 前缀模式(不继续匹配正则)3. 前缀模式(继续匹配正则)4. 正则模式(大

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代