Microsoft Called This Patch 'Important.' Attackers Called It an Opening.

Share
Microsoft Called This Patch 'Important.' Attackers Called It an Opening.
Modern Endpoint · Security Insights

Step-by-Step: Configuring Security News — CISA: Microsoft SharePoint flaw now exploited

I was on-site with a financial services customer in late 2024 when their SOC flagged anomalous SharePoint activity at 2:47 AM. No alerts from their SIEM. No Defender incident. The detection came from a junior analyst who noticed a pattern in raw logs — an authenticated account pulling site collection data at machine speed. By the time we traced the path, the attacker had been inside the SharePoint environment for eleven days. Authenticated. Trusted. Silent.

15 min read ArticleModernEndpoint

🔍 What CISA Actually Said — and What It Means for Enterprise Architecture

CISA's KEV catalog entry for CVE-2024-38094 is terse. It states that the vulnerability allows remote code execution via deserialization of untrusted data in Microsoft SharePoint Server. CISA mandated Federal Civilian Executive Branch (FCEB) agencies patch by October 28, 2024.

What CISA does not explain is the attack chain context. This vulnerability was observed being used as an initial access vector into enterprise networks — not as an isolated SharePoint compromise. Once RCE is achieved on the SharePoint server, attackers move laterally into the broader Windows Server infrastructure, harvest credentials via LSASS dumping, and pivot toward Active Directory.

The CISA advisory is available at: https://www.cisa.gov/known-exploited-vulnerabilities-catalog

Microsoft's security advisory for CVE-2024-38094 is documented under the July 2024 Patch Tuesday release. The patch was classified as Important, not Critical — which is part of why many organizations deprioritized it. That classification reflects exploitability complexity at the time of release, not real-world observed exploitation. By October 2024, CISA confirmed it was being actively exploited in the wild.

⚡ Assumption Challenge
Most organizations believe: "Important-rated vulnerabilities can wait for the next maintenance window."
Reality: Microsoft's severity ratings reflect exploit complexity at time of disclosure — not observed exploitation in the wild. CISA KEV additions change the calculus completely. Any KEV-listed vulnerability requires immediate remediation regardless of original CVSS severity.

---

⚠️ Understanding CVE-2024-38094 — The Technical Reality

CVE-2024-38094 affects Microsoft SharePoint Server 2016, 2019, and SharePoint Server Subscription Edition. It is a deserialization vulnerability in SharePoint's API layer. An authenticated attacker with Site Owner permissions can send a crafted API request that causes the server to deserialize malicious data, resulting in arbitrary code execution in the context of the SharePoint application pool service account.

That last sentence carries enormous weight. The service account running SharePoint typically has elevated privileges across the server farm. On most enterprise deployments I have reviewed, that account also has rights to SQL Server, Active Directory service objects, and often file shares. It is a high-value target.

The prerequisites for exploitation:

  • Network access to the SharePoint Server (internal network or exposed to internet)
  • Authenticated session with Site Owner or higher permissions
  • No additional privilege escalation required on the server itself

This is not a public-facing anonymous exploit. It requires an authenticated account. That requirement is also why it was initially rated Important rather than Critical. But attackers routinely obtain SharePoint credentials through phishing, credential stuffing, or earlier-stage compromises. The authentication bar is not the protection it appears to be.

🔍 Reality Check
What most organizations believe: Requiring authentication means the vulnerability is only exploitable after a separate compromise event — making it lower priority.
What actually happens in production: Attackers routinely harvest SharePoint credentials via phishing or password spraying weeks before exploiting an RCE vulnerability. Authentication is a hurdle, not a wall. Once any user credential is compromised, every authenticated-only vulnerability in your environment becomes exploitable.
Danger

If your SharePoint Server is accessible from the internet — even through a reverse proxy — and any user accounts are not protected by MFA, CVE-2024-38094 represents a direct path to server-level code execution. Treat this as Critical in your environment regardless of Microsoft's published severity rating.

---

🔐 Step 1: Determine Your Exposure

Before patching, before hunting, before alerting — know what you are protecting.

Identify All SharePoint Server Instances

Run this against your SCCM/Configuration Manager inventory or use Microsoft Defender for Endpoint's software inventory:

powershell

