Docuboxer
Por Sergio Alonzo Piña··6 min de lectura

¿Puede un PDF ejecutar código? Sí, y así se ve

Un PDF puede llevar JavaScript, acciones automáticas y archivos embebidos. Qué hace cada marcador, cuándo es legítimo y cómo revisarlo sin subirlo.

Sí: el formato PDF admite código. No es solo un papel digital. La especificación permite incrustar JavaScript, ejecutar acciones en cuanto se abre el documento, lanzar programas externos, adjuntar archivos completos dentro del PDF e incluso anidar otros PDF. Nada de eso es automáticamente malicioso —los formularios interactivos que rellenas en el banco funcionan así—, pero sí explica por qué un PDF puede ser el vehículo de un ataque. La buena noticia es que todos esos elementos dejan marcas visibles en la estructura del archivo, y puedes analizar un PDF sospechoso sin abrirlo directamente en tu navegador.

Los marcadores que importan y qué hace cada uno

Un PDF es una colección de objetos con claves. Las claves que dan capacidad de ejecución son pocas y tienen nombre propio:

  • /JS y /JavaScript — contienen código JavaScript incrustado en el documento. Es un dialecto limitado, distinto del JavaScript del navegador, pero puede manipular el documento, leer campos de formulario y pedir acciones al lector.
  • /OpenAction — dice qué debe pasar en el momento de abrir el archivo, sin interacción del usuario. Puede ser algo inocuo (ir a la página 3) o disparar JavaScript.
  • /AA (Additional Actions) — acciones adicionales asociadas a eventos: al cerrar el documento, al imprimirlo, al entrar o salir de un campo, al pasar el ratón por encima. Es la vía habitual para que algo se ejecute cuando el usuario ya bajó la guardia.
  • /Launch — pide al lector que lance un programa o abra un archivo externo. Los lectores modernos lo bloquean o piden confirmación explícita, pero su presencia casi nunca tiene una explicación buena.
  • /EmbeddedFile — un archivo completo guardado dentro del PDF. Puede ser una hoja de cálculo legítima adjunta a un informe… o el ejecutable que el atacante quiere que abras tú mismo.
  • /GoToE — "ir a un destino embebido": navega hacia un PDF anidado dentro del propio PDF. Sirve para envolver contenido y despistar a análisis superficiales.
  • /URI — enlaces externos. No ejecutan nada, pero son la pieza central del phishing con PDF: el documento no lleva malware, lleva un botón bonito hacia una página falsa.

Cuándo estos marcadores son perfectamente normales

Esta es la parte que casi nadie cuenta y que evita paranoias inútiles:

  • Formularios interactivos. Declaraciones de impuestos, formularios de alta, hojas de pedido: usan JavaScript para validar un NIF, calcular un total o impedir que envíes un campo vacío.
  • Portfolios y expedientes. Un informe técnico puede adjuntar el CSV de los datos originales como /EmbeddedFile. Un PDF/A de archivo puede incrustar las fuentes y los adjuntos por requisito normativo.
  • Presentaciones y manuales. Un /OpenAction que abre el documento en vista de página completa o en un capítulo concreto es una cortesía del diseñador, no un ataque.
  • Facturas electrónicas. Varios formatos europeos guardan el XML de la factura embebido dentro del PDF visible. El archivo embebido es el punto del documento.

La regla práctica no es "si hay JavaScript, malo", sino si el marcador encaja con lo que el documento dice ser. Un formulario oficial con código es coherente. Un "justificante de pago" de dos páginas enviado desde una dirección que no reconoces, con /OpenAction lanzando JavaScript y un .zip embebido, no lo es.

Las combinaciones que sí deben encender la alarma

  • /OpenAction o /AA apuntando a /JavaScript: ejecución sin que hagas clic en nada.
  • /Launch presente, con o sin contexto. Casi ningún documento de oficina lo necesita.
  • Un /EmbeddedFile ejecutable o comprimido (.exe, .js, .vbs, .zip) en un documento que no menciona ningún adjunto.
  • Un PDF de muy pocas páginas y muy poco texto visible, pero con estructura desproporcionadamente compleja.
  • Enlaces que no coinciden con el texto que los presenta, o dominios parecidos al real con una letra cambiada.

El correo que lo trae cuenta tanto como el archivo. Antes de tocar el PDF suele merecer la pena entender qué dicen SPF, DKIM y DMARC del remitente: si el correo ni siquiera autentica, el adjunto ya empieza con mala nota.

Lo que los visores modernos ya han capado

Hay que decirlo para no vender miedo: el panorama de hace quince años no es el de hoy. Adobe Acrobat Reader ejecuta su JavaScript en un modo protegido, permite desactivarlo desde las preferencias y bloquea por defecto las acciones que intentan lanzar programas o alcanzar la red. Los visores integrados de Chrome y Firefox son todavía más restrictivos: implementan un subconjunto mínimo del JavaScript de PDF, no tienen equivalente a /Launch y corren dentro del sandbox del navegador.

La conclusión práctica no es que los PDF hayan dejado de ser peligrosos, sino que el vector dominante se ha desplazado: menos ejecución silenciosa, más ingeniería social. El documento que te convence de pulsar un enlace, descargar el adjunto o teclear tus credenciales en una web clonada sigue funcionando igual de bien con un visor blindado.

Cómo revisarlo sin abrirlo ni subirlo a ningún sitio

