Repository navigation
Security ja
English · 简体中文 · 繁體中文 · Español · العربية · Français · Português (Brasil) · Deutsch · हिन्दी · 日本語 · 한국어 · Русский · Bahasa Indonesia · Türkçe · Italiano · Tiếng Việt
このページでは、セキュリティ上の問題の報告方法と、アプリケーションがユーザーの入力を docxi に渡すときに知っておくべきセキュリティ上の注意点を説明します。
セキュリティ上の問題は、公開の Issue では報告しないでください。代わりにメンテナーにメールで連絡してください。メールアドレスは docxi.gemspec に記載しています。docxi のバージョンと、問題を再現する簡単な手順を添えてください。
docxi 0.0.x は画像のパスの文字列を Kernel#open に渡します。Kernel#open は | で始まる文字列をシェルコマンドとして実行するため、画像のパスを操作できる攻撃者は、サーバー上でコマンドを実行できてしまいます。0.1.0 はファイルを File.open で開き、URL を URI#open でダウンロードします。どちらもコマンドを実行しません。
テキストは安全に渡せます。テキスト、表の内容、その他の文字列は、XML のテキストまたは属性値として書き出され、nokogiri がエスケープします。ユーザーの入力でドキュメントに要素を追加することはできません。
画像のソースには注意が必要です。add_media は次のものを受け付けます。
| ソース | docxi の動作 |
|---|---|
| 自分で開いた IO | それを読み込みます |
| ファイルパス | サーバーのディスクからそのファイルを読み込みます |
http、https、ftp の URL |
サーバーからダウンロードします |
ユーザーがパスを選べる場合、設定ファイルや鍵など、サーバー上の読み取り可能な任意のファイルをドキュメントに埋め込ませることができてしまいます。ユーザーが URL を選べる場合、サーバーがその URL にリクエストを送るため、内部のアドレスにも到達しえます(サーバーサイドリクエストフォージェリ、SSRF)。自分で開いた IO を渡すか、既知のパスとホストだけを許可してください。
ハイパーリンクは、URL が示す場所をそのまま指します。ユーザーが指定した URL は、add_hyperlink に渡す前に確認してください。
- リリースは GitHub Actions から RubyGems の Trusted Publishing で公開されるため、リポジトリには API キーを保存していません。
- gem のメタデータで
rubygems_mfa_requiredを設定しているため、個人の API キーでのプッシュには多要素認証が必要です。
docxi wiki · README · Installation · Troubleshooting · Report an issue · MIT License
Start
Build documents
Help
Project
Links
Languages