CVE-2014-0130

Rails Ruby on Rails

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

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

2022-03-25

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

Directory traversal vulnerability in actionpack/lib/abstract_controller/base.rb in the implicit-render implementation in Ruby on Rails allows remote attackers to read arbitrary files via a crafted request.

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

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

Уязвимость в механизме неявного рендеринга (implicit render) в компоненте Action Pack. Злоумышленник может отправить специально сформированный HTTP-запрос, который заставит приложение выйти за пределы ожидаемой директории шаблонов и прочитать содержимое произвольных файлов на сервере (например, файлов конфигурации, логов, включая файлы с секретами).

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

Основной способ — обновить Ruby on Rails до исправленной версии.

Для Rails 4.x: Обновитесь до версии 4.0.5, 4.1.1 или выше.

# Если используете Bundler, обновите версию в Gemfile:
# gem 'rails', '~> 4.1.1'
# Затем выполните:
bundle update rails

Для Rails 3.x: Обновитесь до версии 3.2.18.

# В Gemfile укажите:
# gem 'rails', '~> 3.2.18'
bundle update rails

Для системных пакетов (например, в Debian/Ubuntu): Установите обновленный пакет из репозитория.

# Пример для Debian/Ubuntu (имя пакета может отличаться, например, ruby-rails)
sudo apt update
sudo apt install --only-upgrade ruby-rails

Временное решение

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

  1. Настройка WAF (Web Application Firewall):

    • Добавьте правило для блокировки запросов, содержащих последовательности для обхода директорий (../, ..\, %2e%2e%2f).
    • Пример правила для ModSecurity (CRS): SecRule ARGS "@contains ../" "id:10001,phase:2,deny,msg:'Path Traversal Attack'"
  2. Мониторинг и фильтрация на уровне приложения:

    • В контроллерах Rails добавьте фильтр для проверки параметров action и controller на наличие недопустимых символов перед рендерингом.
  3. Ограничение прав доступа:

    • Убедитесь, что процесс веб-сервера (например, www-data, nginx, puma) запущен от непривилегированного пользователя и имеет минимально необходимые права на чтение файлов в директории приложения.