Get-WmiObject -ComputerName $servers -Class Win32_Product |
    Where-Object { $_.Name -like "*SharePoint*" } |
    Select-Object Name, Version, PSComputerName |
    Export-Csv -Path "C:\Temp\SharePoint_Inventory.csv" -NoTypeInformation

The affected versions and builds:

ProductVulnerable BuildPatched BuildKB Article
SharePoint Server Subscription Edition< 16.0.17928.2028816.0.17928.20288KB5002606
SharePoint Server 2019< 16.0.10416.2000216.0.10416.20002KB5002607
SharePoint Server 2016< 16.0.5461.100016.0.5461.1000KB5002608

Reference: https://learn.microsoft.com/en-us/officeupdates/sharepoint-updates

Check Internet Exposure

If your SharePoint Server is published externally, identify whether WAF rules for deserialization attacks are active. Most WAF implementations do not have application-layer SharePoint-specific rules by default.

powershell
Test-NetConnection -ComputerName sharepoint.yourdomain.com -Port 443
🎯 Enterprise Decision Point
Before patching, make an explicit decision: Is your SharePoint Server on the internet? If yes — emergency patch now, regardless of maintenance window governance. If internal-only — you still patch immediately, but your threat model changes. Internal-only exposure still allows lateral movement post-compromise. The patch timeline does not change. Your communication posture to leadership does.

---

🔐 Step 2: Apply the Security Patch

Patching SharePoint Server requires a specific sequence. Skipping steps causes farm instability.

Pre-Patch Checklist

  • Document current SharePoint build version on all servers in the farm
  • Back up SharePoint configuration and content databases
  • Verify all servers in the farm will be patched — partial patching breaks farm consistency
  • Schedule during a maintenance window if internal-only exposure (emergency window if internet-facing)
  • Notify the SharePoint farm administrator — the patch requires PSConfig execution after installation

Patch Installation Sequence

powershell

.\ubersrv2019-kb5002607-fullfile-x64-glb.exe /passive /norestart

cd "C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\BIN"
.\PSConfig.exe -cmd upgrade -inplace b2b -wait -cmd applicationcontent -install -cmd installfeatures -cmd secureresources -cmd services -install
Warning

Do NOT run PSConfig until the binary patch is installed on every server in the farm. Running PSConfig on a partially patched farm causes schema version conflicts that require manual database recovery. I have seen this scenario take a farm offline for 18 hours.

Validate the Patch

powershell
(Get-SPFarm).BuildVersion

Get-SPServer | Select-Object Name, NeedsUpgrade, Role

Reference: https://learn.microsoft.com/en-us/sharepoint/upgrade-and-update/apply-updates-for-sharepoint-server-2016

---

🔍 Step 3: Hunt for Existing Compromise

Patching stops future exploitation. It does not evict an attacker already inside. Before you patch and move on, run a compromise assessment.

SharePoint ULS Log Analysis

SharePoint ULS (Unified Logging Service) logs are the primary forensic source for exploitation attempts. Look for deserialization errors, unexpected API calls, and unusual authenticated activity patterns.

ULS logs are located at: C:\Program Files\Common Files\microsoft shared\Web Server Extensions\16\LOGS

Look for these indicators:

  • System.Runtime.Serialization exceptions
  • Unexpected /_api/ endpoint calls with large POST bodies
  • Activity from service accounts at unusual hours
  • Multiple rapid site collection enumeration requests

Microsoft Defender for Endpoint - KQL Hunting

If your SharePoint servers are onboarded to Microsoft Defender for Endpoint, use these queries in Microsoft Defender XDR Advanced Hunting:

