基于补丁方式修复 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

相关文章

内核启动时减少log的方式

内核引导选项 内核引导选项大体上可以分为两类:一类与设备无关、另一类与设备有关。与设备有关的引导选项多如牛毛,需要你自己阅读内核中的相应驱动程序源码以获取其能够接受的引导选项。比如,如果你想知道可以向 AHA1542 SCSI 驱动程序传递哪些引导选项,那么就查看 drivers/scsi/aha1542.c 文件,一般在前面 100 行注释里就可以找到所接受的引导选项说明。大多数选项是通过"_

用命令行的方式启动.netcore webapi

用命令行的方式启动.netcore web项目 进入指定的项目文件夹,比如我发布后的代码放在下面文件夹中 在此地址栏中输入“cmd”,打开命令提示符,进入到发布代码目录 命令行启动.netcore项目的命令为:  dotnet 项目启动文件.dll --urls="http://*:对外端口" --ip="本机ip" --port=项目内部端口 例: dotnet Imagine.M

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

深入理解RxJava:响应式编程的现代方式

在当今的软件开发世界中,异步编程和事件驱动的架构变得越来越重要。RxJava,作为响应式编程(Reactive Programming)的一个流行库,为Java和Android开发者提供了一种强大的方式来处理异步任务和事件流。本文将深入探讨RxJava的核心概念、优势以及如何在实际项目中应用它。 文章目录 💯 什么是RxJava?💯 响应式编程的优势💯 RxJava的核心概念

【即时通讯】轮询方式实现

技术栈 LayUI、jQuery实现前端效果。django4.2、django-ninja实现后端接口。 代码仓 - 后端 代码仓 - 前端 实现功能 首次访问页面并发送消息时需要设置昵称发送内容为空时要提示用户不能发送空消息前端定时获取消息,然后展示在页面上。 效果展示 首次发送需要设置昵称 发送消息与消息展示 提示用户不能发送空消息 后端接口 发送消息 DB = []@ro

脏页的标记方式详解

脏页的标记方式 一、引言 在数据库系统中,脏页是指那些被修改过但还未写入磁盘的数据页。为了有效地管理这些脏页并确保数据的一致性,数据库需要对脏页进行标记。了解脏页的标记方式对于理解数据库的内部工作机制和优化性能至关重要。 二、脏页产生的过程 当数据库中的数据被修改时,这些修改首先会在内存中的缓冲池(Buffer Pool)中进行。例如,执行一条 UPDATE 语句修改了某一行数据,对应的缓

Windows下Nginx的安装及开机启动

1、将nginx-1.16.1.zip解压拷贝至D:\web\nginx目录下。 2、启动Nginx,两种方法: (1)直接双击nginx.exe,双击后一个黑色的弹窗一闪而过。 (2)打开cmd命令窗口,切换到nginx目录下,输入命令 nginx.exe 或者 start nginx ,回车即可。 3、检查nginx是否启动成功。 直接在浏览器地址栏输入网址 http://lo

Java 多线程的基本方式

Java 多线程的基本方式 基础实现两种方式: 通过实现Callable 接口方式(可得到返回值):

nginx介绍及常用功能

什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务。 Apache:重量级的,不支持高并发的服务器。在Apache上运行数以万计的并发访问,会导致服务器消耗大量内存。操作系统对其进行进程或线程间的切换也消耗了大量的CPU资源,导致HTTP请求的平均响应速度降低。这些都决定了Apache不可能成为高性能WEB服务器  nginx:

前端form表单+ifarme方式实现大文件下载

// main.jsimport Vue from 'vue';import App from './App.vue';import { downloadTokenFile } from '@/path/to/your/function'; // 替换为您的函数路径// 将 downloadTokenFile 添加到 Vue 原型上Vue.prototype.$downloadTokenF