CVE-2026-65660 SharePoint SafeControls Check
Compare a self-hosted SharePoint farm build to the 2026-08-11 SafeControls fix for CVE-2026-65660, then check anonymous access. GET only. No exploit payload.
Compare a self-hosted SharePoint farm build to the 2026-08-11 SafeControls fix for CVE-2026-65660, then check anonymous access. GET only. No exploit payload.
This workflow takes a list of self-hosted SharePoint URLs and tells you which farms still run a build older than the 2026-08-11 fix for CVE-2026-65660. SharePoint Server 2016, SharePoint Server 2019, and Subscription Edition publish a build number the detect node can read. SharePoint Server 2013 is end of life and has no fix in this graph. Detect sends GET requests to the farm and classifies the build. It does not post a payload and it does not write to the farm. A second node then checks whether anonymous access is enabled, which is the precondition for a pre-auth path. That check is also GET only. Point the list at scope you are authorised to test and treat an affected build as the ticket for exposure management.
Run it again when farms are patched or new sites appear. A build that was in range last week should come back patched after the August update.
targets reads a file of SharePoint URLs, or writes https://sharepoint.example.com when none is attached.detect GETs the farm and reads the build. Each row is classified against the fixed builds from the 2026-08-11 patch.poc runs after detect. It checks whether anonymous access is enabled. It does not send an exploit payload.summary writes counts by status and the affected subset.url or host. If no file is attached, the default is https://sharepoint.example.com.sharepoint_findings.jsonl. One detect row per URL: target, product, version, and status.sharepoint_poc.jsonl. The detect row plus whether anonymous access was enabled.summary.jsonl. One object: targets checked, status counts, and the affected subset.The records below are an illustrative fixture for the default host, not a live result. They show the shape of a farm the version oracle does not recognise, so the anonymous-access check does not run.
detect| target | product | version | cve | status | evidence |
|---|---|---|---|---|---|
| https://sharepoint.example.com | unknown | — | CVE-2026-65660 | NOT_SHAREPOINT | no SharePoint markers |
poc| target | cve | status | poc_mode | poc_attempted | poc_result |
|---|---|---|---|---|---|
| https://sharepoint.example.com | CVE-2026-65660 | NOT_SHAREPOINT | canary_non_intrusive | false | skipped_not_sharepoint |
summary{"cve": "CVE-2026-65660", "product": "Microsoft SharePoint Server", "targets_checked": 1, "status_counts": {"NOT_SHAREPOINT": 1}, "poc_result_counts": {"skipped_not_sharepoint": 1}, "affected_targets": []}Builds older than the 2026-08-11 fix. SharePoint Server 2016 is fixed at 16.0.5565.1001. SharePoint Server 2019 is fixed at 16.0.10417.20198. Subscription Edition is fixed at 16.0.19725.20522. SharePoint Server 2013 has no fix in this graph.
No. Affected is a build comparison. The second node only checks whether anonymous access is enabled. It does not send an exploit payload.
It runs only for SharePoint rows detect already marked affected. A host that is not SharePoint is skipped. A host outside the affected range is skipped.
Both steps are read-only GET. Run it only against scope you are authorised to test.
Get a personalized demo
A 30-minute walkthrough. We map the platform to your stack and answer pricing and deployment questions for your environment.