
Base de datos mantenida por la comunidad de avisos de seguridad para gemas y runtimes de Ruby, que proporciona datos estructurados de CVE/GHSA con versiones parcheadas para el seguimiento de vulnerabilidades y la integración con auditorías.
La Base de Datos de Avisos de Ruby es un esfuerzo comunitario para recopilar todos los avisos de seguridad relevantes para las librerías de Ruby. Esperamos que otros creen los datos, como obtener CVEs, GHSA, OSVDB, cvss, o información original de vulnerabilidades. Más detalles AQUÍ.
Puedes verificar tus propios Gemfile.locks contra esta base de datos usando bundler-audit.
¿Conoces una vulnerabilidad que no esté listada en esta base de datos? Abre un issue o envía un PR.
La base de datos es una lista de directorios que coinciden con los nombres de las librerías de Ruby en rubygems.org. Dentro de cada directorio hay uno o más archivos de avisos para la librería de Ruby. Estos archivos de avisos se nombran usando el número de identificador CVE, GHSA o OSVDB (legado) de los avisos.
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/El directorio gems/ contiene subdirectorios que coinciden con los nombres de las librerías de Ruby en rubygems.org. Dentro de cada directorio hay uno o más archivos de avisos para la librería de Ruby. Estos archivos de avisos se nombran usando el ID CVE o GHSA de los avisos.
rubies/El directorio rubies/ contiene subdirectorios para cada implementación de Ruby. Dentro de cada directorio hay uno o más archivos de avisos para la implementación de Ruby. Estos archivos de avisos se nombran usando el ID CVE o GHSA de los avisos.
Cada archivo de aviso contiene la información del aviso en formato YAML. Aquí hay algunos ejemplos de avisos:
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] (obligatorio): Nombre de la gema afectada.library [String] (opcional): Nombre de la librería de Ruby a la que
pertenece la gema afectada.framework [String] (opcional): Nombre del framework al que
pertenece la gema afectada. (p. ej. rails)platform [String] (opcional): Si esta vulnerabilidad es específica de una plataforma,
nombre de la plataforma que afecta esta vulnerabilidad (p. ej. jruby)cve [String] (opcional): ID de Vulnerabilidades y Exposiciones Comunes (CVE).osvdb [Integer] (opcional): ID de la Base de Datos de Vulnerabilidades de Código Abierto (OSVDB).ghsa [String] (opcional): ID del Aviso de Seguridad de GitHub (GHSA).url [String] (obligatorio): La URL del aviso completo.title [String] (obligatorio): El título del aviso o de la vulnerabilidad
individual. Debe ser una oración de una sola línea.
title: a 80.date [Date] (obligatorio): La fecha de divulgación pública del aviso.description [String] (obligatorio): Uno o más párrafos que describen la
vulnerabilidad. Puede contener múltiples párrafos.
description: | si es más de una oración/línea.descriptions: a 80.description:.description:.cvss_v2 [Float] (opcional): La puntuación CVSSv2 para la vulnerabilidad.cvss_v3 [Float] (opcional): La puntuación CVSSv3 para la vulnerabilidad.cvss_v4 [Float] (opcional): La puntuación CVSSv4 para la vulnerabilidad.unaffected_versions [Array<String>] (opcional): Los requisitos de versión para las
versiones no afectadas de la librería de Ruby.
unaffected_versions deben estar entre comillas (p. ej.: ">= 1.2.3").patched_versions [Array<String>] (opcional): Los requisitos de versión
para las versiones parcheadas de la librería de Ruby.
patched_versions deben estar entre comillas (p. ej.: ">= 1.2.3").patched_versions: si no tienes identificadores de versión parcheada.related [Hash<Array<String>>] (opcional): A veces un aviso
referencia muchas urls y otros identificadores. Claves admitidas:
cve, ghsa, osvdb y url
cve, ghsa y osvdb no son URLs.notes [String] (opcional): Notas internas sobre la inclusión de la vulnerabilidad
en esta base de datos.rubiesengine [ruby | mruby | jruby | truffleruby] (obligatorio): Nombre
de la implementación de Ruby afectada.platform [String] (opcional): Si esta vulnerabilidad es específica de una plataforma,
nombre de la plataforma que afecta esta vulnerabilidad (p. ej. jruby)cve [String] (opcional): ID de Vulnerabilidades y Exposiciones Comunes (CVE).osvdb [Integer] (opcional): ID de la Base de Datos de Vulnerabilidades de Código Abierto (OSVDB).ghsa [String] (opcional): ID del Aviso de Seguridad de GitHub (GHSA).url [String] (obligatorio): La URL del aviso completo.title [String] (obligatorio): El título del aviso o de la vulnerabilidad
individual. Debe ser una oración de una sola línea.
title: a 80.date [Date] (obligatorio): La fecha de divulgación pública del aviso.description [String] (obligatorio): Uno o más párrafos que describen la
vulnerabilidad. Puede contener múltiples párrafos.
description: | (no |-) si es más de una oración/línea.descriptions: a 80.description:.description:.cvss_v2 [Float] (opcional): La puntuación CVSSv2 para la vulnerabilidad.cvss_v3 [Float] (opcional): La puntuación CVSSv3 para la vulnerabilidad.cvss_v4 [Float] (opcional): La puntuación CVSSv4 para la vulnerabilidad.unaffected_versions [Array<String>] (opcional): Los requisitos de versión
para las versiones no afectadas de la implementación de Ruby.
unaffected_versions está a 2 espacios del margen izquierdo.* cve, ghsa y osvdb relacionados no son URLs.patched_versions [Array<String>] (opcional): Los requisitos de versión
para las versiones parcheadas de la implementación de Ruby.
patched_versions/unaffected_versions deben estar entre comillas
(p. ej.: ">= 1.2.3").patched_versions está a 2 espacios del margen izquierdo.related [Hash<Array<String>>] (opcional): A veces un aviso
referencia muchas urls y otros identificadores. Claves admitidas:
cve, ghsa, osvdb y url
cve, ghsa y osvdb no son URLs.notes [String] (opcional): Notas internas sobre la inclusión de la vulnerabilidad
en esta base de datos.url: raíz.rspec spec/schema_validation_spec.rb para comprobaciones de lint adicionales.Antes de enviar un pull request, ejecuta las pruebas:
bundle install
bundle exec rspec
Ejecuta el script de ruby "GH_API_TOKEN=GITHUB_TOKEN_VALUE bundle exec rake sync_github_advisories".
Ejecuta "rake" para ejecutar las comprobaciones de lint.
Si hay avisos nuevos o modificados, envía un PR al repositorio.
ADVERTENCIA: Entre los pasos 2 y 5, es posible que necesites editar los archivos manualmente.
Hay un script que creará archivos YAML iniciales para avisos de RubyGem que están en la API de Avisos de Seguridad de GitHub, pero que aún no están en este conjunto de datos. Este script se puede ejecutar periódicamente para asegurar que este repositorio tenga todos los datos presentes en los datos de Avisos de Seguridad de GitHub.
La API de Avisos de Seguridad de GitHub requiere un token para acceder a ella.
Para ejecutar la sincronización de Avisos de Seguridad de GitHub y recuperar todos los avisos, comienza ejecutando la tarea de rake:
GH_API_TOKEN="your GitHub API Token" bundle exec rake sync_github_advisories
O, para recuperar solo avisos de una sola gema:
GH_API_TOKEN="your GitHub API Token" bundle exec rake sync_github_advisories[gem_name]
Los mantenedores de Rails LTS nos han pedido que no rastreemos las versiones de Rails LTS.
Si estás usando Rails LTS y bundler-audit, se recomienda que
agregues la Lista de CVEs abordados por Rails LTS a tu archivo .bundler-audit.yml
bajo ignore:.
Para salvaguardar la seguridad del proyecto y respetar el tiempo voluntario de nuestros mantenedores, se requiere estrictamente un humano en el circuito para todas las contribuciones. Si bien se permiten herramientas de IA como asistentes, los contribuyentes deben revisar personalmente, comprender y asumir toda la responsabilidad de su trabajo. Cualquier contribución que parezca ser salida de máquina sin revisar se cerrará de inmediato, y los infractores reincidentes serán expulsados del proyecto y reportados.
Consulta CONTRIBUTORS.md.
Esta base de datos también incluye datos de la Base de Datos de Vulnerabilidades de Código Abierto desarrollada por la Open Security Foundation (OSF) y sus contribuyentes.