Ir al contenido

¡Se acercan los certificados de 47 días! ¿Estás preparado?

Actúa ahora →

Cómo firmar un proyecto de macro de Excel con SignTool

Firmar un proyecto de macro de Excel con SignTool

La firma de código es un mecanismo de seguridad que se utiliza para verificar la autenticidad e integridad del código digital. Consiste en añadir una firma digital al código, lo que permite a los usuarios determinar quién lo creó y si ha sido manipulado. La firma de código se utiliza habitualmente para firmar archivos ejecutables, bibliotecas y scripts, pero también puede utilizarse para firmar archivos de macros de Excel.

Firmar un proyecto de macro de Excel con SignTool, en resumen: Instale el SDK de Windows para SignTool, instale el paquete de interfaz de sujeto (SIP) de Office VBA para que SignTool reconozca los archivos .xls/.xlsm y luego ejecute signtool sign con su certificado y un CSP o KSP que apunte a su clave, seguido de signtool verify /pa para confirmar la firma.

Puntos Clave

  • SignTool no reconoce los archivos de macros de Office de forma predeterminada. Sin el paquete de interfaz de sujeto instalado y registrado, la firma de un archivo .xlsm fallará incluso con un certificado válido.
  • Los comandos de firma y verificación deben estar dirigidos al mismo archivo y extensión. Por ejemplo, firmar un archivo .xlm y verificar un archivo .xlsm son dos operaciones diferentes que se realizan sobre dos tipos de archivo distintos.
  • La firma de macros es un habilitador de políticas, no solo un supresor de advertencias: permite a los administradores configurar la Directiva de grupo para permitir la ejecución solo de macros firmadas con certificados de confianza, que es el control de seguridad real, no la firma en sí misma.

Matriz de entorno

ComponenteRequisito
OSWindows 10/11 o Windows Server (SignTool solo funciona en Windows).
Fuente de SignToolSDK de Windows (componente de herramientas de firma del SDK de Windows para aplicaciones de escritorio)
SIP de oficinaPaquete de interfaz de sujeto para la firma digital de archivos de Microsoft Office (necesario para el reconocimiento de archivos .xls/.xlsm)
dependencia de tiempo de ejecuciónMicrosoft Visual C ++ redistribuible
Almacenamiento de clavesCSP/KSP respaldado por HSM (por ejemplo, un proveedor de almacenamiento de claves de un proveedor) para producción; un archivo .pfx local solo es aceptable para pruebas aisladas.
Formatos de archivo compatibles.xls, .xlsm (el formato .xlm heredado es un formato de hoja de macros diferente y más antiguo, y no es intercambiable con .xlsm).

¿Qué es la firma de código?

La firma de código es una práctica de seguridad que consiste en firmar digitalmente el software con un certificado para verificar su autenticidad e integridad. Los certificados de firma de código son emitidos por autoridades de certificación (CA) de confianza y permiten a los usuarios finales verificar que el software que descargan o ejecutan no ha sido manipulado ni modificado desde que fue firmado por el editor del software.

Esto ayuda a prevenir la distribución e instalación de malware y otro software malicioso en los sistemas de los usuarios. Para establecer la confianza en una firma digital y garantizar que el código no haya sido manipulado, las herramientas de firma de código populares, como Microsoft Authenticode y Java Code Signing, suelen requerir un certificado digital confiable emitido por una autoridad certificadora externa.

Firmar archivos de Excel

Los archivos de macro de Excel se utilizan para automatizar tareas en Microsoft Excel. Pueden contener macros, que son pequeños programas que automatizan tareas repetitivas, como dar formato a datos o generar informes. Los archivos de macro se pueden crear con el lenguaje de programación VBA (Visual Basic para Aplicaciones) y se pueden guardar con la extensión .xlsm.

Amenazas que plantean las macros

Si bien las macros de Office siguen siendo la mejor opción para procesos críticos para el negocio, también representan una gran amenaza para la seguridad. Las macros se ejecutan dentro de los documentos de Office con los mismos permisos que la persona que los abrió. Sin mencionar las macros que aumentan aún más sus privilegios mediante el uso de vulnerabilidades, convirtiéndolas en una poderosa herramienta para que los hackers se infiltren en una organización.

Pero ¿qué hace que Macro sea tan terrible? A diferencia de otros programas, la gente suele usar los documentos de Office sin dudarlo. Con solo un clic, se activa la ejecución de la macro, lo cual es especialmente fácil de lograr mediante ingeniería social, insertando instrucciones en un correo electrónico o incluso en el propio documento.

