Fecha de publicación: Lun, 30/03/2026 - 15:39

Alerta de seguridad

Nivel de peligrosidad: Alto

Descripción

La vulnerabilidad ocurre cuando una aplicación permite que datos controlados por el usuario sean pasados directamente como argumentos al método addJS de jsPDF sin validación.

Al suministrar un payload especialmente diseñado que escapa del delimitador de cadena de JavaScript utilizando caracteres especiales para cerrar la cadena y para cerrar el diccionario del objeto), un atacante puede alterar la estructura interna del documento. Esto le permite inyectar diccionarios de "Acciones Adicionales" (como /AA) y bloques directos de /JavaScript u /O (Open). Cuando un usuario legítimo descarga y abre el archivo en una aplicación vulnerable (como Adobe Acrobat o algunos navegadores web), el código inyectado se ejecuta automáticamente al abrir el archivo.

Cabe destacar que esto no compromete el servidor o la aplicación que aloja jsPDF de manera directa, sino que convierte a la plataforma en un vector de distribución (ataque del lado del cliente) para enviar documentos maliciosos a usuarios desprevenidos.

Recursos afectados

  • Software: Biblioteca jsPDF.
  • Versiones vulnerables: Todas las versiones anteriores a la 4.2.0.

Solución/Mitigación

Se debe actualizar inmediatamente la dependencia de jsPDF en los proyectos afectados a la versión 4.2.0 o superior.

  • Mitigación Temporal: Si no es viable actualizar la biblioteca a corto plazo, como medida de contención se debe asegurar la sanitización estricta de cualquier entrada de usuario que se envíe al método addJS. Esto se consigue escapando programáticamente las barras invertidas \ y los paréntesis ( y ) antes de la generación del PDF.

Indicadores de compromiso

  • Identificación de cargas útiles (payloads) en peticiones HTTP (campos de formularios, parámetros JSON) que contengan secuencias de escape de objetos PDF, tales como: ) >> /AA << /O << /S /JavaScript.
  • Documentos PDF generados recientemente por la plataforma que contengan bloques /JS o funciones de alerta y ofuscación (ej. app.alert()) en los metadatos o diccionarios de acción, los cuales no sean parte del flujo normal de la aplicación.

Recomendaciones

  • Realizar una revisión del código fuente en busca de implementaciones de jsPDF, específicamente identificando el uso de addJS donde reciba inputs dinámicos.
  • Emitir un recordatorio a los usuarios finales y personal interno para que configuren sus visores de PDF de manera que la ejecución de JavaScript esté deshabilitada por defecto.

Referencias