
Las macros en Word y en el resto de Office son una herramienta de gran utilidad: automatizan informes, generan documentos al vuelo y ahorran horas de trabajo cada semana. Pero esa misma potencia tiene una cara B nada agradable: son uno de los vectores de ataque favoritos para distribuir malware, robar datos o colarse en una red corporativa. Por eso, si trabajas con VBA, tarde o temprano tendrás que tomarte en serio la seguridad. Y, en particular, la firma digital de macros.
En este artículo te traemos consejos de buenas prácticas para que tus proyectos de VBA sean fiables y fáciles de mantener. También explicamos cómo funciona la firma digital de macros en Word (y en el resto de Office), qué necesitas para implantarla, cómo agregar marca de tiempo y qué políticas de seguridad puedes combinar (ubicaciones de confianza, protección con contraseña, auditorías, formación de usuarios, etc.) para montar una estrategia sólida y realista en una organización.
Seguridad de macros en Word y centro de confianza
La primera capa de defensa de cualquier macro en Word está en el Centro de confianza de Office. Desde ahí decides cómo se comporta la aplicación ante cualquier documento con código VBA: si bloquea todo, si solo permite código firmado o si pide confirmación cada vez que detecta macros.
Las opciones de configuración de macros en el Centro de confianza suelen ser estas:
- Deshabilitar todas las macros sin aviso.
- Deshabilitar todas con notificación.
- Habilitar todas (esta última, totalmente desaconsejada en entornos reales).
- Deshabilitar todas excepto las firmadas digitalmente.
Cuando se establece la política “Deshabilitar todas las macros excepto las firmadas digitalmente”, Word y el resto de Office solo ejecutan código VBA que lleve una firma válida. Si el documento contiene macros sin firmar, el código se bloquea por completo y, dependiendo de la versión y del canal de actualización, es posible que no aparezca el típico mensaje de alerta, algo que muchos administradores han detectado sobre todo en Excel 2016 y 365 click-to-run.
Ese comportamiento puede chocar con lo que describen algunos artículos oficiales, donde se indica que debería mostrarse un aviso de seguridad para permitir al usuario confiar en el documento. En la práctica, con la opción de “solo firmadas”, la filosofía es mucho más estricta: si no hay firma, no se ejecuta nada y no se facilita la conversión inmediata del archivo en documento de confianza.
Certificados digitales: qué son y cómo conseguirlos
Para poder firmar digitalmente macros en Word necesitas un certificado digital que se use específicamente para firma de código o de proyectos VBA. Ese certificado puede ser emitido por una entidad de certificación comercial (CA), por la propia infraestructura de clave pública de la empresa o, para entornos de prueba, por un certificado auto-firmado creado con herramientas de Microsoft.
Las entidades de certificación comerciales ofrecen certificados de firma de código estándar y, cada vez más, certificados de validación extendida (EV). Estos últimos suelen requerir hardware seguro (HSM, tokens USB o servicios como Azure Key Vault) para almacenar la clave privada, lo que aporta un plus de seguridad y control sobre quién puede firmar código en la organización.
Si lo que buscas es un entorno de pruebas o de desarrollo interno, puedes optar por crear un certificado auto-firmado mediante la utilidad SelfCert.exe incluida con Office. Solo sirve para que tu propio PC (o aquellos a los que se importe manualmente) confíe en el código, pero es suficiente para experimentar con la firma digital antes de pasar a certificados emitidos por una CA real.
Para generar este certificado auto-firmado con SelfCert, basta con localizar el ejecutable en la carpeta de Office, ejecutarlo, introducir un nombre descriptivo en el cuadro “Nombre del certificado” y confirmar. El asistente creará y almacenará directamente el certificado en el repositorio de certificados personales del usuario, dejándolo listo para que Visual Basic pueda utilizarlo al firmar proyectos.
Crear, ver y gestionar certificados para macros
Una vez creado o instalado el certificado, es importante comprobar que realmente está en el almacén correcto. Los certificados de firma de código para VBA se guardan normalmente en los certificados personales del usuario y se pueden consultar con las herramientas de administración de certificados del propio sistema o del navegador.
En equipos con Microsoft Edge, por ejemplo, es posible revisar rápidamente los certificados personales abriendo el navegador, escribiendo edge://settings/privacy en la barra de direcciones y desplazándose hasta la sección de seguridad, donde se ofrece la opción de “Administrar certificados”. Desde ahí se pueden ver, importar o exportar certificados, así como revisar su fecha de caducidad.
Resulta fundamental tener claro qué certificados están vigentes, ya que una firma basada en un certificado caducado, sin marca de tiempo, puede dejar de considerarse válida. El propio Office mostrará advertencias si detecta que la credencial usada para firmar el proyecto VBA ha expirado o ha sido revocada por la entidad emisora.
Algunas CAs especializadas en firma de código facilitan la instalación directa del certificado en el HSM del cliente o en cofres de claves en la nube, sin necesidad de manipular la clave privada en equipos individuales. Esta aproximación reduce al mínimo los riesgos de robo o fuga de la clave de firma de macros, algo crítico si las plantillas firmadas se distribuyen a miles de usuarios.

