SharePoint security fixes released with July 2026 PU and offered through Microsoft Update

Important: If your current farm patch level is September 2025 CU, execute the following PowerShell script to correct the folder permissions on the relevant folders otherwise installing the SharePoint fixes will fail:
Fix-SeptemberCU-Permission-Problem.ps1

Alternatively you can also remove the NT Authority\system account from WSS_WPG and IIS_IUSRS local security groups of the SharePoint machines.

For more details check this article: Trending Issue: SharePoint fixes fail to install after installation of September 2025 CU

Below are the security fixes for the SharePoint OnPrem versions released this month.

SharePoint Server 2016:

  • KB 5002891 – SharePoint Server 2016 (language independent)
  • KB 5002892 – SharePoint Server 2016 (language dependent)

Microsoft Support recommends to install the complete July 2026 CU for SharePoint 2016 rather than individual security fixes.

SharePoint Server 2019:

  • KB 5002883 – SharePoint Server 2019 (language independent)
  • KB 5002885 – SharePoint Server 2019 (language dependent)

Microsoft Support recommends to install the complete July 2026 CU for SharePoint 2019 rather than individual security fixes.

SharePoint Server Subscription Edition:

  • KB 5002882 – SharePoint Server Subscription Edition

This security fix is identical with July 2026 CU for SharePoint Server Subscription Edition.

Office Online Server:

  • KB 5002884 – Office Online Server
Please ensure to have a look at the SharePoint Patching Best Practices before applying new fixes.

 


Security Vulnerabilities fixed in this PU

Vulnerability SP 2016 SP 2019 SP SE OOS Impact Max Severity
CVE-2026-47642 x Remote Code Execution Important
CVE-2026-48580 x Information Disclosure Important
CVE-2026-50408 x Information Disclosure Important
CVE-2026-50522 x x x Remote Code Execution Critical
CVE-2026-50675 x Remote Code Execution Important
CVE-2026-50678 x Information Disclosure Important
CVE-2026-54108 x x x Spoofing Important
CVE-2026-54131 x Remote Code Execution Important
CVE-2026-55016 x x x Spoofing Important
CVE-2026-55019 x x x Spoofing Important
CVE-2026-55020 x x x Spoofing Important
CVE-2026-55021 x x x Spoofing Important
CVE-2026-55023 x x x Information Disclosure Important
CVE-2026-55024 x Remote Code Execution Important
CVE-2026-55025 x Remote Code Execution Important
CVE-2026-55026 x x x Information Disclosure Important
CVE-2026-55027 x x x Information Disclosure Important
CVE-2026-55028 x x x Information Disclosure Important
CVE-2026-55029 x Remote Code Execution Important
CVE-2026-55030 x x x Spoofing Important
CVE-2026-55031 x Remote Code Execution Important
CVE-2026-55032 x x x Remote Code Execution Important
CVE-2026-55033 x x x Remote Code Execution Critical
CVE-2026-55034 x x x Spoofing Important
CVE-2026-55035 x x x Information Disclosure Important
CVE-2026-55036 x Remote Code Execution Important
CVE-2026-55037 x Remote Code Execution Important
CVE-2026-55038 x x x Remote Code Execution Important
CVE-2026-55039 x Remote Code Execution Important
CVE-2026-55040 x x x Security Feature Bypass Critical
CVE-2026-55041 x Remote Code Execution Important
CVE-2026-55044 x Remote Code Execution Important
CVE-2026-55045 x x x Remote Code Execution Critical
CVE-2026-55046 x Information Disclosure Important
CVE-2026-55047 x x x Information Disclosure Important
CVE-2026-55048 x Remote Code Execution Important
CVE-2026-55050 x x x Information Disclosure Important
CVE-2026-55051 x x x Information Disclosure Important
CVE-2026-55052 x x x Elevation of Privilege Important
CVE-2026-55053 x Remote Code Execution Important
CVE-2026-55054 x Information Disclosure Important
CVE-2026-55055 x x x Remote Code Execution Important
CVE-2026-55058 x Remote Code Execution Important
CVE-2026-55122 x Information Disclosure Important
CVE-2026-55124 x x x Information Disclosure Important
CVE-2026-55125 x x x Remote Code Execution Important
CVE-2026-55126 x x x Spoofing Important
CVE-2026-55127 x x x Remote Code Execution Critical
CVE-2026-55128 x x x Remote Code Execution Important
CVE-2026-55130 x x x Remote Code Execution Important
CVE-2026-55131 x Remote Code Execution Important
CVE-2026-55132 x x x Remote Code Execution Critical
CVE-2026-55134 x x x Remote Code Execution Important
CVE-2026-55135 x x x Spoofing Important
CVE-2026-55136 x Remote Code Execution Important
CVE-2026-55137 x Remote Code Execution Important
CVE-2026-55138 x Information Disclosure Important
CVE-2026-55141 x Remote Code Execution Important
CVE-2026-55142 x x x Information Disclosure Important
CVE-2026-55898 x Information Disclosure Important
CVE-2026-55899 x Remote Code Execution Important
CVE-2026-55947 x Remote Code Execution Important
CVE-2026-55948 x Remote Code Execution Important
CVE-2026-55949 x Remote Code Execution Important
CVE-2026-56157 x x x Spoofing Important
CVE-2026-56164 x x x Elevation of Privilege Moderate
CVE-2026-56192 x x x Information Disclosure Important
CVE-2026-58277 x x Elevation of Privilege Important
CVE-2026-58618 x Remote Code Execution Important

