Repository navigation
Security es
English · 简体中文 · 繁體中文 · Español · العربية · Français · Português (Brasil) · Deutsch · हिन्दी · 日本語 · 한국어 · Русский · Bahasa Indonesia · Türkçe · Italiano · Tiếng Việt
Esta página explica cómo informar de un problema de seguridad y qué aspectos de seguridad conviene conocer cuando tu aplicación pasa entradas de usuarios a docxi.
No informes de problemas de seguridad en issues públicos. Escríbelos por correo electrónico a las direcciones de mantenimiento que figuran en docxi.gemspec. Incluye la versión de docxi y una forma breve de reproducir el problema.
docxi 0.0.x pasa las cadenas de ruta de imagen a Kernel#open. Kernel#open ejecuta como comando de shell una cadena que empieza por |, así que quien controle una ruta de imagen podría ejecutar comandos en tu servidor. La 0.1.0 abre los archivos con File.open y descarga las URL con URI#open. Ninguno de los dos ejecuta comandos.
El texto se puede pasar sin riesgo. El texto, el contenido de las tablas y otras cadenas se escriben como texto XML o valores de atributo, que nokogiri escapa. La entrada de los usuarios no puede añadir elementos al documento.
Los orígenes de imagen requieren cuidado. add_media acepta:
| Origen | Qué hace docxi |
|---|---|
| Un IO que has abierto tú | Lo lee |
| Una ruta de archivo | Lee ese archivo del disco de tu servidor |
Una URL http, https o ftp
|
La descarga desde tu servidor |
Si un usuario puede elegir la ruta, podría conseguir que cualquier archivo legible de tu servidor, como la configuración o las claves, acabe incrustado en el documento. Si un usuario puede elegir la URL, tu servidor la solicitará, y eso puede alcanzar direcciones internas (falsificación de solicitudes del lado del servidor, SSRF). Pasa un IO que hayas abierto tú, o permite solo rutas y hosts conocidos.
Los hipervínculos apuntan a donde diga la URL. Comprueba las URL que proporcionan los usuarios antes de pasarlas a add_hyperlink.
- Las versiones se publican desde GitHub Actions con la publicación de confianza (trusted publishing) de RubyGems, así que no se guarda ninguna clave de API en el repositorio.
- Los metadatos de la gema definen
rubygems_mfa_required, así que las publicaciones hechas con una clave de API personal requieren autenticación multifactor.
docxi wiki · README · Installation · Troubleshooting · Report an issue · MIT License
Start
Build documents
Help
Project
Links
Languages