Los administradores se encuentran en apuros cuando se trata de macros principalmente por estas razones:

  • Es Es casi imposible proporcionar configuraciones de políticas que puede definir qué macros se pueden ejecutar.
  • Marcos de políticas como El control de aplicaciones/listas blancas no funcionan para macros.
  • Algunas macros maliciosas pueden Evitar los detectores de malware.

Ahora surge la pregunta: ¿qué podemos hacer para protegernos de las amenazas macro? La respuesta es sencilla : implementar la firma digital de macros para crear políticas seguras para el usuario final.

Al firmar un archivo de macro de Excel, puede garantizar que los usuarios confíen en el código del archivo y que no haya sido manipulado. Firmar digitalmente las macros de su organización sienta las bases para las funciones de políticas de MS Office. Esto le permite...

  • Utilice políticas de grupo para permitir la ejecución solo de macros firmadas con certificados de confianza y
  • Asignar certificados de confianza a usuarios y grupos.

Con CodeSign Secure, podemos simplificar el proceso de firma y verificación. Nuestro proceso incluye el uso de funciones hash del lado del cliente para aumentar la velocidad del servidor y el uso de HSM para almacenar las claves privadas, lo que garantiza una baja superficie de ataque y una firma de archivos rápida y segura.

Limitaciones de los enfoques actuales

Esta tabla destaca cómo las políticas de fácil acceso tienen una seguridad insuficiente o tienen un impacto negativo inaceptable en el negocio:

Método Nivel de seguridad Implementación Impacto en el negocio observaciones
Permitir que los usuarios decidan si habilitar la ejecución de macros Media Alto Alto No siempre se puede confiar en que los usuarios tomen las mejores decisiones
Habilitar la ejecución de macros Bajo Alto Alto Nunca es apropiado habilitar esto.
Deshabilitar la ejecución de macros excepto las macros firmadas digitalmente Altura media Media Alto El proceso de firma digital en Office es laborioso y requiere que los escritores de macros tengan acceso a las claves privadas de sus PC de desarrollo.
Deshabilitar la ejecución de macros excepto para los usuarios que las requieran Altura media Bajo Media Cada uno de estos usuarios sigue siendo peligroso y su número aumenta con frecuencia.
Deshabilitar la ejecución de macros excepto para ciertas ubicaciones de almacenamiento Altura media Altura media Altura media Aunque como resultado se reducirán los ataques directos online y por correo electrónico, cualquiera puede dejar un documento dañino en un lugar confiable.
Deshabilitar la ejecución de macros para todos Alto Alto Bajo Muy seguro, pero a menudo poco realista.
Uso de CodeSign Secure- Deshabilitar la ejecución de macros excepto las macros firmadas digitalmente Alto Alto Alto Proporcionar un procedimiento más seguro que cumpla con las políticas de ejecución de macros para la firma de políticas de autorización y aprobación.

Solución de firma de código empresarial

Obtenga una solución para todas sus necesidades criptográficas de firma de código de software con nuestra solución de firma de código.

Proceso de firma paso a paso

Estos son los pasos para firmar un archivo de macro de Excel. Primero, debemos instalar las herramientas necesarias.

Paso 1

Debemos instalar el SDK de Windows , que proporciona bibliotecas y herramientas para crear aplicaciones de Windows. Este kit de desarrollo instalará una herramienta llamada signtool, que viene incluida en el SDK de Windows. Haz clic en Descargar el instalador y ejecútalo una vez que finalice la descarga.

Puede elegir instalar solo las herramientas de firma del SDK de Windows para aplicaciones de escritorio.

Nota: Recuerde la ruta predeterminada que se muestra en la ruta de instalación, ya que será útil para ejecutar estos comandos desde el símbolo del sistema.

Herramientas de firma del SDK de Windows para aplicaciones de escritorio

En la página de Privacidad de Windows Kits, cualquiera de las opciones para permitir que Microsoft recopile información es válida. Haga clic en Siguiente.

Página de privacidad de Windows Kits

Aceptar el acuerdo de licencia

Términos de licencia del software de Windows

Deselecciona todas las funciones excepto Herramientas de firma del SDK de Windows para aplicaciones de escritorio y, a continuación, selecciona Instalar. No necesitamos todas las funciones para que el proceso de firma funcione.

proceso de firma para trabajar

Cuando se le pregunte si desea permitir que esta aplicación realice cambios, seleccione Sí.

variables ambientales del sistema

Por último, seleccionamos cerrar y a continuación tenemos que agregar una ruta a las variables de entorno del sistema para poder ejecutar comandos desde el Símbolo del sistema de manera efectiva.

Kit de desarrollo de software de Windows

Haga clic en la barra de búsqueda de Windows en la barra de tareas y escriba “Editar las variables de entorno del sistema” y seleccione la opción del panel de control del mismo nombre.

