¡Hola! Soy David B. Heise y trabajo en el equipo de seguridad de Office para la prueba de la Validación de documento de Office (nombre en código: equipo selector). Ha habido algunas interpretaciones equivocadas con respecto a la nueva característica de validación de documento de Microsoft Office 2010, por lo que espero aclararlas y explicarle de qué se trata.

¿Por qué se deben validar los archivos binarios?

Con el curso de los años, los formatos binarios de Office necesariamente evolucionaron y crecieron en escala y complejidad. Los motivos por los cuales estos formatos son complejos ya se explicaron con detalle por otras vías (consulte el artículo de Joel Spolsky aquí), por lo tanto hoy no abordaremos ese tema, sin embargo estos formatos binarios se encuentran muy bien documentados aquí. Descubrimos que los atacantes malintencionados usan los archivos binarios como un vector de ataque con el fin de infectar a un usuario específico, así pues, deseábamos idear un modo de detener esta situación. Nuestro equipo se ha dedicado a usar nuestra validación para realizar comprobaciones cada vez que se informa a Microsoft de un nuevo ataque a un formato de archivo de Office, con el fin de probar la eficacia de dicha validación. De momento, todo marcha muy bien.

¿Qué es el equipo selector?

La Validación de documento de Office es una característica que se introdujo en Publisher 2007 para validar los archivos PUB de Publisher. Lo que hace es comprobar si un archivo binario en particular cumple con las expectativas de la aplicación. En Office 2010 hemos expandido esta característica considerablemente de modo que incluya formatos binarios de Word, Excel y PowerPoint. Tenga en cuenta que esta característica es SOLO para formatos binarios (es decir, PUB, DOC, XLS, PPT, etc.), pero no valida documentos basados en XML (es decir, DOCX, XLSX, PPTX, etc.) ni macros u otros elementos personalizados. Lo que valida es la estructura del archivo, por ejemplo, si el usuario tiene un archivo XLS con una estructura FONTINDEX con el valor ifnt establecido en 4 (que no es un valor válido para ese elemento en particular), no pasará la validación.

¿Cómo funciona?

Siempre que Word, PowerPoint o Excel cargan un archivo binario que no sea de confianza (es decir, que no se encuentre en una ubicación de confianza y que no sea un documento de confianza), lo comprueban para confirmar que sea un archivo válido. Esta comprobación se centra en las partes específicas del archivo que la aplicación está a punto de analizar, en otras palabras, las transmisiones OLESS relevantes. Si se determina que es válido, se abre normalmente. Sin embargo, si se detecta que no es válido, se envía (de forma predeterminada) a la Vista protegida (Protected View).

imagen

Al hacer clic en el texto irá automáticamente a la vista Backstage, donde tendrá la opción de abrir el archivo en la experiencia de la aplicación completa. Tenga en cuenta que esta es una decisión de confianza que marcará este archivo en particular como un archivo de confianza y, como tal, NO se validará la próxima vez que lo abra.

Al finalizar con el archivo y cerrar la aplicación, es posible que vea un aviso como el siguiente:

imagen

Este aviso solo aparece como máximo una vez cada dos semanas (por aplicación) y le ofrece la opción de enviarnos el archivo con error mediante Informe de errores de Windows. Desde luego, puede quitar uno o dos archivos si no desea compartir esa información, pero al enviarnos el archivo podremos analizarlo en detalle para mejorar la Validación de documento de Office.

¿Cómo lo controlo?

Mediante la directiva

Entendemos que es posible que a numerosos administradores (o usuarios que se preocupan por la seguridad) no les agrade la idea de abrir un archivo que no pase la validación, por lo tanto existe una directiva de grupo que controla la acción predeterminada cuando un archivo no pasa la validación. Estas directivas se encuentran en “Opciones\Seguridad\Centro de confianza\Vista protegida” de la aplicación en las plantillas de directiva de grupo y se configuran por aplicación.

imagen

Mediante el Registro

Existen diversas claves del Registro que controlan varios aspectos de la Validación de documento de Office.

Claves comunes

HKCU\Software\Microsoft\Office\14.0\Common\Security\FileValidation \ReportingInterval - DWORD que controla la cantidad de días que transcurrirán hasta que aparezca el cuadro de diálogo que indica que se deben enviar los archivos a Informe de errores de Windows.

HKCU\Software\Microsoft\Office\14.0\Common\Security\FileValidation\DisableReporting - DWORD que, si se establece en 1, deshabilitará el cuadro de diálogo para mostrar (y, de esta forma, el envío de archivos) a Informe de errores de Windows.

Claves específicas de la aplicación

Para estos ejemplos usaré "Excel”, pero también funcionan para “PowerPoint” y “Word”

HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\EnableOnLoad – Si este DWORD se establece en 0, Office no validará los archivos.

HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\DisableEditFromPV – DWORD que, si se establece en 1, no permitirá que se editen los archivos que no pasaron la validación.

