Skip to content

Security pt BR

Hammad Maqbool edited this page Oct 29, 2026 · 1 revision

English · 简体中文 · 繁體中文 · Español · العربية · Français · Português (Brasil) · Deutsch · हिन्दी · 日本語 · 한국어 · Русский · Bahasa Indonesia · Türkçe · Italiano · Tiếng Việt

Segurança no docxi: como relatar problemas e lidar com entradas não confiáveis

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.

Relatar uma vulnerabilidade

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.

Atualize a partir da 0.0.x

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.

Entradas não confiáveis

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.

Como as versões são protegidas

  • 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.

Páginas relacionadas


← Início da wiki · README

Clone this wiki locally