Directory traversal vulnerability in the Dir.mktmpdir method in the tmpdir library in Ruby before 2.2.10, 2.3.x before 2.3.7, 2.4.x before 2
Directory traversal vulnerability in the Dir.mktmpdir method in the tmpdir library in Ruby before 2.2.10, 2.3.x before 2.3.7, 2.4.x before 2.4.4, 2.5.x before 2.5.1, and 2.6.0-preview1 might allow attackers to create arbitrary directories or files via a .. (dot dot) in the prefix argument.
- Опубликовано
- 3 апр. 2018 г.
- Обновлено
- 16 июн. 2026 г.
- EPSS
- 10,2 % · 96-й процентиль
- CWE
- CWE-22
Войдите, чтобы следить · Вы получите уведомление, если запись попадёт в KEV, получит эксплойт или обновится.
Инструменты для отчёта
Оценка срочности
33
Наблюдать
Пока низкий приоритет.
- CVSS
- 30 / 40 · 7.5 / 10
- CISA KEV
- 0 / 30 · Нет в списке
- EPSS
- 3 / 30 · 10,2 %
Затронутые системы
| Вендор | Продукт | CPE |
|---|---|---|
| ruby-lang | ruby | cpe:2.3:a:ruby-lang:ruby |
| canonical | ubuntu linux | cpe:2.3:o:canonical:ubuntu_linux |
| debian | debian linux | cpe:2.3:o:debian:debian_linux |
| redhat | enterprise linux | cpe:2.3:o:redhat:enterprise_linux |
Затронутые версии
Диапазоны версий NVD (для продуктов из каталога). Добавьте продукт в стек с версией, и сопоставление будет по ним.
- canonical ubuntu linux14.04
- canonical ubuntu linux16.04
- canonical ubuntu linux17.10
- debian debian linux7.0
- debian debian linux8.0
- debian debian linux9.0
- redhat enterprise linux6.0
- redhat enterprise linux7.0
- redhat enterprise linux7.4
- redhat enterprise linux7.5
- redhat enterprise linux7.6
- ruby-lang ruby2.5.0 и новее · до 2.5.1
- ruby-lang ruby2.4.0 и новее · до 2.4.4
- ruby-lang ruby2.3.0 и новее · до 2.3.7
- ruby-lang ruby2.2.0 и новее · до 2.2.10
- ruby-lang ruby2.6.0
Затронутые пакеты
Данные OSV и GitHub Advisory: экосистема, пакет и диапазон. Сопоставление SBOM использует эту таблицу.
| Экосистема | Пакет | Затронутый диапазон | Исправление |
|---|---|---|---|
| Alpine:v3.10 | ruby | с 2.2.0 · до 2.5.1-r0 | 2.5.1-r0 |
| Alpine:v3.4 | ruby | с 2.2.0 · до 2.3.7-r0 | 2.3.7-r0 |
| Alpine:v3.6 | ruby | с 2.2.0 · до 2.4.4-r0 | 2.4.4-r0 |
| Debian:7 | ruby1.8 | до 1.8.7.358-7.1+deb7u6 | 1.8.7.358-7.1+deb7u6 |
| Debian:7 | ruby1.9.1 | до 1.9.3.194-8.1+deb7u8 | 1.9.3.194-8.1+deb7u8 |
| Debian:9 | ruby2.3 | до 2.3.3-1+deb9u3 | 2.3.3-1+deb9u3 |
| openSUSE:Leap 15.0 | ruby-bundled-gems-rpmhelper | до 0.0.2-lp151.2.1 | 0.0.2-lp151.2.1 |
| openSUSE:Leap 15.0 | ruby2.5 | до 2.5.5-lp151.4.3.1 | 2.5.5-lp151.4.3.1 |
| Red Hat:enterprise_linux:7::client | ruby | до 0:2.0.0.648-36.el7 | 0:2.0.0.648-36.el7 |
| Red Hat:enterprise_linux:7::client | ruby-debuginfo | до 0:2.0.0.648-36.el7 | 0:2.0.0.648-36.el7 |
| Red Hat:enterprise_linux:7::client | ruby-devel | до 0:2.0.0.648-36.el7 | 0:2.0.0.648-36.el7 |
| Red Hat:enterprise_linux:7::client | ruby-doc | до 0:2.0.0.648-36.el7 | 0:2.0.0.648-36.el7 |
| Red Hat:enterprise_linux:7::client | ruby-irb | до 0:2.0.0.648-36.el7 | 0:2.0.0.648-36.el7 |
| Red Hat:enterprise_linux:7::client | ruby-libs | до 0:2.0.0.648-36.el7 | 0:2.0.0.648-36.el7 |
| Red Hat:enterprise_linux:7::client | ruby-tcltk | до 0:2.0.0.648-36.el7 | 0:2.0.0.648-36.el7 |
| Red Hat:enterprise_linux:7::client | rubygem-bigdecimal | до 0:1.2.0-36.el7 | 0:1.2.0-36.el7 |
| Red Hat:enterprise_linux:7::client | rubygem-io-console | до 0:0.4.2-36.el7 | 0:0.4.2-36.el7 |
| Red Hat:enterprise_linux:7::client | rubygem-json | до 0:1.7.7-36.el7 | 0:1.7.7-36.el7 |
| Red Hat:enterprise_linux:7::client | rubygem-minitest | до 0:4.3.2-36.el7 | 0:4.3.2-36.el7 |
| Red Hat:enterprise_linux:7::client | rubygem-psych | до 0:2.0.0-36.el7 | 0:2.0.0-36.el7 |
| Red Hat:enterprise_linux:7::client | rubygem-rake | до 0:0.9.6-36.el7 | 0:0.9.6-36.el7 |
| Red Hat:enterprise_linux:7::client | rubygem-rdoc | до 0:4.0.0-36.el7 | 0:4.0.0-36.el7 |
| Red Hat:enterprise_linux:7::client | rubygems | до 0:2.0.14.1-36.el7 | 0:2.0.14.1-36.el7 |
| Red Hat:enterprise_linux:7::client | rubygems-devel | до 0:2.0.14.1-36.el7 | 0:2.0.14.1-36.el7 |
+96
Тот же продукт
ruby-lang: все записиДругие записи с наивысшей оценкой для того же основного продукта.
- CVE-2017-17405Ruby before 2.4.3 allows Net::FTP command injection.57В плане
- CVE-2008-3656Algorithmic complexity vulnerability in the WEBrick::HTTPUtils.split_header_value function in WEBrick::HTTP::DefaultFileHandler in WEBrick i52В плане
- CVE-2021-28966In Ruby through 3.0 on Windows, a remote attacker can submit a crafted path when a Web application handles a parameter with TmpDir.47В плане
- CVE-2017-14064Ruby through 2.2.7, 2.3.x through 2.3.4, and 2.4.x through 2.4.1 can expose arbitrary memory during a JSON.generate call.42В плане
- CVE-2017-17790The lazy_initialize function in lib/resolv.rb in Ruby through 2.4.3 uses Kernel#open, which might allow Command Injection attacks, as demons41В плане
- CVE-2016-2339An exploitable heap overflow vulnerability exists in the Fiddle::Function.new "initialize" function functionality of Ruby.41В плане
Исправление
На какую версию обновиться
Версии с исправлением по данным вендора, реестров пакетов и Microsoft. Перед обновлением сверьтесь с бюллетенем вендора.
| Продукт / пакет | Исправленная версия | Источник |
|---|---|---|
| alpine:ruby | 2.5.1-r0 · Alpine:v3.10 | Реестр пакетов (OSV) |
| debian:ruby1.8 | 1.8.7.358-7.1+deb7u6 · Debian:7 | Реестр пакетов (OSV) |
| debian:ruby1.9.1 | 1.9.3.194-8.1+deb7u8 · Debian:7 | Реестр пакетов (OSV) |
| debian:ruby2.3 | 2.3.3-1+deb9u3 · Debian:9 | Реестр пакетов (OSV) |
| opensuse:ruby-bundled-gems-rpmhelper | 0.0.2-lp151.2.1 · openSUSE:Leap 15.0 | Реестр пакетов (OSV) |
| opensuse:ruby2.5 | 2.5.5-lp151.4.3.1 · openSUSE:Leap 15.0 | Реестр пакетов (OSV) |
| red hat:rh-ruby23-ruby | 0:2.3.8-69.el6 · Red Hat:rhel_software_collections:3::el6 | Реестр пакетов (OSV) |
| red hat:rh-ruby23-ruby-debuginfo | 0:2.3.8-69.el6 · Red Hat:rhel_software_collections:3::el6 | Реестр пакетов (OSV) |
| red hat:rh-ruby23-ruby-devel | 0:2.3.8-69.el6 · Red Hat:rhel_software_collections:3::el6 | Реестр пакетов (OSV) |
| red hat:rh-ruby23-ruby-doc | 0:2.3.8-69.el6 · Red Hat:rhel_software_collections:3::el6 | Реестр пакетов (OSV) |
| red hat:rh-ruby23-ruby-irb | 0:2.3.8-69.el6 · Red Hat:rhel_software_collections:3::el6 | Реестр пакетов (OSV) |
| red hat:rh-ruby23-ruby-libs | 0:2.3.8-69.el6 · Red Hat:rhel_software_collections:3::el6 | Реестр пакетов (OSV) |
| red hat:rh-ruby23-ruby-tcltk | 0:2.3.8-69.el6 · Red Hat:rhel_software_collections:3::el6 | Реестр пакетов (OSV) |
| red hat:rh-ruby23-rubygem-bigdecimal | 0:1.2.8-69.el6 · Red Hat:rhel_software_collections:3::el6 | Реестр пакетов (OSV) |
| red hat:rh-ruby23-rubygem-did_you_mean | 0:1.0.0-69.el6 · Red Hat:rhel_software_collections:3::el6 | Реестр пакетов (OSV) |
| red hat:rh-ruby23-rubygem-io-console | 0:0.4.5-69.el6 · Red Hat:rhel_software_collections:3::el6 | Реестр пакетов (OSV) |
| red hat:rh-ruby23-rubygem-json | 0:1.8.3.1-69.el6 · Red Hat:rhel_software_collections:3::el6 | Реестр пакетов (OSV) |
| red hat:rh-ruby23-rubygem-minitest | 0:5.8.5-69.el6 · Red Hat:rhel_software_collections:3::el6 | Реестр пакетов (OSV) |
| suse:ruby2.5 | 2.5.5-4.3.1 · SUSE:Linux Enterprise Module for Basesystem 15 | Реестр пакетов (OSV) |
Статус эксплойта
Публичный эксплойт неизвестен
Публичный эксплойт пока не обнаружен. Это не значит, что вы в безопасности, лишь что порог чуть выше.
Контекст для исследователя
Для пентестеров и исследователей: профиль атаки, расхождение оценок, хронология, коммиты исправлений, авторы, кандидаты в варианты и цепочки, охват bug bounty. Всё выводится из имеющихся данных; без кода эксплойтов.
Хронология
От публикации до сегодня: proof of concept, модуль Metasploit, CISA KEV и запись об исправлении. Даты — как сообщают источники.
Кроме публикации датированных событий нет.
Ежедневная оценка FIRST EPSS; записываются только изменения от 0,01 (ступенчатый график).
Ссылки на патчи и коммиты
Коммиты, PR и diff среди источников. Отправная точка для patch-diff и поиска вариантов; это исправления, не эксплойты.
Среди источников нет ссылок на коммит или PR.
Авторы
Все исследователиНашедшие, сообщившие и аналитики, названные в записи CNA. Нажмите имя, чтобы увидеть другие записи исследователя.
В записи CNA нет авторов.
Кандидаты в варианты
Тот же продукт, тот же класс уязвимости, в пределах 18 месяцев. Если патч не закрыл первопричину, родственная ошибка здесь.
Ночной расчёт связей ничего не нашёл.
Кандидаты в цепочки
Обход аутентификации и уязвимость, требующая привилегий, в одном продукте и близко по времени: вместе они могут дать путь без аутентификации.
—
Охват bug bounty
Вендор продукта присутствует в публичной программе. Сопоставление по имени; проверьте текст scope в программе.
Технические детали
Условия атаки
- Может быть вызвана любым, у кого есть доступ через интернет.
- Учётная запись или пароль не требуются.
- Действия пользователя не требуются.
- Особые условия не требуются; воспроизводится стабильно.
В случае успеха
- Конфиденциальность
- нет
- Целостность
- высокое · данные или конфигурация могут быть изменены
- Доступность
- нет
- Вектор атаки
- Сеть
- Сложность атаки
- Низкая
- Требуемые привилегии
- Не требуются
- Взаимодействие с пользователем
- Не требуется
- Область действия
- Не изменяется
- Влияние на конфиденциальность
- Нет
- Влияние на целостность
- Высокое
- Влияние на доступность
- Нет
Класс уязвимости (CWE)
CWE-22 · Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')Вектор CVSS
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
nvd-primary
Первопричина
Имя файла, переданное пользователем, объединяется с разрешённым каталогом, но не проверяется, остаётся ли результат внутри этого каталога.
Ошибка в коде
Весь класс CWE-22Показательный пример этого класса уязвимостей. Это не исходный код вендора; показан ошибочный шаблон и его исправление.
Уязвимый код
const file = path.join(ROOT, req.query.name);res.sendFile(file);Исправленный код
const file = path.resolve(ROOT, req.query.name);if (!file.startsWith(ROOT + path.sep)) { return res.sendStatus(400);}res.sendFile(file);Контекст атаки
Шаблоны атак MITRE CAPEC и техники ATT&CK для этого класса уязвимости (CWE). Отправная точка для правил обнаружения и threat hunting.
Шаблоны атак (CAPEC)
- Path TraversalCAPEC-126вероятность: High · Very High
- Using Slashes and URL Encoding Combined to Bypass Validation LogicCAPEC-64вероятность: High · High
- Manipulating Web Input to File System CallsCAPEC-76вероятность: High · Very High
- Using Escaped Slashes in Alternate EncodingCAPEC-78вероятность: High · High
- Using Slashes in Alternate EncodingCAPEC-79вероятность: High · High
Техники ATT&CK
—
Анализ Noroxi
Анализа Noroxi для этой записи пока нет
Мы не пишем анализ вручную для всех 385 000+ уязвимостей; это было бы нечестно. Для значимых уязвимостей с реальным влиянием наша команда описывает механизм, обнаружение и устранение.
Мы используем этот продукт, нужна помощьЖурнал изменений
- Исправление✗ → ✓
Для отслеживаемых записей эти изменения приходят и как уведомления. →
Источники
- lists.opensuse.org/opensuse-security-announce/2019-07/msg00036.html
- www.securityfocus.com/bid/103686
- www.securitytracker.com/id/1042004
- access.redhat.com/errata/RHSA-2018:3729
- access.redhat.com/errata/RHSA-2018:3730
- access.redhat.com/errata/RHSA-2018:3731
- access.redhat.com/errata/RHSA-2019:2028
- lists.debian.org/debian-lts-announce/2018/04/msg00023.html
- lists.debian.org/debian-lts-announce/2018/04/msg00024.html
- lists.debian.org/debian-lts-announce/2018/07/msg00012.html
- usn.ubuntu.com/3626-1/
- www.debian.org/security/2018/dsa-4259
- www.ruby-lang.org/en/news/2018/03/28/ruby-2-2-10-released/
- www.ruby-lang.org/en/news/2018/03/28/ruby-2-3-7-released/
- www.ruby-lang.org/en/news/2018/03/28/ruby-2-4-4-released/
- www.ruby-lang.org/en/news/2018/03/28/ruby-2-5-1-released/
- www.ruby-lang.org/en/news/2018/03/28/unintentional-file-and-directory-creation-with-directory-traversal-cve-2018-6914/
Рекомендации вендоров и официальные записи. Ссылки на эксплойты/PoC намеренно исключены.