Los marcadores están en la estructura del archivo, no en la página renderizada, así que se pueden leer sin dibujar nada en pantalla y sin ejecutar el contenido. Ese es exactamente el enfoque del analizador de PDF de Docuboxer: el archivo se procesa en tu navegador, se recorre su estructura, se listan los marcadores encontrados y el archivo nunca sale de tu equipo. No hay servidor que reciba tu documento, lo cual importa bastante cuando el PDF sospechoso es, por ejemplo, una nómina o un contrato con datos personales.

Si lo que tienes no es un PDF sino un adjunto de tipo dudoso, el paso previo es comprobar qué es realmente: la extensión se puede cambiar, los primeros bytes del archivo no. Para eso está el inspector de archivos, que compara la extensión con el tipo real. Y si quieres saber quién generó el documento y con qué programa, los metadatos del PDF cuentan bastante más de lo que la gente supone.

Lo que este análisis NO es

Conviene decirlo sin rodeos, porque el mercado está lleno de promesas que nadie puede cumplir: listar marcadores no es un antivirus, y "sin marcadores peligrosos" no significa "seguro". Tres motivos concretos:

  • Los exploits no necesitan marcadores. Buena parte de los ataques reales contra PDF no usan JavaScript: aprovechan fallos en cómo el lector procesa fuentes, imágenes o streams malformados. Eso no aparece como una clave con nombre bonito.
  • Los nombres se pueden ofuscar. En la sintaxis PDF, un nombre admite escapes hexadecimales: /JavaScript puede escribirse con algunos caracteres codificados y seguir siendo válido para el lector. Un análisis que busque literales se lo pierde.
  • Un enlace es solo un enlace. El phishing por PDF más eficaz no lleva código: lleva un botón. La estructura sale limpia y el peligro está en el dominio de destino.

Lo que sí obtienes es información para decidir: saber que un archivo lleva /Launch y un ejecutable embebido es motivo suficiente para no abrirlo, y es una respuesta que tienes en segundos.

Qué hacer con un PDF que no te fías

  1. No lo abras todavía con el visor por defecto del sistema.
  2. Mira su estructura con un analizador local y anota qué marcadores aparecen.
  3. Confirma el origen por otro canal. Un mensaje o una llamada de treinta segundos desmonta la mayoría de los fraudes por suplantación.
  4. Si necesitas ver el contenido, ábrelo en un visor que renderice sin ejecutar JavaScript ni abrir adjuntos — el lector de PDF en el navegador muestra las páginas sin instalar nada.
  5. Mantén el lector actualizado. Contra los exploits del propio visor, los parches valen más que cualquier análisis previo.

El resumen es corto: un PDF puede ejecutar código, la mayoría de las veces por motivos legítimos, y saber mirar dentro convierte una decisión a ciegas en una decisión informada. Que no es lo mismo que una decisión sin riesgo.

Preguntas frecuentes

¿Un PDF puede tener un virus?

Un PDF no es un programa, pero sí puede contener JavaScript, acciones que se lanzan al abrirlo y archivos embebidos que sí son ejecutables. El daño real suele venir de dos vías: convencerte de que abras el archivo embebido o de que sigas un enlace, o explotar un fallo del propio lector de PDF. Por eso lo importante no es solo el PDF, sino qué lector usas y si está actualizado.

¿Qué significa /OpenAction en un PDF?

/OpenAction es la entrada del documento que indica qué debe pasar en cuanto se abre, sin que el usuario haga nada. Su uso legítimo más común es saltar a una página concreta o ajustar el zoom. Cuando /OpenAction apunta a JavaScript o a un lanzamiento de programa, es una de las señales más claras de que el archivo merece desconfianza.

¿Es malo que un PDF lleve JavaScript?

No necesariamente. Los formularios interactivos usan JavaScript para validar campos, calcular totales o formatear fechas, y son perfectamente normales en facturas o formularios de empresa. La pregunta útil es otra: ¿tiene sentido que este documento en concreto lleve código? Una nómina en PDF con JavaScript encaja; una supuesta factura de dos páginas enviada por un desconocido, no.

¿Puedo revisar un PDF sin abrirlo?

Sí. Los marcadores viven en la estructura del archivo, no en lo que se ve en pantalla, así que se pueden leer sin renderizar el documento. El analizador de PDF de Docuboxer hace exactamente eso en tu navegador: lee la estructura, lista los marcadores que encuentra y no ejecuta nada del contenido ni sube el archivo a ningún servidor.

Si el análisis no encuentra marcadores peligrosos, ¿el PDF es seguro?

No. Eso es lo único honesto que se puede decir. Un análisis de estructura no es un antivirus: no detecta exploits contra el lector, no analiza el contenido de los objetos comprimidos con la misma profundidad que un motor especializado y los nombres de los marcadores pueden escribirse con escapes hexadecimales para dificultar su detección. Ausencia de señales es ausencia de señales, no un certificado de seguridad.

¿Qué hago con un PDF que sí tiene marcadores sospechosos?

No lo abras en tu equipo. Si viene de alguien conocido, confirma por otro canal (llamada o mensaje) que lo ha enviado de verdad. Si es de trabajo, pásalo al equipo de seguridad tal cual, sin reenviarlo a más gente. Y si tienes que verlo sí o sí, hazlo en un visor que renderice sin ejecutar JavaScript ni abrir adjuntos, o en una máquina desechable.

Mira qué lleva dentro ese PDF

JavaScript, acciones automáticas y archivos embebidos, listados en tu navegador. El archivo no se sube a ningún servidor.

Analizar un PDF →

Herramientas relacionadas

También te puede interesar: qué revela la metadata de un PDF.