See the Security Update Guide below for more details about the relevant fixes:

33 Comments


  1. Dear Stefan,
    Good Morning !

    For Critical SharePoint REC CVE- 2026-50522,reported today. Can you please check and let me know July 14 patches are suitable for this Vulnerability or any other patches will release by Microsoft.

    Regards,
    Mahesh D

    Reply

  2. Hi Stefan, related to the July (or recent) SharePoint Subscription CU, this past weekend, we were unable to complete our migration from SP16 to SPSE.

    We ran into an issue accessing any app we newly deployed to the app catalog.

    Our research indicates issues with Safe Controls, along with ULS errors containing “WebPartPageUserException. This page has encountered a critical error”

    I realize there were security enhancements, but how do we resolve this, if you are familiar?

    Anything to do woth:
    AddGenericAllowedListValue(“AllowedTagPrefixesWhichAreNotWebControlsList?

    Insight is VERY MUCH appreciated!

    Reply

    1. Hi Andre,
      my recommendation would be to analyze the ULS log and share the specific log entries (including event tags and detailed messages)
      Cheers,
      Stefan

      Reply

      1. Thank you Stefan — the specific ULS entries after the APP/Addin generates the UI error is:

        Microsoft.SharePoint.WebPartPages.WebPartPageUserException: This page has encountered a critical error. Contact your system administrator if this problem persists.
        at Microsoft.SharePoint.ApplicationRuntime.SafeControls.IsSafeControl(Boolean isAppWeb, String virtualPath)
        at Microsoft.SharePoint.ApplicationRuntime.SPPageParserFilter.AllowVirtualReference(String referenceVirtualPath, VirtualReferenceType referenceType)
        at System.Web.UI.BaseTemplateParser.GetReferencedType(VirtualPath virtualPath, Boolean allowNoCompile)
        at System.Web.UI.BaseTemplateParser.GetUserControlType(VirtualPath virtualPath)
        at System.Web.UI.MainTagNameToTypeMapper.ProcessUserControlRegistration(UserControlRegisterEntry ucRegisterEntry)
        at System.Web.UI.BaseTemplateParser.ProcessDirective(String directiveName, IDictionary directive)
        at System.Web.UI.TemplateParser.ParseStringInternal(String text, Encoding fileEncoding)

        Have tried to apply the below, to no avail — but this seems to point at recent CU updates:

        $f=Get-SPFarm;
        “asp”,”SharePoint”,”Utilities”,”WebPartPages”,”wssuc” | % { $f.AddGenericAllowedListValue(“AllowedTagPrefixesWhichAreNotWebControlsList”,$_) };
        $f.Update();

        iisreset /noforce

        Reply

        1. Hi Andre,
          thanks!
          This is the last and final ULS log entry – there should be one or more with a specific information which control got rejected.

          For SPSE at least the following settings need to be applied:

          Farm setting:

          // add required entry
          PS C:> $farm = Get-SPFarm
          PS C:> $farm.AddGenericAllowedListValue(“AllowedTagPrefixesWhichAreNotWebControlsList”, “xsl:template”)
          PS C:> $farm.Update()

          Entry the web.config:

          <SafeControl Assembly=”Microsoft.SharePoint, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c” Namespace=”Microsoft.SharePoint.WebPartPages” TypeName=”DataFormParameter” Safe=”True”
          AllowPropertiesTraversal=”True” />

          If this is not sufficient you need to check the ULS log for specific entries before the one you showed in the same correlation which highlights the controls or control elements it rejects to allow-list them.

          Cheers,
          Stefan

          Reply

          1. Thanks Stefan, gave this a go, and moved to another error. Here is the first ULS entry on this one:

            Safe mode did not start successfully. Microsoft.SharePoint.WebPartPages.WebPartPageUserException: This page has encountered a critical error. Contact your system administrator if this problem persists.
            at Microsoft.SharePoint.ApplicationRuntime.SafeControlsList.GetSafeControlsListFromPath(SPWebApplication app, SPUrlZone zone)
            at Microsoft.SharePoint.ApplicationRuntime.SafeControlsList..ctor(SPWebApplication app, SPUrlZone zone)
            at Microsoft.SharePoint.ApplicationRuntime.SafeControls..ctor(SPWebApplication app, SPUrlZone zone)

            Followed by:

            Getting Error Message for Exception System.Web.HttpParseException (0x80004005): This page has encountered a critical error. Contact your system administrator if this problem persists. —> System.Web.HttpParseException (0x80004005): This page has encountered a critical error. Contact your system administrator if this problem persists. —> Microsoft.SharePoint.WebPartPages.WebPartPageUserException: This page has encountered a critical error. Contact your system administrator if this problem persists.
            at Microsoft.SharePoint.ApplicationRuntime.SafeControls.IsSafeControl(Boolean isAppWeb, String virtualPath)
            at Microsoft.SharePoint.ApplicationRuntime.SPPageParserFilter.AllowVirtualReference(String referenceVirtualPath, VirtualReferenceType referenceType)
            at System.Web.UI.BaseTemplateParser.GetReferencedType(VirtualPath virtualPath, Boolean allowNoCompile)
            at System.Web.UI.BaseTemplateParser.GetUserControlType(VirtualPath virtualPath)
            at System.Web.UI.MainTagNameToTypeMapper.ProcessUserControlRegistration(UserControlRegisterEntry ucRegisterEntry)
            at System.Web.UI.BaseTemplateParser.ProcessDirective(String directiveName, IDictionary directive)
            at System.Web.UI.TemplateParser.ParseStringInternal(String text, Encoding fileEncoding)
            at System.Web.UI.TemplateParser.ProcessException(Exception ex)
            at System.Web.UI.TemplateParser.ParseStringInternal(String text, Encoding fileEncoding)
            at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding)
            at System.Web.UI.TemplateParser.ProcessException(Exception ex)
            at System.Web.UI.TemplateParser.ParseStringInternal(String text, Encoding fileEncoding)
            at System.Web.UI.TemplateParser.ParseString(String text, VirtualPath virtualPath, Encoding fileEncoding)
            at System.Web.UI.TemplateParser.ParseFile(String physicalPath, VirtualPath virtualPath)
            at System.Web.UI.TemplateParser.ParseInternal()
            at System.Web.UI.TemplateParser.Parse()
            at System.Web.Compilation.BaseTemplateBuildProvider.get_CodeCompilerType()
            at System.Web.Compilation.BuildProvider.GetCompilerTypeFromBuildProvider(BuildProvider buildProvider)
            at System.Web.Compilation.BuildProvidersCompiler.ProcessBuildProviders()
            at System.Web.Compilation.BuildProvidersCompiler.PerformBuild()
            at System.Web.Compilation.BuildManager.CompileWebFile(VirtualPath virtualPath)
            at System.Web.Compilation.BuildManager.GetVPathBuildResultInternal(VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
            at System.Web.Compilation.BuildManager.GetVPathBuildResultWithNoAssert(HttpContext context, VirtualPath virtualPath, Boolean noBuild, Boolean allowCrossApp, Boolean allowBuildInPrecompile, Boolean throwIfNotFound, Boolean ensureIsUpToDate)
            at System.Web.Compilation.BuildManager.GetVirtualPathObjectFactory(VirtualPath virtualPath, HttpContext context, Boolean allowCrossApp, Boolean throwIfNotFound)
            at System.Web.Compilation.BuildManager.CreateInstanceFromVirtualPath(VirtualPath virtualPath, Type requiredBaseType, HttpContext context, Boolean allowCrossApp)
            at System.Web.UI.PageHandlerFactory.GetHandlerHelper(HttpContext context, String requestType, VirtualPath virtualPath, String physicalPath)
            at System.Web.HttpApplication.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
            at System.Web.HttpApplication.ExecuteStepImpl(IExecutionStep step)
            at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)


          2. Hi Andre,
            important would be to look at ULS log entries BEFORE these entries which – usually – highlight which controls or control elements are causing the problem.
            Cheers,
            Stefan


  3. Hi,
    We have performed the upgrade for Sharepoint 2019 with the latest patches KB5002883/KB5002885. Post installation, we started to receive error messages in the Event Viewer that the timer service is unable to access the Logs folder and we received the errors in the event viewer as follows:

    The Execute method of job definition Microsoft.SharePoint.Administration.SPUsageImportJobDefinition (ID a6020e4c-fb20-4a78-b031-c9b63deff49d) threw an exception. More information is included below.

    Access to the path ‘C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\LOGS’ is denied.. (Correlation=44582ba2-f62c-400f-49c5-8af21b1ee825)

    We have manually applied the permissions again, and this issue went away. Is this a common issue and can we fix it automatically post patch update?

    Waiting for your advice.

    Regards,

    Reply

    1. Hi Noorul,
      I have not seen any reports for this issue.
      What permissions did you have to add?
      Cheers,
      Stefan

      Reply

    2. We experienced this in SPSE for all servers as well. We added Modify permissions for the WSS_WPG group to the default SharePoint logs folder to resolve.

      Reply

      1. Hi Andre,
        this is interesting. WSS_WPG has read and write permission in my farms on the LOGS folder in the SPSE installation und
        c:\program files\common files\microsoft shared\web server extensions\16\LOGS

        Did you maybe configure a different LOGS directory?
        Cheers,
        Stefan

        Reply

        1. Hi Stefan, can confirm this is the correct folder we had to add modify permissions for that group, and we saw ULS errors gone, and the logs correctly writing.

          C:\Program Files\common files\microsoft shared\web server extensions\16\LOGS

          Reply

          1. Hi Andre,
            in general there should not be a need to modify permissions.
            On my farms with July 2026 CU the WSS_WPG and the WSS_ADMIN_WPG groups already have read and write permissions.
            If one of these permissions is missing, then you should add them – but would be interesting to understand why they got lost.
            Cheers,
            Stefan


  4. We added read-write and execute permissions for on the Logs folder for the service account running the timer service. It appeared on all the SP 2019 servers.

    Reply

    1. Hi Noorul,
      why did you have to add execute permissions?
      This directory should not contain any executables.
      Cheers,
      Stefan

      Reply

    2. Hi Noorul,

      the WSS_ADMIN_WPG group should already have Read and Write permissions on this directory. Additionally, the farm service account – which is configured to run both the SharePoint Timer Service and the Central Administration application pool – must be a member of this group.

      My recommendation would be to verify your configuration based on this.

      Cheers,
      Stefan

      Reply

      1. Thanks, I ll check that.

        Reply

      2. Hi,
        We checked the farm, the access for WSS_ADMIN_WPG group to the logs folder was removed post patching activity. We manually added it back.

        Regards,
        Noorul Ahmed

        Reply

  5. Stefan, circling back on the issue we were having with the apps not working in our SPSE environment. Our development team found an older post/fix in the January 2022 (KB5010126) CU for SP16.

    This settings is configured for our SP16 farm (but not in SPSE):
    Add-PSSnapin Microsoft.SharePoint.PowerShell
    $farm = Get-SPFarm
    $farm.SkipUpdateWebConfigPermission = $true
    $farm.Update()

    We manually granted the WSS_WPG group permissions to the web.config file that the SafeControls/configuration is read from, and this resolved the issue.

    Is it recommended this workaround be used in SPSE in order to support custom apps/addins?

    Appreciate your insight!

    Reply

    1. Hi Andre,
      this should only be required if custom code implemented in this app is trying to access the web.config file.
      Is this the case in your scenario?
      Cheers,
      Stefan

      Reply

  6. Dear colleagues, good day!
    After installing the July 2019 update on several SharePoint SE and SharePoint 2019 systems, errors occurred when running PowerShell scripts for adding photos to user profiles.
    The “Update-SPProfilePhotoStore -createthumbnailsForImportedPhotos $true -MySiteHostLocation xxx” command ends with an error:
    Update-SPProfilePhotoStore : The property value was invalid. This could be caused by invalid non-text characters.

    Similar notifications are also found in the ULs logs
    UserProfile.Commit failed with the following reason: Microsoft.Office.Server.UserProfiles.InvalidValueException: Url is not safe: https://

    Also, changing the “PictureURL” property of a user profile results in the same error – The property value was invalid. This could be caused by invalid non-text characters.

    This script hasn’t changed and has been working successfully for a long time. When filling out a field in the admin center interface, it successfully populates with the same data that it can’t update through PowerShell.
    Colleagues, could you please check how it works for you?

    Reply

    1. Hi Sergey,
      ok – you are the second one who reports this here on my blog.
      My suggestion would be to open a support case with Microsoft to ensure this is properly analyzed.
      Cheers,
      Stefan

      Reply

      1. We’re experiencing the same regression, namely in the ULS logs after running the “Update-SPProfilePhotoStore -createthumbnailsForImportedPhotos $true -MySiteHostLocation xxx” command we get in the ULS logs: EditUserProfile_Commit Failure: Microsoft.Office.Server.UserProfiles.InvalidValueException: Url is not safe: https://mysitetest.yourcorporation.com:443/User Photos/Profile Pictures/auser_MThumb.jpg at Microsoft.Office.Server.UserProfiles.UserProfile.Commit(Boolean allowUnsafeUpdates).

        Reply

    2. Hi Sergey,
      I just sent you some sample code to evaluate by email.
      Please let me know if this resolves the issue.
      Cheers,
      Stefan

      Reply

      1. Hi Stefan!
        many thanks, but it not resolve my problem
        I sent mail with ULS log file

        Reply

        1. Hi Sergey

          I’m facing the same issue.
          Were you able to solve it?

          Reply

  7. Hello Stefan,

    I am currently facing an issue on a SharePoint 2019 environment.

    Since the July patching, we have been seeing several “System.UnauthorizedAccessException” errors on the intranet, especially during REST API calls such as:

    /_api/web/Lists?$select=Title

    or:

    /_api/search/postquery

    In addition, on the Office Online Server side, when opening a document, users receive the following yellow warning popup:

    “UPLOAD FAILED: You are required to sign in to upload your changes.”

    Do you have any recommendations, known workarounds, or corrective actions that could help resolve this issue?

    Please also note that the environment is deployed behind a Powell Manager layer and uses Microsoft Entra ID authentication.

    In this configuration, the SharePoint web application is extended, and AzureCP is used for the integration with Microsoft Entra ID.

    Best regards,
    Farid

    Reply

    1. Hi Farid,
      this sounds like a known issue with Distributed Cache introduced in July CU.
      A fix is in development and is planned to be made available next week.
      Cheers,
      Stefan

      Reply

      1. Hello Stefan,

        Thank you for your response.

        I have reviewed all the configuration settings, including cache-related settings, CacheStatistics, form digest expiration, and several other parameters. Everything appears to be correctly.

        We seem to be facing two different issues.

        In our test environment, where the Web Front-End and Distributed Cache roles are hosted on a single server, Search stopped working after the July patching. However, we did not observe any 401 authentication issues.
        In the production environment, which is distributed across multiple Web Front-End servers, dedicated Cache servers, and dedicated Search servers, Search is working correctly. However, we are experiencing intermittent 401 authentication errors as well as issues with Office Online Server,
        The differences between the two environments make the root cause difficult to identify

        So, there is nothing more we can do at this stage. We can only wait for Microsoft’s fix to be released next week.

        Best regards,
        Farid

        Reply

  8. We are also seeing issue with the userprofile pictureurl not able to update throws URL invalid.

    Any solution found.

    Reply

    1. Hi Kiran,
      Yes – this is a known issue in July 2026 CU.
      A fix for SP2019 and SPSE is planned to be released next week.
      As a workaround for now, add the following server debug flag before performing the change:

      $f = Get-SPFarm
      $f.ServerDebugFlags.Add(53534);
      $f.Update()

      After the change is performed revert the setting:

      $f = Get-SPFarm
      $f.ServerDebugFlags.Remove(53534);
      $f.Update()

      Cheers,
      Stefan

      Reply

  9. Thank you Stephen. This seems to work now. Appreciate your help. Will look forward for the upcoming fix .

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.