Español | English
rss facebook linkedin Twitter

Acciones en el Portable Document Format

El formato PDF está al alza, o eso parecen indicar varias vulnerabilidades en productos de Adobe publicadas recientemente, y que permiten la ejecución de código arbitrario en el sistema. Por ahora no me voy a meter con ese tipo de archivos maliciosos, aunque cuando haya expuesto todo el potencial del Portable Document Format seguramente haré una referencia a ellos.

Tras la breve explicación sobre los diferentes objetos que podemos encontrar en un documento de este formato, y su estructura física y lógica, seguiré con las acciones que se pueden llevar a cabo en background. Los PDFs no son documentos estáticos, sino que es posible especificar en su interior cierta programación de instrucciones a llevar a cabo según las acciones que realice el usuario. Como ya estaréis pensando, es aquí donde se esconde el verdadero problema en cuanto a la seguridad se refiere, y que convierte a un PDF en malware potencial, con una alta probabilidad de ser ejecutado.

Una acción en un PDF es un objeto de tipo diccionario que puede contener los siguientes elementos:
  • /Type: es opcional y sirve para indicar el tipo de objeto que describe el diccionario. En este caso Action.
  • /S: es un elemento obligatorio y define el tipo de acción a realizar.
  • /Next: también es opcional, y permite especificar la siguiente acción o acciones que se ejecutarán después.


Además, dependiendo del tipo de acción, los elementos que se pueden incluir en el diccionario aumentan, permitiendo un mayor grado de control. Los tipos de acciones que podemos encontrar se describen a continuación:
  • GoTo: coloca el foco de la aplicación en otra parte del documento.
  • GoToR: coloca el foco en una parte concreta de otro documento diferente del actual.
  • GoToE: permite redireccionar a/desde un documento PDF incrustado.
  • Launch: ejecuta una aplicación o lee o imprime un documento.
  • Thread: salta a un artículo dentro de un documento.
  • URI: permite acceder a páginas o recursos remotos.
  • Sound: reproduce el sonido especificado.
  • Movie: reproduce el vídeo especificado.
  • Hide: oculta o muestra la anotación o anotaciones especificadas.
  • Named: ejecuta una acción predefinida por el lector PDF.
  • SubmitForm: envía los datos de un formulario existente a una URL dada.
  • ResetForm: cambia el valor de los campos de un formulario a sus valores por defecto.
  • ImportData: importa datos desde un fichero al documento.
  • JavaScript: ejecuta un script JavaScript.
  • SetOCGState: fija el estado de un grupo opcional de componentes, que son una colección de elementos gráficos distribuidos a lo largo del documento.
  • Rendition: controla la reproducción de contenido multimedia.
  • Trans: permite controlar la transición gráfica entre diferentes acciones.
  • GoTo3DView: identifica una anotación de tipo 3D y especifica un tipo de vista a usar por ésta.

El desencadenante de estas acciones es muy variado dependiendo de dónde se encuentren especificadas. Su ubicación suele ser una anotación o cualquier objeto que forma parte del esquema del documento (outline), se introduce a través del elemento /A, y se ejecutará cuando el objeto correspondiente se active. También pueden ubicarse en una anotación, una página o un campo de un formulario interactivo a través del elemento /AA, acciones adicionales, y su ejecución variará dependiendo de las opciones elegidas. De esta forma se pueden programar acciones cuando el cursor del ratón entra o sale de una zona en una anotación, cuando se visualiza cierta página del documento, o cuando se cambia el valor de un campo de un formulario, entre otras muchas otras. Además, mediante el elemento /OpenAction, ubicado en el catálogo del documento, se puede ejecutar una acción al abrirse el documento.

Como veis, las acciones pueden dar mucho juego. Este post ha querido ser una introducción a la ejecución de acciones en un documento PDF, en próximas entradas se desgranarán algunas de las más importantes desde un enfoque más práctico.


Jose Miguel Esparza
S21sec e-crime


(+34 902 222 521)


24 horas / 7 días a la semana



© Copyright S21sec 2013 - Todos los derechos reservados


login