Research details
ComponentMicrosoft.SharePoint.WebPartPages.ToolPane.GetPartPreviewAndPropertiesFromMarkup() — EditingPageParser.VerifyControlOnSafeList() SafeControls register-directive validation
PreconditionsUnpatched SharePoint Server 2016 (below 16.0.5565.1001), SharePoint Server 2019 (below 16.0.10417.20198), or Subscription Edition (below 16.0.19725.20522) as of the August 11, 2026 fix; the researcher also states SharePoint 2013 is affected. Network reachability to SharePoint web endpoints. Pre-auth only when the web application permits anonymous page viewing (common internet-facing setup); otherwise low-privileged authenticated access (CVSS PR:L). The ToolPane markup payload is POSTed to any WebPartPage-derived page containing a WebPartZone (observed at /_layouts/15/AddGallery.aspx, not ToolPane.aspx). agent
DeliveryNetwork HTTP POST of crafted WebPart/Control markup to any WebPartPage-derived endpoint containing a WebPartZone (e.g. /_layouts/15/AddGallery.aspx or ToolPane.aspx). The markup quote-injects a second <%@ Register directive that bypasses EditingPageParser.VerifyControlOnSafeList, loading ExpandedWrapper`2/XamlServices/ObjectDataProvider gadgets that deserialize a LosFormatter (ysoserial ActivitySurrogateSelectorGenerator) payload into an in-memory webshell; on farms with anonymous page viewing the request needs no credentials.
Public PoCno
Exploit notesNo runnable public exploit found this cycle: the only GitHub repo (HORKimhab/CVE-2026-65660) is a PDF mirror with a template README and no exploit code, so public_poc_exists stays 'no'. However Viettel Cyber Security published a detailed writeup with the complete exploit markup: quote-injected <%@ Register directives (Src attribute breaking out with double quotes, ignoreParentFrozen attribute, publishingribbon tagprefix auto-allowlisted by EditingPageParser.InitializeRegisterTable) resolve to System.Data.Services.Internal.ExpandedWrapper`2 + System.Xaml.XamlServices + ObjectDataProvider invoking LosFormatter (ysoserial ActivitySurrogateSelectorGenerator) for an in-memory webshell. Chaining with the ToolPane authentication gap (ToolPanePage calls SPUtility.EnsureAuthentication in OnInit, but ToolPane instantiated via WebPartPage.OnInit ToolPaneCreationAndInitialization skips it) yields pre-auth RCE on anonymous-enabled farms. CVSS attack complexity LOW (CVSS 8.8). The researcher states the technique was used in real-world operations. Stock IIS W3C access logs record only method/path/status — the payload lives in the POST body, so detection needs WAF/IDS request-body capture or a custom IIS log format.
SummaryMicrosoft SharePoint Server 2016, 2019, and Subscription Edition contain a code injection vulnerability (CVSS 8.8, CWE-94) in ToolPane.GetPartPreviewAndPropertiesFromMarkup, where quote injection through Microsoft.Web.Design.RegisterDirective.GetHtml lets an attacker smuggle a second <%@ Register directive past EditingPageParser.VerifyControlOnSafeList and reach XamlServices.Parse with a LosFormatter payload for an in-memory webshell. Viettel Cyber Security's writeup shows the ToolPane code path is reachable pre-auth on web applications that allow anonymous page viewing, and the researcher reports real-world use of the technique. Microsoft shipped the fix in the August 11, 2026 patch (which also disables the method by default); CISA added the CVE to KEV on September 25, 2026 with a September 28, 2026 remediation due date. No runnable public PoC repository was found — only a full technical writeup with payload markup.