panel de control de Windows

Variables de entorno de clic

Aplicación signtool de Windows

Antes de editar la lista de variables, navegue hasta la ubicación donde está instalado el SDK de Windows usando el explorador de archivos. Debe copiar la ruta de la carpeta que contiene la aplicación signtool. La ruta predeterminada es C:\Archivos de programa (x86)\Windows Kits\10\bin\10.0.22621.0\x64 ( consulte la captura de pantalla a continuación). Asegúrese de hacer clic con el botón derecho y copiar la ruta como se muestra. También puede ver la aplicación signtool al final de la lista de archivos; este es el comando que ejecutará.

Aplicación signtool

En la lista Variables del sistema, haga clic en Nuevo. A continuación, escriba Ruta como nombre de la variable y copie y pegue la ruta. Finalmente, haga clic en Aceptar en la ventana Variables de entorno y en la ventana Propiedades del sistema.

Variables de entorno

Para probar la instalación, abra el símbolo del sistema y escriba signtool ; la salida debería ser como se muestra a continuación.

instalación predeterminada de signtool

La ubicación de instalación predeterminada de signtool es, por ejemplo: C:\Archivos de programa (x86)\Windows Kits\10\bin\10.0.22621.0\x64

Paso 2

Descargue e instale el paquete de interfaz de sujeto para la firma digital de archivos de Microsoft Office.

Este enlace lleva a la página de descarga de Microsoft para un paquete de interfaz. Esta descarga incluye dos bibliotecas del Paquete de Interfaz de Sujeto (SIP) que admiten la firma digital y la verificación de firmas de proyectos de Visual Basic para Aplicaciones en la mayoría de los formatos de archivo de Office que admiten macros VBA. Estas bibliotecas son necesarias para que signtool reconozca los archivos .xls y .xlsm. Después de descargar el instalador, siga los pasos que se indican a continuación.

Paquetes de interfaz

Después de descargar el .exe, ábralo y elija una carpeta de instalación o cree una nueva carpeta como se muestra a continuación:

firma de macros de Excel

Indicará que los archivos se extrajeron correctamente y encontrará la carpeta de instalación llena de archivos. Estas son las bibliotecas esenciales para habilitar la firma de macros de Excel. Debemos ejecutar un par de comandos para instalar estos archivos .dll en el registro.

Abra un símbolo del sistema de administrador y escriba lo siguiente, la ruta será donde acaba de instalar los archivos:

regsvr32.exe

regsvr32.exe

Para obtener más información sobre cómo registrar los controles OLE, visite el sitio web de Microsoft.

Si tiene éxito, verá un mensaje: “DIIRegister Server in tuvo éxito”.

Solución de firma de código empresarial

Obtenga una solución para todas sus necesidades criptográficas de firma de código de software con nuestra solución de firma de código.

Paso 3

A continuación, debemos descargar el instalador redistribuible de Microsoft Visual C++. Estas bibliotecas son necesarias para muchas aplicaciones desarrolladas con herramientas de Microsoft C y C++. Dado que las herramientas que utilizamos requieren estas bibliotecas, es necesario instalarlas. Para obtener más información, consulte la documentación de Microsoft.

Enlace de descarga del instalador redistribuible de Microsoft Visual C++:

Descargar

Ejecuta el instalador, acepta los términos y condiciones y haz clic en instalar.

Instalador redistribuible de Microsoft Visual C++
Configuración completa de Microsoft Visual C++ 2010

Paso 4

Ahora podemos usar la línea de comandos para firmar nuestros archivos. Es posible firmar archivos de macros de Excel de Windows usando el comando signtool. /kc será el nombre de su certificado, /f será la ruta al archivo certificate.pem, /fd y /td son los algoritmos deseados, /csp es el nombre del proveedor de almacenamiento criptográfico (en este caso, Encryption Consulting Key Storage Provider), /tr es la dirección del servidor de marcas de tiempo, y luego, después de /td, SHA256 es la ruta entre comillas del archivo que se va a firmar.

En este caso de firma de macros, puede utilizar las extensiones de archivo .xls o .xlsm y ejecutar el comando de firma.

signtool sign /csp “Proveedor de almacenamiento de claves de consultoría de cifrado” /kc evcodesigning /f C:\Users\Administrator\Desktop\ForTesting\evcodesigning.pem /fd SHA256 /tr http://timestamp.digicert.com /td SHA256 “C:\Users\Administrator\Desktop\ForTesting\MacroTest.xlsm”

firma de macros

Paso 5