Cómo firmar digitalmente un proyecto de macros de Word
La firma digital se aplica al proyecto de VBA completo que contiene las macros, no a cada procedimiento por separado. El proceso es muy similar en Word, Excel, PowerPoint, Outlook y otras aplicaciones de Office que soportan VBA.
El flujo típico para firmar un proyecto de macros en Word es este:
- Abrir el documento o plantilla que contiene el código.
- Ir a la pestaña “Programador” (Developer).
- Dentro del grupo “Código”, pulsar en “Visual Basic” para acceder al Editor de VBA.
- Desde el menú “Herramientas” del editor se elige la opción de “Firma digital”.
Al abrir el cuadro de diálogo de firma digital, se muestra la lista de certificados disponibles en el equipo que pueden utilizarse para firmar el proyecto. Basta con seleccionar el certificado adecuado (el de firma de código o el auto-firmado que se haya creado previamente) y aceptar para que la firma se aplique al proyecto actual.
Tras guardar el documento o la plantilla, la firma queda embebida en el archivo. Cuando otro usuario abra el documento en Word, el sistema de seguridad de macros verificará esa firma y comprobará que el certificado se considera de confianza y no se ha revocado. Si todo es correcto, el usuario podrá ejecutar las macros sin tener que bajar el nivel general de seguridad.
Es vital entender que cualquier cambio en el código VBA invalida la firma. Si se modifica un módulo, se borra o se añade una nueva macro, la firma anterior deja de ser válida y el documento se considera de nuevo como no firmado. No obstante, si el desarrollador sigue teniendo disponible en su equipo el mismo certificado con el que firmó inicialmente, al guardar el proyecto se puede firmar otra vez para restaurar la confianza.
Riesgos del código VBA inseguro y uso de la función Environ
El lenguaje VBA es muy potente, pero su flexibilidad también lo convierte en una superficie de ataque peligrosa. El simple hecho de poder ejecutar código al abrir un documento hace que las macros sean un vehículo excelente para malware, ransomware y robo de información si no se aplican controles estrictos.
Desde el punto de vista del desarrollador, muchas vulnerabilidades aparecen porque se escriben macros sin tener en cuenta la seguridad: se confía en datos externos sin validación, se automatizan acciones sensibles (acceso a archivos del sistema, conexiones a bases de datos, envío de correos) sin control de permisos, o se habilita la ejecución automática al abrir el documento mediante eventos como Document_Open.
Los usuarios finales también son parte del problema, ya que con frecuencia habilitan macros en documentos procedentes de correos sospechosos o de fuentes poco claras. Las campañas de phishing explotan precisamente esa confianza: adjuntan un documento de Word con macros que, al activarse, descargan y ejecutan código malicioso, a menudo invisible para el usuario.
En este escenario, la función Environ de VBA es especialmente delicada. Esta función permite consultar variables de entorno del sistema (como USERNAME, APPDATA, USERPROFILE, etc.), lo que resulta muy útil para escribir macros que se adapten automáticamente a diferentes equipos, rutas y usuarios.
El problema es que las variables de entorno también pueden desvelar información sensible o utilizarse de forma maliciosa. Un atacante puede recurrir a Environ para localizar carpetas concretas, perfilar el sistema de la víctima o dirigir sus cargas útiles a rutas específicas. Incluso podría intentar influir en el comportamiento de la macro si logra manipular ciertas variables de entorno en el sistema atacado.

