LWN:漫长的修复之路(CVE-2021-20316)!

网络安全:SQL 注入漏洞 一、漏洞描述 WordPress是一个用PHP编写的免费开源内容管理系统,由于clean_query函数的校验不当,导致了可能通过插件或主题以某种方式从而触发SQL注入的情况。这已经在WordPress5.8.3中进行了修复。影响版本可以追溯到3.7.37。 二、漏洞分析 在分析整个漏洞之前,首先可以看一下如果想要触发该漏洞,漏洞代码应该是什么样子的。 new WP_Query($_POST['query_vars']) 这也就是说,传入WP_Query的参数如果可控的话,就可以利用该漏洞。接下来我们看看整 阅读详情

关注了就能看到更多这么棒的文章哦~

The long road to a fix for CVE-2021-20316

By Jonathan Corbet
February 10, 2022
DeepL assisted translation
https://lwn.net/Articles/884052/

那些有着良好维护的自由软件项目,通常都会迅速 fix 已知的安全问题,用于在 Windows 和 Unix 系统之间提供交互的 Samba 项目也同样如此。因此,我们就非常想知道为什么 CVE-2021-20316(一个符号链接相关的漏洞)的修复工作要花费两年多的时间。有时候安全漏洞可以对代码的简单调整就能 fix。也有很多情况下的 fix 需要对一个项目中的大部分内部代码进行大规模重写。这个特殊的漏洞就属于后面这种情况,需要对 Samba 的虚拟文件系统(VFS)层进行公开方式地重写,来解决一个尚未公开的漏洞。

故事从 2019 年 5 月 Michael Hanselmann 的一份错误报告开始。当 SMB 客户端要求服务器端创建一个新目录时,服务器必须进行一些检查确保客户端有这个权限。其中,服务器需要确保请求的目录确实是位于这个 export 出来的 SMB 共享目录中,而不是位于服务器文件系统中其他地方的。不幸的是,在服务器端执行检查和实际创建目录这两个操作之间存在一个无法避免的时间窗口。如果恶意用户能够在这个窗口中用一个符号链接来替换新目录路径中的一个环节,那么 Samba 会傻乎乎地跟着这个链接跳到错误的地方来创建目录,这个结果肯定会让正常人感到不爽的,但是攻击者会很开心。

这是一个典型的检查时间/使用时间(TOCTOU,time-of-check/time-of-use)漏洞,已经是符号链接在各种漏洞场景中一种臭名昭著的利用方式了。这也是一个很难 fix 的漏洞,尤其是在 Samba 这样非常在乎可移植性的系统中。没有简单的、跨平台的方法来查询文件系统中的 path 的属性之后能安全地针对检查结果来采取行动,从而确保恶意攻击者不能在这个过程中篡改什么。不过,我们还是必须要做些工作的,所以 Samba 的开发者 Jeremy Allison 参与编写了一个 fix 程序。CVE 编号 CVE-2019-10151 就被正式分配给这个问题了。

The real problem

我们希望能想出一个快速的解决方案,但从一开始,Allison 就判定这里真正的问题是使用了 path name 跟与服务器端文件系统进行交互。每当一个 path 被传递给内核时,就必须重新执行一次 path walk through(也就是根据路径来逐层深入)操作;任何一个用户只要能够让这个对路径进行 walk through 的过程控制在某个时间到达某个位置(比如通过瞬间替换符号链接)都可以利用这种能力来迷惑我们的服务器。不过幸运的是,我们还有一种并不需要路径不可变的方法。

