Хочешь читать чужие файлы — Rack уже готов помочь.
Специалисты OPSWAT раскрыли три уязвимости в интерфейсе Rack для Ruby, которые при успешной эксплуатации могут позволить злоумышленникам получить несанкционированный доступ к файлам, внедрять вредоносные данные и изменять журналы событий в определённых условиях.
По данным компании OPSWAT, обнаруженные недостатки получили следующие идентификаторы:
CVE-2025-27610 (оценка CVSS: 7,5) — уязвимость типа обход путей, которая позволяет получить доступ ко всем файлам внутри заданной директории root: в случае, если атакующий сможет определить их местоположение.
CVE-2025-27111 (оценка CVSS: 6,9) — некорректная нейтрализация управляющих символов ( CRLF ) и ошибок вывода в логах, которая открывает возможность подмены записей и искажения журналов.
CVE-2025-25184 (оценка CVSS: 5,7) — аналогичный дефект нейтрализации CRLF-последовательностей, который даёт возможность изменять журналы событий и внедрять вредоносные данные.
Успешная эксплуатация этих уязвимостей позволяет скрывать следы атак, читать произвольные файлы и внедрять вредоносный код.
Согласно отчёту OPSWAT, наиболее серьёзной из выявленных проблем считается CVE-2025-27610. Эта уязвимость позволяет неаутентифицированным злоумышленникам извлекать чувствительную информацию, включая конфигурационные файлы, учётные данные и другие конфиденциальные данные, что создаёт угрозу утечки информации.
Корень проблемы заключается в работе модуля Rack::Static , предназначенного для обслуживания статического контента, такого как JavaScript-файлы, стили CSS и изображения. Механизм не фильтрует пользовательские пути перед выдачей файлов, что даёт возможность атакующему предоставить специально сформированный путь и получить доступ к файлам за пределами директории для статических ресурсов.
Дополнительно отмечено, что если параметр :root не определён явно, Rack автоматически устанавливает его равным текущей рабочей директории приложения (Dir.pwd), фактически превращая её в корень веб-приложения. В случае, если настройка :root отсутствует или настроена некорректно относительно параметра :urls, атакующий может использовать технику обхода путей для доступа к конфиденциальным данным вне ограниченного каталога.
Для минимизации рисков рекомендуется обновить Rack до последней версии. Если немедленное обновление невозможно, советуется отказаться от использования Rack::Static или убедиться, что параметр root: указывает на директорию, содержащую только публичные файлы.