Grave vulnerabilidad RCE en SharePoint permite ejecución de código a través de deserialización de propiedades WebPart

Un fallo descubierto accidentalmente expone una vía silenciosa pero efectiva para comprometer servidores SharePoint mediante binarios legítimos y controles marcados como seguros

Un investigador independiente ha publicado los detalles técnicos de una vulnerabilidad crítica de ejecución remota de código (RCE) en Microsoft SharePoint, provocada por un fallo de deserialización insegura en las propiedades de los controles WebPart. Aunque no se ha asignado aún un CVE conocido, el exploit ha sido probado con éxito en la versión 15.0.5145.1000, y el bug parece haber sido utilizado en entornos de red team antes de su divulgación pública.

El fallo: deserialización de AttachedPropertiesShared

El vector de ataque se encuentra en el procesamiento de objetos WebPart durante la fase de análisis XML (ParseXml()), concretamente en el método:

Microsoft.SharePoint.WebPartPages.WebPart.AddParsedSubObject()

Este método permite al atacante inyectar contenido arbitrario dentro de un control WebPart, el cual posteriormente es deserializado mediante SPObjectStateFormatter, una clase interna basada en BinaryFormatter.

La vulnerabilidad clave reside en que SPSerializationBinder permite deserializar cualquier tipo listado como seguro en SafeControls, abriendo la puerta a la ejecución de código si se logra serializar una clase legítima que posea constructores con ejecución arbitraria durante su deserialización.

Clase aprovechada: Microsoft.SharePoint.ApplicationPages.SPThemes

Esta clase implementa DataSet y es serializable. Gracias a su constructor basado en SerializationInfo, se puede utilizar con herramientas como ysoserial.net, modificando el payload para apuntar al tipo SPThemes y luego codificarlo en Base64 para incluirlo en el atributo <AttachedPropertiesShared> del WebPart XML.

Vector de entrega

El payload se puede introducir mediante una página .aspx que contenga el siguiente código:

<WebPartPages:XmlWebPart ID="SPWebPartManager" runat="Server">
    <WebPart xmlns="http://schemas.microsoft.com/WebPart/v2">
        <AttachedPropertiesShared>/wEWABANANA...</AttachedPropertiesShared>
    </WebPart>
</WebPartPages:XmlWebPart>

O bien, puede enviarse mediante una solicitud SOAP al endpoint interno /vti_bin/webpartpages.asmx usando el método ConvertWebPartFormat, lo que permite entregar el código sin necesidad de subir archivos directamente.

Riesgo real y consideraciones

El uso de BinaryFormatter o sus derivados como SPObjectStateFormatter en aplicaciones modernas es considerado inseguro, ya que permite la ejecución arbitraria si se manipula la entrada. En este caso, el diseño de SharePoint facilita esta vía al permitir el uso de clases marcadas como «seguras» sin verificar de forma más estricta su origen o contexto.

El hecho de que la clase SPThemes esté disponible y aceptada en SafeControls, sumado al uso de WebParts como interfaz de ejecución, convierte esta vulnerabilidad en un riesgo severo para instalaciones no parcheadas de SharePoint.

Recomendaciones

  • Aplicar parches de seguridad: Aunque el investigador no especifica el parche exacto, Microsoft ha corregido silenciosamente el fallo. Se recomienda mantener SharePoint totalmente actualizado.
  • Auditar WebParts personalizados: Evitar el uso de BinaryFormatter o SPObjectStateFormatter en desarrollos propios.
  • Revisar SafeControls: Validar qué clases están listadas como seguras y si realmente lo son.
  • Deshabilitar endpoints innecesarios: Limitar el acceso al servicio webpartpages.asmx si no es utilizado activamente.

Conclusión: Este hallazgo pone de manifiesto cómo incluso en software ampliamente desplegado y mantenido como SharePoint, una combinación de diseño inseguro y deserialización binaria puede resultar en vulnerabilidades RCE altamente críticas. La comunidad de red team ya conocía este vector, y su publicación ayudará ahora a las defensas a mitigar posibles abusos en entornos corporativos.

vía: viettel cybersecurity

Scroll al inicio