多年来,内核中已经支持了一组用来对文件句柄(打开了的文件的描述符,open file descriptor)而不是路径名称进行操作的系统调用。例如,仔细编写的服务器程序可以使用 openat2() 来为一个目标目录创建一个文件描述符,接下来进行检查来确保该目录是符合预设条件的,然后使用 mkdirat() 创建一个不会被重定向到错误地点的子目录。如果代码写得正确的话,就可以用这些系统调用来避免 Samba 中的这种 TOCTOU 竞态问题,但前提是必须要在代码里使用这些系统调用。而 Samba 在 2019 年的时候对这些系统调用的支持还不怎么好。当时,Allison 说:"最终我们需要修改 VFS 来使用所有系统调用的 syscallAT() 类型变体,但这是对 VFS 进行的一个重写工作,我们将不得不排好计划,无法现在完成"。

在花费了一个多月试图解决该漏洞(同时也包括人们开始找出来的其他跟符号链接相关的问题)的过程中,越来越明显地看到人们打算放弃了。到 2019 年 7 月中旬,Allison 似乎已经放弃了大规模的重写:"这将是一个漫长的过程,需要重写服务器中的路径名处理代码"。不过,这里有一个复杂的问题需要处理:在这项工作进行的同时,漏洞仍未得到修复,也未被披露。那么,如何向其他关注 Samba 项目开发工作的人来解释这些相关 patch 呢?Allison 说:

我们需要重写文件服务器端程序,从而[使]所有路径名操作中的符号链接竞态冲突的地方都改成安全实现。这事太大了,不能私下进行,所以我以 "让 VFS 现代化从而使用基于文件句柄的操作函数" 的名义来公开进行(没有明确说我 为什么 要这样做)。

这个改动除了需要隐藏其真正的目的之外还有几个方面要注意,因此使这个任务变得更加困难。其中之一就是 SMB 协议的第一版(SMB1)的核心代码就是基于 path name 的,因此服务端几乎无法使用其他方式。在 2019 年 9 月的 Samba 4.11 版本中,突然把 SMB1 废弃掉,就是由于这个问题所推动的决策。

相应地,SMB2 协议在很大程度上是基于文件句柄的,这就可以使服务器端软件实现可以更容易地采用同样的方式来工作了。但是 Samba 是一个有很多年历史包袱的古老程序了,所以很多内部接口仍然在使用 path name,哪怕可以很容易获取到文件句柄。这其中就包括了用来与具体的 host 文件系统对应的 kernel module 交互或者添加病毒扫描等功能的 VFS 接口。修改所有这些内部 API 是一项庞大的工作,将会触及到 Samba 服务器中的许多代码。

Thousands of changes

在接下来的两年里,Allison 为 Samba 仓库贡献了 1638 个提交(commit),占同期所有提交总数的 17%。并非所有的提交都是针对 VFS 的重写的,但其中大部分都是。而且 Allison 不是一个人在战斗,Ralph Böhme(1261 条提交)、Noel Power(438 条)和 Samuel Cabrero(251 条)也为这个项目做出了很大的贡献。Samba VFS 的 "现代化" 工作吸引了项目的大部分注意力,而对于那些不了解这里真正的问题的人来说,根本没意识到这件事情。