Después de firmar el archivo, puede verificarlo y mostrar su información. Para verificar el archivo firmado, simplemente use el comando de verificación:

signtool.exe verificar /pa C:\Users\Administrator\Desktop\ForTesting\MacroTest.xlsm

firmando el archivo

Una verificación exitosa devuelve el mensaje "Verificado correctamente" junto con el sujeto y el emisor del certificado de firma. Si la verificación falla, consulte la tabla a continuación antes de asumir que el certificado no es válido.

Errores comunes

ErrorCausa probableSolución
Error de SignTool: No se encontraron archivos para firmar.Error tipográfico en la ruta o el nombre del archivo, o extensión incorrecta en el comando sign.Confirme la ruta exacta y que la extensión del archivo coincida con un archivo .xls/.xlsm real en el disco.
Error de SignTool: Este formato de archivo no se puede firmar porque no se reconoce.Office SIP (msosip.dll/msosipx.dll) no está instalado o no está registrado.Reinstale el paquete de interfaz de sujeto y vuelva a ejecutar ambos comandos regsvr32 como administrador.
Error de SignTool: No se encontraron certificados que cumplieran con todos los criterios especificados.El nombre del contenedor /kc no coincide con una clave en el CSP/KSP especificado, o el nombre del CSP está mal escrito.Confirme el nombre exacto del contenedor y el nombre del CSP registrados en la máquina firmante o en el cliente HSM.
No se pudo acceder al servidor de marca de tiempo especificado o este devolvió una respuesta no válida.La red/cortafuegos está bloqueando la URL de TSA, o TSA no está disponible temporalmente.Confirme el acceso saliente a la URL de la marca de tiempo; vuelva a intentarlo, ya que una interrupción transitoria de TSA es común y no indica un problema en la configuración.

Uso y limpieza de CI/CD

Para la firma repetida y automatizada (una canalización de lanzamiento que regenera una plantilla habilitada para macros en cada compilación), lo mismo signtool sign El comando se ejecuta sin supervisión como un paso de la canalización, siempre que el agente de compilación tenga configurado el cliente CSP/KSP y una credencial no interactiva para el HSM. No recurra a un archivo .pfx local para esto con el fin de evitar las solicitudes interactivas, ya que eso reintroduce el riesgo de clave privada expuesta que el CSP respaldado por HSM existe para prevenir. Verifique la idempotencia volviendo a ejecutar signtool verify /pa como un paso del proceso inmediatamente después de la firma, haciendo que la compilación falle si la verificación no devuelve éxito, en lugar de asumir que el paso de firma tuvo éxito silenciosamente.

Para la limpieza: si utilizó un archivo .pfx local para las pruebas iniciales, bórrelo del disco una vez que haya confirmado que la ruta de firma basada en CSP/KSP funciona, y elimine la entrada PATH del sistema para el directorio de herramientas de firma del SDK de Windows en cualquier máquina que no deba tener capacidad de firma en el futuro.

Preguntas frecuentes

¿Por qué SignTool dice que no puede reconocer mi archivo .xlsm?

El paquete de interfaz de tema de Office VBA (msosip.dll, msosipx.dll) no está instalado ni registrado. Instálelo y ejecute ambos regsvr32.exe comandos como administrador; SignTool no tiene soporte integrado para formatos de macros de Office sin él.

¿Puedo firmar un archivo .xls de la misma manera que un archivo .xlsm?

Sí, ambos formatos son compatibles una vez instalado el SIP. Los archivos .xlm heredados son un formato de hoja de macros diferente y más antiguo, y no son intercambiables con los archivos .xlsm en los comandos de firma o verificación.

¿Debo usar un archivo .pfx local para la firma de macros en producción?

No. Un archivo .pfx local expone la clave privada en la máquina firmante. Para la firma en producción, se debe usar un CSP o KSP con soporte de HSM para que la clave nunca salga del hardware, y el método .pfx debe reservarse únicamente para pruebas aisladas.

Conclusión

Una vez firmado el archivo de macro de Excel, los usuarios que lo abran verán un mensaje de advertencia indicando que contiene macros, pero también verán la firma digital y podrán verificar su validez. Si la firma digital no es válida, se les advertirá que el archivo puede contener código malicioso y que su apertura podría ser peligrosa.

En resumen, incorporar la firma de código a la seguridad del software es fundamental para protegerlo contra ataques de malware y manipulaciones. Code Sign Secure de Encryption Consulting ofrece diversas ventajas, como una integración perfecta con los flujos de trabajo de desarrollo, autenticación y cifrado robustos, y opciones de precios personalizables. Para obtener más información sobre cómo puede usar Code Sign Secure, visite: Code Sign Solution o contáctenos en: [email protected]