
База данных уязвимостей для Ruby-гемов и сред выполнения, поддерживаемая сообществом, предоставляющая структурированные данные CVE/GHSA с исправленными версиями для отслеживания уязвимостей и интеграции с аудитом.
База данных Ruby Advisory — это совместная работа сообщества по сбору всех уведомлений о безопасности, относящихся к библиотекам Ruby. Мы рассчитываем, что другие будут создавать данные, такие как получение CVE, GHSA, OSVDB, cvss или исходной информации об уязвимостях. Более подробная информация ЗДЕСЬ.
Вы можете проверить свои собственные Gemfile.lock на соответствие этой базе данных с помощью bundler-audit.
Знаете об уязвимости, которой нет в этой базе данных? Откройте issue или отправьте PR.
База данных представляет собой список каталогов, соответствующих названиям библиотек Ruby на rubygems.org. Внутри каждого каталога находятся один или несколько файлов уведомлений для библиотеки Ruby. Эти файлы уведомлений названы с использованием идентификационного номера уведомлений CVE, GHSA или OSVDB (устаревший).
gems/:
actionpack/:
CVE-2014-0130.yml CVE-2014-7818.yml CVE-2014-7829.yml CVE-2015-7576.yml
CVE-2015-7581.yml CVE-2016-0751.yml CVE-2016-0752.yml
rubies/:
jruby/:
...
mruby/:
...
ruby/:
...
gems/Каталог gems/ содержит подкаталоги, соответствующие названиям библиотек
Ruby на rubygems.org. Внутри каждого каталога находятся один или несколько файлов уведомлений
для библиотеки Ruby. Эти файлы уведомлений названы с использованием
идентификатора CVE или GHSA уведомлений.
rubies/Каталог rubies/ содержит подкаталоги для каждой реализации Ruby.
Внутри каждого каталога находятся один или несколько файлов уведомлений для
реализации Ruby. Эти файлы уведомлений названы с использованием идентификатора CVE
или GHSA уведомлений.
Каждый файл уведомления содержит информацию об уведомлении в формате YAML. Вот несколько примеров уведомлений:
gems/actionpack/CVE-2023-22795.yml---
gem: actionpack
cve: 2023-22795
ghsa: 8xww-x3g3-6jcv
url: https://github.com/rails/rails/releases/tag/v7.0.4.1
title: ReDoS based DoS vulnerability in Action Dispatch
date: 2023-01-18
description: |
There is a possible regular expression based DoS vulnerability in Action
Dispatch related to the If-None-Match header. This vulnerability has been
assigned the CVE identifier CVE-2023-22795.
Versions Affected: All
Not affected: None
Fixed Versions: 6.1.7.1, 7.0.4.1
# Impact
A specially crafted HTTP If-None-Match header can cause the regular
expression engine to enter a state of catastrophic backtracking, when on a
version of Ruby below 3.2.0. This can cause the process to use large amounts
of CPU and memory, leading to a possible DoS vulnerability All users running
an affected release should either upgrade or use one of the workarounds
immediately.
# Workarounds
We recommend that all users upgrade to one of the FIXED versions. In the
meantime, users can mitigate this vulnerability by using a load balancer or
other device to filter out malicious If-None-Match headers before they reach
the application.
Users on Ruby 3.2.0 or greater are not affected by this vulnerability.
patched_versions:
- "~> 5.2.8"
- "~> 6.1.7, >= 6.1.7.1"
- ">= 7.0.4.1"
rubies/ruby/CVE-2022-28739.yml---
engine: ruby
cve: 2022-28739
url: https://www.ruby-lang.org/en/news/2022/04/12/buffer-overrun-in-string-to-float-cve-2022-28739/
title: Buffer overrun in String-to-Float conversion
date: 2022-04-12
description: |
A buffer-overrun vulnerability is discovered in a conversion algorithm from a
String to a Float. This vulnerability has been assigned the CVE identifier
CVE-2022-28739. We strongly recommend upgrading Ruby.
Due to a bug in an internal function that converts a String to a Float, some
conversion methods like Kernel#Float and String#to_f could cause buffer
over-read. A typical consequence is a process termination due to segmentation
fault, but in a limited circumstances, it may be exploitable for illegal
memory read.
Please update Ruby to 2.6.10, 2.7.6, 3.0.4, or 3.1.2.
patched_versions:
- ~> 2.6.10
- ~> 2.7.6
- ~> 3.0.4
- '>= 3.1.2'
gemsgem [String] (обязательно): Название затронутого gem.library [String] (необязательно): Название библиотеки Ruby, к которой
принадлежит затронутый gem.framework [String] (необязательно): Название фреймворка, к которому
принадлежит затронутый gem. (например, rails)platform [String] (необязательно): Если эта уязвимость специфична для платформы,
название платформы, которую затрагивает эта уязвимость (например, jruby)cve [String] (необязательно): Идентификатор Common Vulnerabilities and Exposures (CVE).osvdb [Integer] (необязательно): Идентификатор Open Sourced Vulnerability Database (OSVDB).ghsa [String] (необязательно): Идентификатор GitHub Security Advisory (GHSA).url [String] (обязательно): URL-адрес полного уведомления.title [String] (обязательно): Заголовок уведомления или отдельной
уязвимости. Должен быть предложением в одну строку.
title: на 80 символов.date [Date] (обязательно): Дата публичного раскрытия уведомления.description [String] (обязательно): Один или несколько абзацев, описывающих
уязвимость. Может содержать несколько абзацев.
description: |, если это более одного предложения/строки.descriptions: на 80 символов.description:.description:.cvss_v2 [Float] (необязательно): Оценка CVSSv2 для уязвимости.cvss_v3 [Float] (необязательно): Оценка CVSSv3 для уязвимости.cvss_v4 [Float] (необязательно): Оценка CVSSv4 для уязвимости.unaffected_versions [Array<String>] (необязательно): Требования к версиям для
незатронутых версий библиотеки Ruby.
unaffected_versions должны быть в кавычках (например: ">= 1.2.3").patched_versions [Array<String>] (необязательно): Требования к версиям
для исправленных версий библиотеки Ruby.
patched_versions должны быть в кавычках (например: ">= 1.2.3").patched_versions:, если у вас нет идентификаторов исправленных версий.related [Hash<Array<String>>] (необязательно): Иногда уведомление
ссылается на множество URL-адресов и других идентификаторов. Поддерживаемые ключи:
cve, ghsa, osvdb и url
cve, ghsa и osvdb не являются URL-адресами.notes [String] (необязательно): Внутренние примечания относительно включения
уязвимости в эту базу данных.rubiesengine [ruby | mruby | jruby | truffleruby] (обязательно): Название
затронутой реализации Ruby.platform [String] (необязательно): Если эта уязвимость специфична для платформы,
название платформы, которую затрагивает эта уязвимость (например, jruby)cve [String] (необязательно): Идентификатор Common Vulnerabilities and Exposures (CVE).osvdb [Integer] (необязательно): Идентификатор Open Sourced Vulnerability Database (OSVDB).ghsa [String] (необязательно): Идентификатор GitHub Security Advisory (GHSA).url [String] (обязательно): URL-адрес полного уведомления.title [String] (обязательно): Заголовок уведомления или отдельной
уязвимости. Должен быть предложением в одну строку.
title: на 80 символов.date [Date] (обязательно): Дата публичного раскрытия уведомления.description [String] (обязательно): Один или несколько абзацев, описывающих
уязвимость. Может содержать несколько абзацев.
description: | (не |-), если это более одного предложения/строки.descriptions: на 80 символов.description:.description:.cvss_v2 [Float] (необязательно): Оценка CVSSv2 для уязвимости.cvss_v3 [Float] (необязательно): Оценка CVSSv3 для уязвимости.cvss_v4 [Float] (необязательно): Оценка CVSSv4 для уязвимости.unaffected_versions [Array<String>] (необязательно): Требования к версиям
для незатронутых версий реализации Ruby.
unaffected_versions имеет отступ 2 пробела от левого поля.* cve, ghsa и osvdb связанные поля не являются URL-адресами.patched_versions [Array<String>] (необязательно): Требования к версиям
для исправленных версий реализации Ruby.
patched_versions/unaffected_versions должны быть в кавычках
(например: ">= 1.2.3").patched_versions имеет отступ 2 пробела от левого поля.related [Hash<Array<String>>] (необязательно): Иногда уведомление
ссылается на множество URL-адресов и других идентификаторов. Поддерживаемые ключи:
cve, ghsa, osvdb и url
cve, ghsa и osvdb не являются URL-адресами.notes [String] (необязательно): Внутренние примечания относительно включения
уязвимости в эту базу данных.url:.rspec spec/schema_validation_spec.rb для дополнительных проверок lint.Перед отправкой pull request запустите тесты:
bundle install
bundle exec rspec
Запустите ruby-скрипт "GH_API_TOKEN=GITHUB_TOKEN_VALUE bundle exec rake sync_github_advisories".
Запустите "rake" для выполнения проверок lint.
Если есть новые или измененные уведомления, отправьте PR в репозиторий.
ВНИМАНИЕ: Между шагами 2 и 5 вам может потребоваться вручную отредактировать файлы.
Существует скрипт, который создаст первоначальные YAML-файлы для уведомлений RubyGem, которые есть в [API GitHub Security Advisory], но еще не включены в этот набор данных. Этот скрипт можно периодически запускать, чтобы гарантировать, что этот репозиторий содержит все данные, которые присутствуют в данных GitHub Security Advisory.
API GitHub Security Advisory требует токен для доступа к нему.
Чтобы запустить синхронизацию GitHub Security Advisory для получения всех уведомлений, начните с выполнения задачи rake:
GH_API_TOKEN="your GitHub API Token" bundle exec rake sync_github_advisories
Или, чтобы получить уведомления только для одного gem:
GH_API_TOKEN="your GitHub API Token" bundle exec rake sync_github_advisories[gem_name]
Мейнтейнеры Rails LTS попросили нас не отслеживать версии Rails LTS.
Если вы используете Rails LTS и bundler-audit, рекомендуется добавить
Список CVE, устраненных в Rails LTS в ваш файл .bundler-audit.yml
в раздел ignore:.
Для защиты безопасности проекта и уважения добровольного времени наших мейнтейнеров, участие человека в процессе строго обязательно для всех представлений. Хотя инструменты ИИ разрешены в качестве помощников, участники должны лично проверять, понимать и нести полную ответственность за свою работу. Любые вклады, которые выглядят как непроверенный машинный вывод, будут немедленно закрыты, а повторные нарушители будут заблокированы в проекте и о них будет сообщено.
Пожалуйста, смотрите CONTRIBUTORS.md.
Эта база данных также включает данные из Open Sourced Vulnerability Database, разработанной Open Security Foundation (OSF) и ее участниками.