Skip to content

Security ru

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

Безопасность docxi: как сообщить о проблеме и как обращаться с недоверенными данными

На этой странице описано, как сообщить о проблеме безопасности, и что нужно знать о безопасности, когда приложение передаёт в docxi данные от пользователей.

Как сообщить об уязвимости

Пожалуйста, не сообщайте о проблемах безопасности в публичных issue. Вместо этого напишите на адреса для связи по сопровождению проекта, указанные в docxi.gemspec. Укажите версию docxi и коротко опишите, как воспроизвести проблему.

Обновитесь с 0.0.x

docxi 0.0.x передаёт строки с путями к изображениям в Kernel#open. Kernel#open выполняет строку, которая начинается с |, как команду оболочки, поэтому тот, кто управляет путём к изображению, может выполнять команды на вашем сервере. 0.1.0 открывает файлы через File.open и скачивает URL через URI#open. Ни один из этих методов не выполняет команды.

Недоверенные данные

Текст передавать безопасно. Текст, содержимое таблиц и другие строки записываются как текст XML или значения атрибутов, которые экранирует nokogiri. Пользовательский ввод не может добавить в документ элементы.

С источниками изображений нужна осторожность. add_media принимает:

Источник Что делает docxi
IO, который вы открыли сами Читает его
Путь к файлу Читает этот файл с диска вашего сервера
URL http, https или ftp Скачивает его с вашего сервера

Если путь выбирает пользователь, в документ может попасть любой читаемый файл вашего сервера, например конфигурация или ключи. Если URL выбирает пользователь, ваш сервер выполнит запрос по нему, а так можно добраться и до внутренних адресов (подделка серверных запросов, SSRF). Передавайте IO, который открыли сами, или разрешайте только известные пути и хосты.

Гиперссылки ведут туда, куда указывает URL. Проверяйте URL от пользователей, прежде чем передавать их в add_hyperlink.

Как защищены выпуски

  • Версии публикуются из GitHub Actions через доверенную публикацию (trusted publishing) RubyGems, поэтому в репозитории не хранится ни одного ключа API.
  • В метаданных гема задан rubygems_mfa_required, поэтому для публикации с личным ключом API нужна многофакторная аутентификация.

Связанные страницы


← Главная вики · README

Clone this wiki locally