kql
// Detect suspicious process execution from SharePoint application pool
DeviceProcessEvents
| where Timestamp > ago(30d)
| where InitiatingProcessFileName in~ ("w3wp.exe", "owstimer.exe")
| where FileName !in~ ("csc.exe", "vbc.exe", "MSBuild.exe") // Known legitimate child processes
| where InitiatingProcessCommandLine has_any ("SharePoint", "WSS")
| project Timestamp, DeviceName, FileName, ProcessCommandLine, InitiatingProcessFileName, InitiatingProcessCommandLine
| order by Timestamp desc
kql
// Detect LSASS access originating from SharePoint server processes
DeviceEvents
| where Timestamp > ago(30d)
| where ActionType == "LsassProcessAccess"
| where InitiatingProcessFileName in~ ("w3wp.exe", "owstimer.exe", "spasohost.exe")
| project Timestamp, DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine, AdditionalFields
| order by Timestamp desc
kql
// Detect network connections from SharePoint app pool to internal hosts (lateral movement indicator)
DeviceNetworkEvents
| where Timestamp > ago(30d)
| where InitiatingProcessFileName =~ "w3wp.exe"
| where RemotePort in (445, 135, 5985, 5986, 3389) // SMB, RPC, WinRM, RDP
| where RemoteIPType != "Public"
| project Timestamp, DeviceName, RemoteIP, RemotePort, InitiatingProcessFileName, RemoteUrl
| order by Timestamp desc
"Patching closes the door. Threat hunting checks whether someone already came through it."

Microsoft Sentinel — Audit Log Analysis for SharePoint Online (Cloud Telemetry Supplement)

If you have Microsoft Sentinel connected to your Microsoft 365 audit logs, use this KQL to identify anomalous SharePoint access patterns from the same user accounts that have access to your on-premises farm:

kql
// Identify SharePoint access anomalies - unusual volume from single user
OfficeActivity
| where TimeGenerated > ago(30d)
| where RecordType == "SharePoint"
| where Operation in ("FileAccessed", "FileDownloaded", "SiteCollectionAdminAdded")
| summarize OperationCount = count() by UserId, ClientIP, bin(TimeGenerated, 1h)
| where OperationCount > 500
| order by OperationCount desc
kql
// Detect SiteCollectionAdmin privilege escalation in audit logs
OfficeActivity
| where TimeGenerated > ago(30d)
| where Operation == "SiteCollectionAdminAdded"
| where RecordType == "SharePoint"
| project TimeGenerated, UserId, Site_Url, TargetUserOrGroupName, ClientIP
| order by TimeGenerated desc
Note

These Sentinel queries target SharePoint Online audit telemetry, not on-premises SharePoint Server directly. For on-premises SharePoint Server forensics, your primary sources are ULS logs, Windows Security Event Logs on the server, and MDE telemetry if the server is onboarded. Ensure your SharePoint servers are MDE-onboarded before relying on the Advanced Hunting queries above.

---

🧩 Step 4: Harden the SharePoint Environment Post-Patch

Patching addresses the specific CVE. Hardening reduces the attack surface that made exploitation impactful in the first place.

Service Account Privilege Reduction

The SharePoint application pool service account is typically over-privileged. Apply least privilege:

powershell
Get-SPManagedAccount | Select-Object UserName, AutomaticChange, PasswordLastChanged
⚡ Assumption Challenge
Most organizations believe: "The SharePoint service account needs broad permissions to function correctly."
Reality: Most SharePoint farms run with service accounts that are local administrators or have domain-wide read rights inherited from initial setup. Neither is required for normal operation. The over-provisioning is a setup artifact, not a functional requirement.

Network Segmentation Review

SharePoint Servers should not have unrestricted outbound internet access or flat internal network access. Review and enforce:

  • Inbound: Only from load balancer / reverse proxy, NOT direct from user workstations
  • Outbound: Only to required Microsoft endpoints (Windows Update, telemetry, Office integration)
  • Lateral: No direct access from SharePoint server to domain controller except LDAP/Kerberos on required ports
  • SQL: SharePoint-to-SQL traffic on port 1433 only, restricted by host-based firewall rules

Enable MFA for All SharePoint-Capable Accounts

This is not optional if your SharePoint is published externally. The entire authentication prerequisite for this exploit collapses if every account requires MFA. Use Microsoft Entra ID Conditional Access to enforce MFA on all accounts with SharePoint Site Owner or higher permissions.

Reference: https://learn.microsoft.com/en-us/entra/identity/conditional-access/overview

⚡ Assumption Challenge
Most organizations believe: "We have MFA enabled." When pressed, they mean it's available — not enforced for privileged SharePoint users via Conditional Access policy."
Reality: MFA "enabled" in Entra ID does not mean MFA enforced for SharePoint Site Owners. Conditional Access policies must explicitly target this population. Per-user MFA registration does not equal policy-enforced MFA at resource access time.

---

🚫 What This Technology Does NOT Solve