Buenas prácticas para usar Environ con seguridad
La clave para usar Environ de forma segura en macros de Word no es prohibirla, sino tratar la información que devuelve como si fuera entrada no confiable. Es decir, validar, sanear y controlar cada valor antes de utilizarlo en rutas de archivos, conexiones o decisiones de negocio. Estos son nuestros consejos:
- Validar cualquier ruta devuelta por
Environ. Si la macro espera una carpeta de usuario típica en Windows, conviene comprobar que el valor encaja con un patrón razonable y que la ruta realmente existe. Si la cadena contiene caracteres extraños, rutas relativas peligrosas o secuencias que puedan indicar un intento de inyección, lo más prudente es abortar la operación y avisar al usuario. - Evitar depender en exceso de las variables de entorno para decisiones críticas del código. Si una ruta o un valor clave es, en la práctica, fijo en todos los equipos de la organización, es posible que resulte más seguro tenerlo configurado en una constante, en lugar de leerlo dinámicamente del entorno donde alguien podría manipularlo.
- Aplicar el principio de mínimo privilegio. La cuenta de usuario que ejecuta la macro debería tener solo los permisos imprescindibles. Así, incluso si alguien manipula una variable de entorno y la macro termina apuntando a una ruta inesperada, el daño potencial estará acotado por las restricciones del sistema.
- Omplementar un manejo de errores robusto alrededor de las llamadas a
Environ. Si una variable no existe, ha cambiado de nombre o devuelve algo inesperado, la macro debería reaccionar de forma controlada: mostrar un mensaje claro al usuario, registrar el incidente si es necesario y detenerse con elegancia antes de provocar fallos en cadena o exponer información adicional.
Ubicaciones de confianza, políticas y firmas digitales en la organización
Además de la firma digital, Word y el resto de Office cuentan con el concepto de “ubicaciones de confianza”. Se trata de carpetas específicas, locales o de red, en las que el contenido se considera seguro por diseño, de forma que los documentos con macros guardados allí pueden ejecutarse sin avisos adicionales.
Las ubicaciones de confianza son un arma de doble filo:
- Por un lado, permiten que las macros corporativas se ejecuten sin molestias para el usuario.
- Por otro, si se abusa de ellas o se definen demasiadas rutas, se amplía enormemente la superficie de ataque, ya que cualquier archivo malicioso colocado en esas carpetas esquivaría parte de los controles.
Lo más sensato suele ser limitar el número de ubicaciones de confianza a unas pocas rutas muy controladas, idealmente en servidores de red administrados por TI. Los usuarios no deberían poder añadir nuevas ubicaciones libremente. Igualmente conviene revisar de forma periódica qué rutas se han marcado como seguras para asegurarse de que no se han colado carpetas innecesarias o temporales.
En paralelo, las políticas corporativas de macroseguridad pueden exigir que cualquier solución VBA distribuida internamente esté firmada con un certificado de la empresa. De esta manera, incluso aunque el documento se copie fuera de una ubicación de confianza, la firma seguirá proporcionando un control de integridad y autenticidad.
Auditorías, revisiones y formación de usuarios
Una política de macroseguridad seria no se limita a configurar opciones una vez y olvidarse. El ecosistema de amenazas cambia constantemente y el uso que los empleados hacen de las macros también evoluciona. Por eso conviene planificar auditorías periódicas del código VBA y de las plantillas en uso.
Desde el punto de vista del desarrollo, estas auditorías consisten en revisar el código en busca de funciones obsoletas, dependencias peligrosas, gestión de errores insuficiente o accesos a recursos sensibles sin protección adecuada. También se comprueba si se están siguiendo las directrices internas, como no usar macros auto-ejecutables sin necesidad o no almacenar credenciales en claro dentro del código.
En paralelo, resulta útil combinar revisiones manuales con herramientas de análisis automatizado, capaces de detectar patrones sospechosos en macros, como llamadas a APIs del sistema, manipulación de ficheros fuera de rutas previstas o comunicación de datos por la red. Estas herramientas pueden integrarse en el flujo de desarrollo para avisar a los programadores antes de liberar nuevas versiones.
El control de versiones y la gestión de cambios también juegan un papel importante. Documentar quién modificó cada macro, cuándo y por qué permite trazar el origen de posibles problemas de seguridad y revertir rápidamente a una versión anterior si una actualización introduce un comportamiento no deseado.
Cuando se combinan todas estas medidas —firma digital, certificados bien gestionados, marcas de tiempo, control de ubicaciones, protección del código, auditorías y concienciación de usuarios—, las macros en Word dejan de ser una amenaza incontrolable y se convierten en una herramienta potente pero gestionada, que aporta productividad sin poner en jaque la seguridad de la organización.