Böhme 在 2021 年的 SambaXP 活动中介绍了这项工作(视频在 https://www.youtube.com/watch?v=JUlT2QYddKY ,PPT 在 https://sambaxp.org/fileadmin/user_upload/sambaxp2021-slides/Boehme_The_New_VFS.pdf ),但从未提及到之所以推动这项(仍然紧迫的)工作的背后存在的安全问题。该讲座深入探讨了很多需要做的细节,以及各种问题是如何在 Linux 上解决的;对于任何想深入挖掘的人来说,建议观看该讲座。在 Samba 的 wiki 上也有一些信息。

在 2021 年 7 月,Allison 宣布胜利完成了工作:

随着 master 分支上的 commit e168a95c1bb1928cf206baf6d2db851c85f65fa9,我相信所有关于 meta-data 的竞态冲突问题现在在默认路径中都得到了 fix。async 进行的 DOS 属性读取仍然使用了基于 path 的 getxattr,还有一些 VFS module 目前对符号链接的处理也不是安全的,但我相信从 Samba 4.15.0 中开始缺省配置的 Samba 不会再有这种漏洞了。

在那之后,其余的基于 path 的扩展属性调用也被 fix 了。当然还有一些细节需要处理,包括原来的 CVE 编号由于太久没有更新而过期了。这就需要分配一个新的 CVE 编号,这就是为什么这个漏洞被称为 CVE-2021-43566。这项工作确实在 2021 年 9 月的 Samba 4.15.0 版本中出现的,但其实已经是在最初报告出漏洞的两年多之后了。

在漏洞披露文档中,Samba 项目是这样描述这个情况的:

我们花了两年半的时间来彻底重写 Samba VFS 层,以便在所有涉及到对返回给客户端的 metadata 进行读写的情况下不再使用基于 path name 的调用 API 了。这项工作最终在 Samba 4.15.0 中完成。[…]

由于现在所有的操作都是基于一个打开的句柄上完成的,我们相信在 Samba 4.15.0 以及所有未来版本的 Samba 中都已经完全消除了再次出现符号链接竞态冲突问题的可能性。

披露报告还指出,由于这个 rewrite 重写工作改动巨大,因此在早期的 Samba 版本中就无法修复这个漏洞了。

最终,Samba 项目成功地在这个漏洞的具体消息传播开来之前,在任何已知的对此漏洞利用的实例出现之前,将这个漏洞 fix 了。但这是一场赌博,攻击者往往会留意他感兴趣的项目的代码仓库,希望能注意到一些解决了尚未公开的漏洞的 patch。我们很自然地会将这个案例跟 Meltdown 和 Spectre 披露前的情况进行对比,当时这两个项目也需要进行大规模修改来解决尚未披露的漏洞。但是,与研究 Spectre 的开发者不同,Samba 的开发者们找到了一种公开进行工作的方式,确保了所有的 patch 都得到了该有的 review,并将问题披露后必须要解决掉的这个麻烦降到了最低。

这场赌博似乎已经得到了回报,尽管后续可能还是会有别的可能性。从那时开始,Allison 一直在指出,符号链接一般都很危险,而且其他项目几乎肯定也有类似的问题。他计划在今年晚些时候为 SambaXP 做一个演讲,估计会比 Böhme 在 2021 年的演讲有更多的细节和说服力。Samba 用户(至少是那些已经更新到最新版本的用户)可能可以对符号链接攻击方式免疫了,但我们仍在依赖的许多其他系统软件可能仍然会有这种问题。

(感谢 Jeremy Allison 回答问题并对本文的草稿进行技术审查)。

全文完
LWN 文章遵循 CC BY-SA 4.0 许可协议。

欢迎分享、转载及基于现有协议再创作~

长按下面二维码关注,关注 LWN 深度文章以及开源社区的各种新近言论~

054d98a8ad8bd8cfd03409cf4ca17628.png

GeoServer 2.11.1升级解决Eclipse Jetty 的一系列安全漏洞问题 下载 Geoserver2.32.4,先装了JDK17,再装了GeoServer2.23.4。网址访问一切正常,建了工作空间,在存储仓库里选 shapefile新建时,点“浏览”,竟无法弹出选文件的窗口,查看调用显示下错。接到安全评估报告,发现上面一堆关于Jetty的安全问题,后得知,是GeoServer2.11.1中用的jetty版本太低导致。Eclipse Jetty HTTP请求走私漏洞(CVE-2017-7658)2、先卸载原有的geoserver2.11.1,再卸载其配套的jre 8。 阅读详情

相关推荐

CVE-2021-26084——Confluence OGNL 注入漏洞分析

简述 2021年08月26日,Atlassian官方发布了Confluence OGNL 注入漏洞的风险通告,漏洞编号为CVE-2021-26084,漏洞等级:严重,漏洞评分:8.8。目前该漏洞安全补丁已更新。 Confluence是Atlassian公司的一个专业的企业知识管理与协同软件,也可以用于构建企业wiki,因此,Confluence的使用面很广。在某些情况下,未授权的攻击者可以构造特殊的请求,造成远程代码执行。 影响版本 组件

战神/calmness的博客 2553

记录RabbitMQ使用的一个bug

记录RabbitMQ使用过程的bug,出现bug条件:一是使用默认的vhost名字 / ,二是采用nginx作为管理端的代理转发

qq_44128460的博客 3295

5个企业级SOC平台横向对比:IBM QRadar vs Splunk vs 奇安信NGSOC

本文深度对比了IBM QRadar、Splunk和奇安信NGSOC等五大企业级SOC平台的核心能力,从架构设计、威胁检测、运营效率、成本模型和行业适配度五个维度进行解析。文章特别强调安全运营中心(SOC)在现代企业中的关键作用,并提供了实战数据和优化建议,帮助企业选择最适合自身需求的SOC解决方案。

a1b2c的博客 662

rabbitmq校验错误

可能是多个人用同一个用户出现冲突,重新创建一个用户即可

smile_foreach的博客 1362

保姆级教程:用Wokwi玩转ESP32 MicroPython仿真(含库文件配置指南)

本教程详细介绍了如何使用Wokwi平台进行ESP32 MicroPython仿真开发,包括库文件配置、传感器数据模拟和REPL调试技巧。通过Wokwi的仿真调试系统,开发者可以在浏览器中快速验证代码逻辑,提高开发效率,特别适合物联网项目的快速迭代。

weixin_29195615的博客 443

从零构建:如何用MATLAB和SDR硬件搭建你的第一个OFDM卫星通信原型系统

本文详细介绍了如何利用MATLAB和SDR硬件从零构建OFDM卫星通信原型系统。通过核心组件选型、开发环境配置、OFDM算法实现到系统集成与优化的完整流程,帮助通信工程学生和DIY爱好者快速掌握软件无线电技术在卫星通信中的应用。特别推荐使用HackRF One和MATLAB工具箱实现高性价比的OFDM系统验证。

pz890123456的博客 378

6 故障恢复RabbitMQ

待完善

qq_33304139的博客 590

【Python・统计学】(两)多因素方差分析(原理及代码)

自学笔记,分享给对统计学原理不太清楚但需要在论文中用到的小伙伴,欢迎大佬们补充或绕道。ps:本文不涉及公式讲解(文科生小白友好体质)~(部分定义等来源于知乎) 本文重点:多因素方差分析 【1.多因素方差分析简单原理】 【2.多因素方差分析步骤】 【3.多因素方差分析代码】

TUTO_TUTO的博客 4864

(CVE-2021-28164/CVE-2021-34429)Eclipse Jetty WEB-INF敏感信息泄露漏洞分析

本文主要从Jetty的两个WEB-INF信息泄露漏洞CVE-2021-28164和CVE-2021-34429,来分析如何通过编码和相对路径来绕过对敏感信息的校验,以及Jetty中对URL的PATH的解析方式和存在的问题。 漏洞信息 Jetty作为Eclipse基金会的一部分,是一个纯粹的基于Java的网页服务器和Java Servlet容器,其支持最新的Java Servlet API,同时支持WebSocket,SPDY,HTTP/2协议。 在Jetty9.4.37版本...

weixin_50464560的博客 9541

AI嵌入式系统测试:从确定性验证到概率性评估的体系构建

软件测试是保障系统质量的关键环节,其核心在于验证功能是否符合预期。传统嵌入式测试聚焦于确定性逻辑,通过代码覆盖、边界值分析等方法确保时序、内存等指标的精确性。随着人工智能技术的普及,深度学习模型以其概率性输出和复杂非线性映射的特性,为嵌入式系统带来了新的能力,也彻底改变了测试的范式。AI模型的‘黑盒’特性使得测试目标从‘绝对正确’转向‘置信度满足’,并催生了准确率、F1分数等新指标。在工程实践中,这种融合要求测试体系必须扩展维度,将数据质量、模型量化损失、资源约束下的精度与性能权衡纳入核心考量。尤其在嵌入式

weixin_26766559的博客 381

(八)基于MuJoCo的LeRobot SO100仿真操控实战指南(操作优化)

本文详细介绍了如何在MuJoCo仿真环境中搭建并优化LeRobot SO100机械臂的操控。通过两种核心模式(纯键盘仿真与实机镜像同步)的实战演示,重点讲解了关键的参数标定方法,以实现虚拟模型与真实硬件的精准同步。文章还提供了性能优化技巧,旨在帮助开发者构建高效、安全的机器人算法开发与测试流程。

weixin_29083649的博客 317

关于rabbitmq安全漏洞的问题

在我们的很多个项目中都用到了消息中间件,虽然现在有些已经改用了kafka,但是还有相当一部分依然用的是rabbitmq。 而最近呢,我们收到了一份关于安全漏洞扫描的文档,说我们的rabbitmq存在着一些安全漏洞问题,既然是有问题,自然是需要整改的,但是看完文档以后,发现这种安全漏洞问题似乎并不是很好解决。 文档中指出的问题主要有这样三个: 一、更改密码没有验证旧密码 说的具体点

程序员涂小哥的技术博客 1万+

向华为学习——解读158页 华为敏捷园区网技术解决方案【附全文阅读】

华为敏捷园区网解决方案通过策略随行和体验随身技术,满足移动办公场景下的网络需求。该方案采用敏捷交换机和防火墙自动执行策略配置,实现用户身份认证与业务策略的无缝衔接,且策略配置与IP地址解耦,简化了管理流程。相比传统技术,该方案有效解决了用户分级、QoS保障、无线接入等关键问题,确保用户在移动过程中获得一致的网络体验。

cdfunlove的博客 379

jQuery 资源管理错误漏洞CVE-2021-21252附修复方案

jQuery是美国John Resig个人开发者的一套开源、跨浏览器的JavaScript库。该库简化了HTML与JavaScript之间的操作,并具有模块化、插件扩展等特点。jQuery 1.19.3版本之前存在资源管理错误漏洞,该漏洞源于jquery验证包含一个或多个正则表达式,这些正则表达式容易受到ReDoS(正则表达式拒绝服务)的攻击。1.在包含 jQuery和插件的页面上选择一个表单来验证并调用该validate方法。2.通过 requirejs 在你的模块中包含 jQuery 和插件。

鸭梨山大。 2687

STM32智能小车控制舵机转向

文章目录前言一、舵机简单介绍及接线方式二、cubeMX配置三、代码解析总结 前言 本文将带大家学习如何驱动舵机转向 一、舵机简单介绍及接线方式 信号线(黄线)红线(电源线)棕色(地线) 舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内的角度控制脉冲部分,总间隔为2ms。以180度角度伺服为例,那么对应的控制关系是这样的: 0.5ms--------------0度; 1.0ms------------45度; 1.5ms------------90度; 2

m0_49476241的博客 8612

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【教程】一些服务器常见漏洞的修复方法,亲测超详细

一些常见的漏洞修复

xfxuezhang.cn 2万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

安全圈最被低估的10个神器:一个比一个强大,大佬都在偷偷用!零基础入门到精通,看这篇就够了!赶紧收藏!

这些冷门的网络安全工具是你工具箱中的强大补充,它们提供了独特的功能,覆盖从侦察到漏洞利用的多个环节。虽然像 Nmap 和 Burp Suite 这样的工具不可或缺,但探索像 CyberChef、BloodHound 和 Impacket 这样的“宝藏工具”能让你在网络安全工作中更加高效和灵活。

baimao__Ch的博客 4675

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Jenkins 命令执行 -- jetty 敏感信息泄露 --(CVE-2021-2816)&&(CVE-2017-1000353)&&(CVE-2018-1000861)

对于

weixin_74985952的博客 1505

zookeeper3.6.3升级jetty9.4.47解决安全漏洞CVE-2022-2048和CVE-2021-28169

zookeeper3.6安全漏洞CVE-2022-2048和CVE-2021-28169, 替换zookeeper的lib目录下的7个jetty为9.4.47版本jar包后重启zookeeper,即可。jetty9.4.47下载地址https://repo1.maven.org/maven2/org/eclipse/jetty/jetty-distribution/9.4.47.v20220610/

shy_snow的专栏 1万+

LWN:符号链接带来的麻烦!

关注了就能看到更多这么棒的文章哦~The trouble with symbolic linksJuly 7, 2022This article was contributed by Chris RiddochDeepL assisted translationhttps://lwn.net/Articles/899543/在 2022 年的 sambaXP 会议上,Je...

Linux News搬运工 415

CVE-2021-21972 vCenter 远程命令执行漏洞

漏洞介绍 vSphere 是 VMware 推出的虚拟化平台套件,包含 ESXi、vCenter Server 等一系列的软件。其中 vCenter Server 为 ESXi 的控制中心,可从单一控制点统一管理数据中心的所有 vSphere 主机和虚拟机,使得 IT 管理员能够提高控制能力,简化入场任务,并降低 IT 环境的管理复杂性与成本。 vSphere Client(HTML5)在 vCenter Server 插件中存在一个远程执行代码漏洞。未授权的攻击者可以通过开放 443 端口的服务器向 v

per_se_veran_ce的博客 1937

CVE-2021-30116: Kaseya VSA 远程代码执行漏洞通告

报告编号:B6-2021-070601 报告来源:360CERT 报告作者:360CERT 更新日期:2021-07-06 0x01 漏洞简述 2021年07月06日,360CERT监测发现Kaseya发布了VSA管理软件的风险通告,漏洞等级:严重,漏洞评分:9.8。 Kaseya VSA是一款企业用于集中IT管理的软件。分为管理端和用户端,管理端可以批量的控制用户端设备,例如在用户端设备上执行命令、执行脚本、开启/关闭电源等。 根据其官方通告以及监测到的REvil利用VSA漏洞的勒索事件,VSA软件中.

爱国小白帽 3075

CVE-2021-3156 漏洞复现笔记

CVE-2021-3156复现笔记

weixin_46483787的博客 1万+

Windows HTTP协议栈蠕虫级高级漏洞(CVE-2021-31166)修复方案

Windows HTTP协议栈蠕虫级高级漏洞(CVE-2021-31166)修复方案 一、基本情况 Windows HTTP协议栈蠕虫级高级漏洞(CVE-2021-31166),未经身份验证的攻击者可通过向目标设备发送构造的数据包,无需用户交互利用该漏洞执行任意代码。目前,漏洞细节已公开,厂商已发布新版本修复该漏洞。 二、漏洞等级 高危 三、漏洞描述 Windows HTTP协议栈蠕虫级高级漏洞(CVE-2021-31166)漏洞存在于HTTP 协议栈 (http.sys) 的处理程序中,未经身份验证的远程

weixin_48474855的博客 1795

linux 禁用smb服务,Samba 4.11 发布,更好的可扩展性与默认禁用SMB1

Samba 4.11是这个SMB/CIFS/AD实现的最新大功能更新,用于提供与Linux和其他平台更好的Windows互操作性。 Samba 4.11的变化非常多,我们有点惊讶它没有被称为Samba 5.0。也许最令人兴奋的是Samba 4.11具有很大的可扩展性改进,它应该能够扩展到100000多个用户。Samba 4.11中的一些其他重大变化是将默认流程模型更改为prefork,samba-...

weixin_39716160的博客 1065
上一篇: LWN:允许其他CPU来清空此CPU的page list!
下一篇: LWN:对4.4稳定版的最后一次总结分析!
LinuxNews搬运工
博客等级 码龄7年 438粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值