Patching CVE-2024-38094 and running the hunt queries addresses a specific, known vulnerability. It does not solve the architectural problems that made this situation possible.

Patching does not address:

  • Over-privileged service accounts that amplify post-exploitation impact
  • Flat network architectures that enable lateral movement after server compromise
  • Missing MDE onboarding for server workloads that blinds the SOC to post-exploitation activity
  • SharePoint governance debt — site collections with excess Site Owner grants are persistent attack surface
  • The absence of a vulnerability management process that incorporates CISA KEV additions as an emergency trigger
  • Credential hygiene across accounts with SharePoint access — if credentials are weak or reused, the authentication barrier for this exploit is negligible
  • SharePoint Online migration strategy — organizations still running on-premises SharePoint Server carry infrastructure risk that SharePoint Online eliminates through Microsoft's patch responsibility model
⚖️ Trade-Off
Emergency patching SharePoint Server outside normal maintenance windows creates operational risk. PSConfig failures mid-execution can take the farm offline. That risk must be weighed against active exploitation risk. If your farm is internet-facing and unpatched — the operational risk of emergency patching is lower than the security risk of waiting. If internal-only — a controlled emergency window within 48-72 hours is defensible. Document the risk decision either way. Your auditors will ask.

---

📊 Step 5: Establish Ongoing Detection Coverage

Patching once is not a detection strategy. Build durable coverage that catches similar exploitation patterns in the future.

Defender for Endpoint — Custom Detection Rule

kql
// Custom detection: SharePoint w3wp spawning suspicious child processes
// Schedule: Every hour, look back 1 hour
DeviceProcessEvents
| where Timestamp > ago(1h)
| where InitiatingProcessFileName =~ "w3wp.exe"
| where FileName in~ ("cmd.exe", "powershell.exe", "wscript.exe", "cscript.exe", "mshta.exe", "certutil.exe", "bitsadmin.exe")
| where InitiatingProcessCommandLine has_any ("SharePoint", "STS", "WSS")
| project Timestamp, DeviceName, FileName, ProcessCommandLine, InitiatingProcessFileName

Create this as a Custom Detection Rule in Microsoft Defender XDR under: Hunting > Custom detection rules. Set alert severity to High and map to MITRE ATT&CK T1190 (Exploit Public-Facing Application).

Sentinel Alert Rule — SharePoint Server Lateral Movement

kql
// Sentinel: Detect outbound connections from SharePoint server to internal SMB/WinRM
// Data connector: MDE (DeviceNetworkEvents forwarded via Sentinel connector)
DeviceNetworkEvents
| where TimeGenerated > ago(1h)
| where DeviceName has_any ("sharepoint", "sps", "sp-") // Adjust to your naming convention
| where InitiatingProcessFileName =~ "w3wp.exe"
| where RemotePort in (445, 5985, 5986)
| project TimeGenerated, DeviceName, RemoteIP, RemotePort, InitiatingProcessCommandLine

---

⏱ Production Lifecycle
Day 1
Patch applied to all farm servers. PSConfig executed successfully. Build version validated. Compromise hunt completed using ULS logs and MDE Advanced Hunting. Custom detection rule created in Defender XDR. Service account audit completed. Internet exposure reviewed.
Month 6
Custom detection rules reviewed for false positive rate. Service account least privilege enforcement completed (initial hardening typically deferred post-patch). Conditional Access policies covering SharePoint Site Owners enforced. Network segmentation for SharePoint servers reviewed at firewall level. SharePoint Server migration to Online evaluated in roadmap discussion.
Year 2
CISA KEV integration into vulnerability management process formalized — KEV additions trigger emergency patch assessment within 24 hours. SharePoint Server farm either migrated to Online or on a formal end-of-life plan. MDE onboarding for all server workloads complete. Detection coverage reviewed quarterly against updated MITRE ATT&CK mappings.

---

💡 Step 6: Fix the Governance Process That Created This Exposure

I have been in this conversation dozens of times. The patch existed. The vulnerability was known. The exposure window was four months because a governance process categorized SharePoint as non-critical and scheduled it for a quarterly window.

That is the architectural failure. Not the vulnerability. Not even the lack of detection.

The CISA KEV catalog is one of the most operationally useful signals available to enterprise security teams, and most organizations have not integrated it into their vulnerability management workflow in a meaningful way. It should trigger an automatic exception to standard patch windows. Full stop.

