CVE-2019-5418

Rails Ruby on Rails

ВЫСОКАЯ ВЕРОЯТНОСТЬ

Дата обнаружения

2025-07-07

Официальное описание

Rails Ruby on Rails contains a path traversal vulnerability in Action View. Specially crafted accept headers in combination with calls to `render file:` can cause arbitrary files on the target server to be rendered, disclosing the file contents.

🛡️
Технический анализ и план устранения

Суть уязвимости

CVE-2019-5418 — это критическая уязвимость типа Path Traversal (обход путей) в компоненте Action View фреймворка Ruby on Rails. Проблема возникает из-за некорректной обработки HTTP-заголовка Accept.

Когда контроллер использует метод render file:, Rails пытается найти подходящий шаблон, основываясь на типе контента, указанном в заголовке Accept. Злоумышленник может передать специально сформированную строку (например, ../../../../etc/passwd{{), что заставит приложение выйти за пределы директории шаблонов и прочитать произвольный файл в системе, к которому у процесса Ruby есть доступ.

Как исправить

Основным способом устранения является обновление версии Ruby on Rails до безопасного релиза.

  1. Откройте Gemfile и обновите версию rails до одной из следующих (или выше):
  2. 5.2.2.1
  3. 5.1.6.2
  4. 5.0.7.2
  5. 4.2.11.1

  6. Выполните обновление зависимостей:

bundle update rails

  1. После обновления убедитесь, что в Gemfile.lock зафиксирована корректная версия, и перезапустите сервер приложения.

Временные меры

Если немедленное обновление фреймворка невозможно, примените один из следующих методов защиты:

1. Исправление на уровне контроллера (Monkey Patch) Добавьте проверку или принудительно укажите формат рендеринга, чтобы заголовок Accept не влиял на поиск пути:

render file: "path/to/file", formats: [:html]

2. Фильтрация на уровне Reverse Proxy (Nginx) Если вы используете Nginx, можно блокировать подозрительные заголовки Accept, содержащие попытки выхода из директории:

if ($http_accept ~* "\.\./") {
    return 400;
}

3. Ограничение прав процесса Убедитесь, что пользователь, от имени которого запущен Rails, имеет минимально необходимые права в ОС (принцип Least Privilege), чтобы минимизировать ущерб в случае чтения файлов.