Repository navigation
Security pt BR
English · 简体中文 · 繁體中文 · Español · العربية · Français · Português (Brasil) · Deutsch · हिन्दी · 日本語 · 한국어 · Русский · Bahasa Indonesia · Türkçe · Italiano · Tiếng Việt
Esta página explica como relatar um problema de segurança e o que é importante saber quando a sua aplicação repassa entradas de usuários para o docxi.
Não relate problemas de segurança em issues públicas. Envie um e-mail para os endereços de manutenção que estão em docxi.gemspec. Informe a versão do docxi e uma forma curta de reproduzir o problema.
O docxi 0.0.x passa as strings de caminho de imagem para Kernel#open. Kernel#open executa como comando de shell uma string que começa com |, então quem controla um caminho de imagem poderia executar comandos no seu servidor. A 0.1.0 abre arquivos com File.open e baixa URLs com URI#open. Nenhum dos dois executa comandos.
Passar texto é seguro. Texto, conteúdo de tabelas e outras strings são gravados como texto XML ou valores de atributo, que o nokogiri escapa. A entrada de usuários não consegue adicionar elementos ao documento.
Fontes de imagem exigem cuidado. add_media aceita:
| Fonte | O que o docxi faz |
|---|---|
| Um IO aberto por você | Lê o IO |
| Um caminho de arquivo | Lê esse arquivo do disco do seu servidor |
Uma URL http, https ou ftp
|
Baixa a URL a partir do seu servidor |
Se um usuário puder escolher o caminho, poderá fazer com que qualquer arquivo legível do seu servidor, como configurações ou chaves, seja embutido no documento. Se puder escolher a URL, o seu servidor vai requisitá-la, o que pode alcançar endereços internos (falsificação de requisição do lado do servidor, SSRF). Passe um IO aberto por você ou permita apenas caminhos e hosts conhecidos.
Hiperlinks apontam para onde a URL indicar. Verifique as URLs fornecidas por usuários antes de passá-las para add_hyperlink.
- As versões são publicadas pelo GitHub Actions com a publicação confiável (trusted publishing) do RubyGems, então nenhuma chave de API fica guardada no repositório.
- Os metadados da gem definem
rubygems_mfa_required, então publicações feitas com uma chave de API pessoal exigem autenticação multifator.
docxi wiki · README · Installation · Troubleshooting · Report an issue · MIT License
Start
Build documents
Help
Project
Links
Languages