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
oSPObjectStateFormatter
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.