Claves específicas de Excel

HKCU\Software\Microsoft\Office\14.0\Excel\Security\FileValidation\PivotOptions – DWORD que controla las opciones específicas con respecto a la validación de memorias caché dinámicas (por motivos de rendimiento) en los archivos que las tienen.

0 = Nunca validar una memoria caché dinámica
1 = Validar la memoria caché dinámica en los siguientes casos: (1) el archivo se abre desde Internet y la plataforma marca el archivo localmente como proveniente de Internet. (2) El archivo son datos adjuntos de correo electrónico de Microsoft Outlook. (3) El usuario abrió el archivo específicamente en Vista protegida. (4) El archivo se abre localmente desde una "ubicación no segura" conocida, donde el contenido de Internet está almacenado en la memoria caché, y desde cualquier ubicación especial que no sea de confianza definida por el usuario, a menos que las ubicaciones no seguras en Vista protegida se hayan deshabilitado mediante una clave del Registro diferente. (5) Se abre el archivo y se analiza la memoria caché dinámica durante la carga.
2 = Validar siempre todas las memorias caché dinámicas

Mediante scripting

Para las soluciones personalizadas creadas en Office, existen algunas propiedades interesantes que se agregaron a los Objetos de aplicación que deshabilitarán la validación de documento para esa sesión. También hay una opción adicional en Excel para controlar la validación de memorias caché dinámicas (es decir, los datos almacenados en la memoria caché de los archivos para tablas dinámicas y gráficos.). El siguiente es un ejemplo de un script de PowerShell que muestra cómo establecer estas dos opciones para Excel (pero la propiedad FileValidation también se aplica a Word y PPT):

$excel = New-Object -comobject Excel.Application
# los valores válidos son:
# msoFileValidationDefault = 0
# msoFileValidationSkip = 1
$excel.FileValidation = msoFileValidationSkip
# los valores válidos son:
# xlFileValidationPivotDefault = 0 (siga el procedimiento habitual, es decir, siga la configuración predeterminada y del Registro),
# xlFileValidationPivotRun = 1 (validar todas las memorias caché dinámicas),
# xlFileValidationPivotSkip = 2 (no validar ninguna memoria caché dinámica)
$excel.FileValidationPivot = xlFileValidationPivotSkip

Fantástico, pero ¿cuánto tarda?

Hemos creado intervalos específicos para garantizar que la validación de documento sea muy rápida. Es verdad, ahora se tarda más tiempo en abrir un archivo, pero solo hablamos de milisegundos. De hecho, le será difícil encontrar un archivo de tamaño normal que tarde más de un segundo en validarse, la mayoría de los archivos se validan en un rango de entre 1 y 100 milisegundos. Por supuesto, si el archivo es gigante y muy complejo, y ya lleva una hora abriéndose, entonces sí tardará más de un segundo, pero igualmente es probable que no lo note. Además, si la validación del archivo tarda más de cinco segundos (en cuyo caso nos referimos a archivos muy complejos), le ofrecemos la opción de cancelar e ir directamente a la Vista protegida (Protected View). Después de todo, no podríamos permitirle abrirlo normalmente, ya que entonces los hackers simplemente crearían un archivo que sea realmente complejo para apoderarse de su equipo, que es justamente lo que esta característica trata de evitar.

imagen

Además, para los archivos cuya validación requiera mucho tiempo (si pasa la validación, no pasa la validación o se omite la validación) también se mostrará el mismo aviso de Informe de errores de Windows como si fuera un archivo con error, con el fin de proporcionarle la opción de enviarnos el archivo para un análisis más detallado.

En pocas palabras

Un día mientras conversábamos con los programadores nos imaginamos una conversación como la siguiente:

“¿En qué has estado trabajando?”

“En la Validación de documento de Office”

“¿Qué es eso?”

“Una comprobación en un archivo de Office para garantizar que sea correcto”

“Entonces, ¿has pasado los dos últimos años escribiendo una función booleana?”

“Bueno…ehh…sí, ¡pero es una función importante!”

A fin de cuentas, la Validación de documento de Office es realmente solo una función de Sí o No para notificar a la aplicación si un archivo es válido o no, ¡pero es una función realmente importante! De hecho, también es en efecto una función muy compleja, como puede confirmar cualquiera que alguna vez haya echado un vistazo a las especificaciones de los formatos de archivo. En pocas palabras, la Validación de documento de Office comprobará el archivo binario para garantizar que las partes significativas del archivo sean válidas y, si piensa que estamos equivocados, puede confiar en el archivo o hacérnoslo saber.

Publicado originalmente: Miércoles 16 de diciembre de 2009, 2:52 p.m. por OffTeam

Esta entrada de blog es una traducción. Puede consultar el artículo original en http://blogs.technet.com/office2010/archive/2009/12/16/office-2010-file-validation.aspx.