Build this into your vulnerability management governance:

  1. Subscribe to CISA KEV updates via RSS or API: https://www.cisa.gov/known-exploited-vulnerabilities-catalog
  2. Any KEV addition affecting software in your environment triggers an emergency patch assessment within 24 hours
  3. Emergency patch assessment output: patch within 7 days for internet-facing, 14 days for internal-only, documented risk acceptance if delayed
  4. The decision to delay requires CISO sign-off, not IT management sign-off
powershell
$kevData = Invoke-RestMethod -Uri "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json"
$msEntries = $kevData.vulnerabilities | 
    Where-Object { $_.vendorProject -eq "Microsoft" } |
    Where-Object { $_.dateAdded -gt (Get-Date).AddDays(-30).ToString("yyyy-MM-dd") } |
    Select-Object cveID, vulnerabilityName, dateAdded, dueDate, shortDescription
$msEntries | Format-Table -AutoSize
"CISA's KEV catalog is a gift. Most organizations treat it like optional reading."
🎯 Enterprise Decision Point
Does your organization have a formal process that elevates CISA KEV additions to emergency patch status with automatic governance escalation? If the answer is anything other than an unqualified yes — you have an architectural governance gap, not a patching gap. Patching without fixing the governance means the next KEV-listed vulnerability will create the same four-month exposure window.

---

🎯 Final Architect Recommendation

I would tell a customer the following directly: deploy the patch today. There is no defensible reason to wait.

If your SharePoint farm is internet-facing and you have not patched CVE-2024-38094, you are operating a CISA-confirmed actively exploited vulnerability with a four-month head start for attackers. That is not a risk to accept. That is a risk to document and escalate to the board if you cannot patch immediately.

If your farm is internal-only, your threat model allows slightly more control, but the compromise chain still ends with lateral movement and Active Directory damage. Internal-only does not mean safe.

What to do in the next 72 hours:

  1. Patch all SharePoint Server instances regardless of version — all three are affected
  2. Run the MDE Advanced Hunting queries above and review for indicators before patching
  3. Verify your SharePoint servers are MDE-onboarded — if they are not, fix that immediately
  4. Review service account privileges and remove local admin rights from SharePoint service accounts
  5. Verify MFA enforcement via Conditional Access for all Site Owner level accounts

What to fix in the next 30 days:

  1. Integrate CISA KEV into your vulnerability management emergency process
  2. Conduct a full SharePoint Site Owner audit and remove excess grants
  3. Review network segmentation between SharePoint servers and the rest of your environment
  4. Begin the business case for SharePoint Online migration — on-premises SharePoint carries infrastructure risk that does not exist in the cloud model

What I would never do:

I would never accept a risk deferral on an actively exploited CISA KEV vulnerability without CISO-level written acknowledgment and a defined remediation date. "We'll get to it next quarter" is not a risk acceptance posture. It is an undocumented liability.

The organizations that handled this well had two things in common: their SharePoint servers were onboarded to MDE, and they had a governance trigger that treated CISA KEV additions as emergency-class events. Everything else is follow-on work. Those two capabilities determine whether you detect exploitation before or after the attacker achieves their objective.

---

🎯 The Takeaway

  • If CISA adds a vulnerability to the KEV catalog, treat it as Critical regardless of Microsoft's original severity rating. The KEV designation means active exploitation is confirmed. Your CVSS score is now irrelevant to your patch timeline.
    • If your SharePoint Server is internet-facing and unpatched for CVE-2024-38094, initiate an emergency maintenance window immediately. The operational risk of an emergency patch is lower than the security risk of an actively exploited RCE vulnerability on an externally accessible server.
      • Always run a compromise assessment before and after patching. Patching without hunting assumes no attacker entered during the exposure window. After a CISA KEV confirmation, that assumption is indefensible.
        • If your SharePoint service accounts have local administrator rights or broad domain read permissions, remove them now. The vulnerability's impact multiplies with every excess privilege the service account holds. Least privilege is not a best practice — it is a blast radius control.
          • If your vulnerability management process does not have a CISA KEV escalation trigger, build one before the next KEV addition affects your environment. Governance that requires a security incident to trigger emergency patching will always produce four-month exposure windows. The process must be proactive, not reactive.

Read more