CVE-2015-4020 (GCVE-0-2015-4020)

Vulnerability from cvelistv5 – Published: 2015-08-25 17:00 – Updated: 2024-08-06 06:04
VLAI
Summary
RubyGems 2.0.x before 2.0.17, 2.2.x before 2.2.5, and 2.4.x before 2.4.8 does not validate the hostname when fetching gems or making API requests, which allows remote attackers to redirect requests to arbitrary domains via a crafted DNS SRV record with a domain that is suffixed with the original domain name, aka a "DNS hijack attack." NOTE: this vulnerability exists because to an incomplete fix for CVE-2015-3900.
Severity
No CVSS data available.
CWE
  • n/a
Date Public
2015-05-18 00:00
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-06T06:04:02.680Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_refsource_CONFIRM",
              "x_transferred"
            ],
            "url": "http://blog.rubygems.org/2015/06/08/2.2.5-released.html"
          },
          {
            "tags": [
              "x_refsource_MISC",
              "x_transferred"
            ],
            "url": "https://www.trustwave.com/Resources/SpiderLabs-Blog/Attacking-Ruby-Gem-Security-with-CVE-2015-3900/"
          },
          {
            "name": "75431",
            "tags": [
              "vdb-entry",
              "x_refsource_BID",
              "x_transferred"
            ],
            "url": "http://www.securityfocus.com/bid/75431"
          },
          {
            "tags": [
              "x_refsource_MISC",
              "x_transferred"
            ],
            "url": "https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-009/?fid=6478"
          },
          {
            "tags": [
              "x_refsource_CONFIRM",
              "x_transferred"
            ],
            "url": "http://blog.rubygems.org/2015/06/08/2.4.8-released.html"
          },
          {
            "tags": [
              "x_refsource_CONFIRM",
              "x_transferred"
            ],
            "url": "https://github.com/rubygems/rubygems/commit/5c7bfb5"
          },
          {
            "tags": [
              "x_refsource_CONFIRM",
              "x_transferred"
            ],
            "url": "https://puppet.com/security/cve/CVE-2015-3900"
          },
          {
            "tags": [
              "x_refsource_CONFIRM",
              "x_transferred"
            ],
            "url": "http://www.oracle.com/technetwork/topics/security/bulletinoct2015-2511968.html"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "product": "n/a",
          "vendor": "n/a",
          "versions": [
            {
              "status": "affected",
              "version": "n/a"
            }
          ]
        }
      ],
      "datePublic": "2015-05-18T00:00:00.000Z",
      "descriptions": [
        {
          "lang": "en",
          "value": "RubyGems 2.0.x before 2.0.17, 2.2.x before 2.2.5, and 2.4.x before 2.4.8 does not validate the hostname when fetching gems or making API requests, which allows remote attackers to redirect requests to arbitrary domains via a crafted DNS SRV record with a domain that is suffixed with the original domain name, aka a \"DNS hijack attack.\" NOTE: this vulnerability exists because to an incomplete fix for CVE-2015-3900."
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "description": "n/a",
              "lang": "en",
              "type": "text"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2017-12-08T10:57:01.000Z",
        "orgId": "8254265b-2729-46b6-b9e3-3dfca2d5bfca",
        "shortName": "mitre"
      },
      "references": [
        {
          "tags": [
            "x_refsource_CONFIRM"
          ],
          "url": "http://blog.rubygems.org/2015/06/08/2.2.5-released.html"
        },
        {
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://www.trustwave.com/Resources/SpiderLabs-Blog/Attacking-Ruby-Gem-Security-with-CVE-2015-3900/"
        },
        {
          "name": "75431",
          "tags": [
            "vdb-entry",
            "x_refsource_BID"
          ],
          "url": "http://www.securityfocus.com/bid/75431"
        },
        {
          "tags": [
            "x_refsource_MISC"
          ],
          "url": "https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-009/?fid=6478"
        },
        {
          "tags": [
            "x_refsource_CONFIRM"
          ],
          "url": "http://blog.rubygems.org/2015/06/08/2.4.8-released.html"
        },
        {
          "tags": [
            "x_refsource_CONFIRM"
          ],
          "url": "https://github.com/rubygems/rubygems/commit/5c7bfb5"
        },
        {
          "tags": [
            "x_refsource_CONFIRM"
          ],
          "url": "https://puppet.com/security/cve/CVE-2015-3900"
        },
        {
          "tags": [
            "x_refsource_CONFIRM"
          ],
          "url": "http://www.oracle.com/technetwork/topics/security/bulletinoct2015-2511968.html"
        }
      ],
      "x_legacyV4Record": {
        "CVE_data_meta": {
          "ASSIGNER": "cve@mitre.org",
          "ID": "CVE-2015-4020",
          "STATE": "PUBLIC"
        },
        "affects": {
          "vendor": {
            "vendor_data": [
              {
                "product": {
                  "product_data": [
                    {
                      "product_name": "n/a",
                      "version": {
                        "version_data": [
                          {
                            "version_value": "n/a"
                          }
                        ]
                      }
                    }
                  ]
                },
                "vendor_name": "n/a"
              }
            ]
          }
        },
        "data_format": "MITRE",
        "data_type": "CVE",
        "data_version": "4.0",
        "description": {
          "description_data": [
            {
              "lang": "eng",
              "value": "RubyGems 2.0.x before 2.0.17, 2.2.x before 2.2.5, and 2.4.x before 2.4.8 does not validate the hostname when fetching gems or making API requests, which allows remote attackers to redirect requests to arbitrary domains via a crafted DNS SRV record with a domain that is suffixed with the original domain name, aka a \"DNS hijack attack.\" NOTE: this vulnerability exists because to an incomplete fix for CVE-2015-3900."
            }
          ]
        },
        "problemtype": {
          "problemtype_data": [
            {
              "description": [
                {
                  "lang": "eng",
                  "value": "n/a"
                }
              ]
            }
          ]
        },
        "references": {
          "reference_data": [
            {
              "name": "http://blog.rubygems.org/2015/06/08/2.2.5-released.html",
              "refsource": "CONFIRM",
              "url": "http://blog.rubygems.org/2015/06/08/2.2.5-released.html"
            },
            {
              "name": "https://www.trustwave.com/Resources/SpiderLabs-Blog/Attacking-Ruby-Gem-Security-with-CVE-2015-3900/",
              "refsource": "MISC",
              "url": "https://www.trustwave.com/Resources/SpiderLabs-Blog/Attacking-Ruby-Gem-Security-with-CVE-2015-3900/"
            },
            {
              "name": "75431",
              "refsource": "BID",
              "url": "http://www.securityfocus.com/bid/75431"
            },
            {
              "name": "https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-009/?fid=6478",
              "refsource": "MISC",
              "url": "https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-009/?fid=6478"
            },
            {
              "name": "http://blog.rubygems.org/2015/06/08/2.4.8-released.html",
              "refsource": "CONFIRM",
              "url": "http://blog.rubygems.org/2015/06/08/2.4.8-released.html"
            },
            {
              "name": "https://github.com/rubygems/rubygems/commit/5c7bfb5",
              "refsource": "CONFIRM",
              "url": "https://github.com/rubygems/rubygems/commit/5c7bfb5"
            },
            {
              "name": "https://puppet.com/security/cve/CVE-2015-3900",
              "refsource": "CONFIRM",
              "url": "https://puppet.com/security/cve/CVE-2015-3900"
            },
            {
              "name": "http://www.oracle.com/technetwork/topics/security/bulletinoct2015-2511968.html",
              "refsource": "CONFIRM",
              "url": "http://www.oracle.com/technetwork/topics/security/bulletinoct2015-2511968.html"
            }
          ]
        }
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "8254265b-2729-46b6-b9e3-3dfca2d5bfca",
    "assignerShortName": "mitre",
    "cveId": "CVE-2015-4020",
    "datePublished": "2015-08-25T17:00:00.000Z",
    "dateReserved": "2015-05-18T00:00:00.000Z",
    "dateUpdated": "2024-08-06T06:04:02.680Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.1",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2015-4020",
      "date": "2026-09-27",
      "epss": "0.03461",
      "percentile": "0.88611"
    },
    "fkie_nvd": {
      "configurations": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:oracle:solaris:11.3:*:*:*:*:*:*:*",
                  "matchCriteriaId": "79A602C5-61FE-47BA-9786-F045B6C6DBA8",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        },
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:*:*:*:*:*:*:*",
                  "matchCriteriaId": "F2D82506-3FB5-41BA-8704-CC324C0B0DB2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:preview2:*:*:*:*:*:*",
                  "matchCriteriaId": "28EF4773-AA97-4209-951F-942286A92413",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:preview2.1:*:*:*:*:*:*",
                  "matchCriteriaId": "2A3D3005-679A-4761-AC38-CAE1C1CB20AC",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:preview2.2:*:*:*:*:*:*",
                  "matchCriteriaId": "344FF6A4-8041-4652-A0EA-F18BB0FCFB26",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:rc1:*:*:*:*:*:*",
                  "matchCriteriaId": "E6CC620F-8E83-4256-9872-CCCDF5A4ED35",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:rc2:*:*:*:*:*:*",
                  "matchCriteriaId": "F22B79F6-5CA1-4E5C-9223-345A39EDD507",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.1:*:*:*:*:*:*:*",
                  "matchCriteriaId": "260A155C-ED09-44E7-8279-5B94A4AC8CA4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.2:*:*:*:*:*:*:*",
                  "matchCriteriaId": "C4E0506F-F2E6-45A2-B637-576C341A71B7",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.3:*:*:*:*:*:*:*",
                  "matchCriteriaId": "C2EC4513-B653-438A-A1E4-406D055FC160",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.4:*:*:*:*:*:*:*",
                  "matchCriteriaId": "F5FDF363-24FA-45D2-879B-B1CF9B667AE2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.5:*:*:*:*:*:*:*",
                  "matchCriteriaId": "03A81F55-2B6B-467C-9281-AA11ED31220F",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.6:*:*:*:*:*:*:*",
                  "matchCriteriaId": "A8143D88-890D-4C87-9120-46B33D7D63C8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.7:*:*:*:*:*:*:*",
                  "matchCriteriaId": "3E5608F5-AC8A-4368-9323-A2CC09F18AAD",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.8:*:*:*:*:*:*:*",
                  "matchCriteriaId": "0ACEEB4D-D21D-4D89-881A-9FC33121F69C",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.9:*:*:*:*:*:*:*",
                  "matchCriteriaId": "BE3D1495-E577-492F-ADE1-B8E8FB7F241A",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.10:*:*:*:*:*:*:*",
                  "matchCriteriaId": "BCD623FF-E72B-4C63-B9E6-AFCDEFDD760A",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.11:*:*:*:*:*:*:*",
                  "matchCriteriaId": "EAA1E4C2-29CA-48C2-AFFA-5357B36655FB",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.12:*:*:*:*:*:*:*",
                  "matchCriteriaId": "EB358B7A-D258-4B86-BBD9-09388109653A",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.13:*:*:*:*:*:*:*",
                  "matchCriteriaId": "5C608597-03F7-4F01-803F-0E2B1E9E1D30",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.14:*:*:*:*:*:*:*",
                  "matchCriteriaId": "67C95ABA-1949-4B56-B9E3-44B4AF90274D",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.15:*:*:*:*:*:*:*",
                  "matchCriteriaId": "DD319AE0-3D8C-40DF-857D-C38EAFA88C68",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.16:*:*:*:*:*:*:*",
                  "matchCriteriaId": "34709EF4-D695-4184-816A-F51FD9DF8AE6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.2.0:*:*:*:*:*:*:*",
                  "matchCriteriaId": "672CC7FA-188C-4F34-B10D-7E0C4E7857F4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.2.1:*:*:*:*:*:*:*",
                  "matchCriteriaId": "FFCFF897-E65B-4D58-BA4D-B08FEF1201B6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.2.2:*:*:*:*:*:*:*",
                  "matchCriteriaId": "1B6D0730-F774-4E29-9871-3FF4BA89981E",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.2.3:*:*:*:*:*:*:*",
                  "matchCriteriaId": "2D692C10-A24E-48EA-887C-7333C772744C",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.2.4:*:*:*:*:*:*:*",
                  "matchCriteriaId": "DCDB36D4-FB34-4FAB-8549-AF7D5244CCD4",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.0:*:*:*:*:*:*:*",
                  "matchCriteriaId": "5AFD153C-B0C3-4A91-8B09-839341FA4434",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.1:*:*:*:*:*:*:*",
                  "matchCriteriaId": "04D0BF47-C818-4834-BFA2-23DD25386CCC",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.2:*:*:*:*:*:*:*",
                  "matchCriteriaId": "7F54C49A-12CE-4AC5-A94A-9C5921414AC6",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.3:*:*:*:*:*:*:*",
                  "matchCriteriaId": "9CFF3F39-EF40-4D73-965F-98A51C39C02F",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.4:*:*:*:*:*:*:*",
                  "matchCriteriaId": "35BCB8FC-EE9C-4AA4-A4A0-E20A3E557129",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.5:*:*:*:*:*:*:*",
                  "matchCriteriaId": "A5B90365-2172-43E3-870B-A16F9FB45FD8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.6:*:*:*:*:*:*:*",
                  "matchCriteriaId": "D4932202-9EEA-4B95-A24A-637678837179",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.7:*:*:*:*:*:*:*",
                  "matchCriteriaId": "EE86B4DE-776B-460F-B5C3-02C691243820",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "RubyGems 2.0.x before 2.0.17, 2.2.x before 2.2.5, and 2.4.x before 2.4.8 does not validate the hostname when fetching gems or making API requests, which allows remote attackers to redirect requests to arbitrary domains via a crafted DNS SRV record with a domain that is suffixed with the original domain name, aka a \"DNS hijack attack.\" NOTE: this vulnerability exists because to an incomplete fix for CVE-2015-3900."
        },
        {
          "lang": "es",
          "value": "RubyGems 2.0.x en versiones anteriores a 2.0.17, 2.2.x en versiones anteriores a 2.2.5 y 2.4.x en versiones anteriores a 2.4.8 no valida el nombre del host cuando recupera gemas o hace peticiones API, lo que permite a atacantes remotos redirigir peticiones a dominios arbitrarios mediante un registro DNS SRV con un dominio que est\u00e1 seguido del nombre del dominio original, tambi\u00e9n conocido como un \"atacque de secuestro DNS\". NOTA: esta vulnerabilidad existe debido a una soluci\u00f3n incompleta para CVE-2015-3900."
        }
      ],
      "id": "CVE-2015-4020",
      "lastModified": "2024-11-21T02:30:16.840",
      "metrics": {
        "cvssMetricV2": [
          {
            "acInsufInfo": false,
            "baseSeverity": "MEDIUM",
            "cvssData": {
              "accessComplexity": "MEDIUM",
              "accessVector": "NETWORK",
              "authentication": "NONE",
              "availabilityImpact": "NONE",
              "baseScore": 4.3,
              "confidentialityImpact": "NONE",
              "integrityImpact": "PARTIAL",
              "vectorString": "AV:N/AC:M/Au:N/C:N/I:P/A:N",
              "version": "2.0"
            },
            "exploitabilityScore": 8.6,
            "impactScore": 2.9,
            "obtainAllPrivilege": false,
            "obtainOtherPrivilege": false,
            "obtainUserPrivilege": false,
            "source": "nvd@nist.gov",
            "type": "Primary",
            "userInteractionRequired": false
          }
        ]
      },
      "published": "2015-08-25T17:59:01.760",
      "references": [
        {
          "source": "cve@mitre.org",
          "tags": [
            "Vendor Advisory"
          ],
          "url": "http://blog.rubygems.org/2015/06/08/2.2.5-released.html"
        },
        {
          "source": "cve@mitre.org",
          "tags": [
            "Vendor Advisory"
          ],
          "url": "http://blog.rubygems.org/2015/06/08/2.4.8-released.html"
        },
        {
          "source": "cve@mitre.org",
          "tags": [
            "Third Party Advisory"
          ],
          "url": "http://www.oracle.com/technetwork/topics/security/bulletinoct2015-2511968.html"
        },
        {
          "source": "cve@mitre.org",
          "url": "http://www.securityfocus.com/bid/75431"
        },
        {
          "source": "cve@mitre.org",
          "url": "https://github.com/rubygems/rubygems/commit/5c7bfb5"
        },
        {
          "source": "cve@mitre.org",
          "url": "https://puppet.com/security/cve/CVE-2015-3900"
        },
        {
          "source": "cve@mitre.org",
          "tags": [
            "Third Party Advisory"
          ],
          "url": "https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-009/?fid=6478"
        },
        {
          "source": "cve@mitre.org",
          "tags": [
            "Third Party Advisory"
          ],
          "url": "https://www.trustwave.com/Resources/SpiderLabs-Blog/Attacking-Ruby-Gem-Security-with-CVE-2015-3900/"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "tags": [
            "Vendor Advisory"
          ],
          "url": "http://blog.rubygems.org/2015/06/08/2.2.5-released.html"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "tags": [
            "Vendor Advisory"
          ],
          "url": "http://blog.rubygems.org/2015/06/08/2.4.8-released.html"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "tags": [
            "Third Party Advisory"
          ],
          "url": "http://www.oracle.com/technetwork/topics/security/bulletinoct2015-2511968.html"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "url": "http://www.securityfocus.com/bid/75431"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "url": "https://github.com/rubygems/rubygems/commit/5c7bfb5"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "url": "https://puppet.com/security/cve/CVE-2015-3900"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "tags": [
            "Third Party Advisory"
          ],
          "url": "https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-009/?fid=6478"
        },
        {
          "source": "af854a3a-2127-422b-91ae-364da2661108",
          "tags": [
            "Third Party Advisory"
          ],
          "url": "https://www.trustwave.com/Resources/SpiderLabs-Blog/Attacking-Ruby-Gem-Security-with-CVE-2015-3900/"
        }
      ],
      "sourceIdentifier": "cve@mitre.org",
      "vulnStatus": "Modified",
      "weaknesses": [
        {
          "description": [
            {
              "lang": "en",
              "value": "CWE-20"
            }
          ],
          "source": "nvd@nist.gov",
          "type": "Primary"
        }
      ]
    },
    "nvd": {
      "cve": {
        "configurations": [
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:o:oracle:solaris:11.3:*:*:*:*:*:*:*",
                    "matchCriteriaId": "79A602C5-61FE-47BA-9786-F045B6C6DBA8",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          },
          {
            "nodes": [
              {
                "cpeMatch": [
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:*:*:*:*:*:*:*",
                    "matchCriteriaId": "F2D82506-3FB5-41BA-8704-CC324C0B0DB2",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:preview2:*:*:*:*:*:*",
                    "matchCriteriaId": "28EF4773-AA97-4209-951F-942286A92413",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:preview2.1:*:*:*:*:*:*",
                    "matchCriteriaId": "2A3D3005-679A-4761-AC38-CAE1C1CB20AC",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:preview2.2:*:*:*:*:*:*",
                    "matchCriteriaId": "344FF6A4-8041-4652-A0EA-F18BB0FCFB26",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:rc1:*:*:*:*:*:*",
                    "matchCriteriaId": "E6CC620F-8E83-4256-9872-CCCDF5A4ED35",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:rc2:*:*:*:*:*:*",
                    "matchCriteriaId": "F22B79F6-5CA1-4E5C-9223-345A39EDD507",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.1:*:*:*:*:*:*:*",
                    "matchCriteriaId": "260A155C-ED09-44E7-8279-5B94A4AC8CA4",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.2:*:*:*:*:*:*:*",
                    "matchCriteriaId": "C4E0506F-F2E6-45A2-B637-576C341A71B7",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.3:*:*:*:*:*:*:*",
                    "matchCriteriaId": "C2EC4513-B653-438A-A1E4-406D055FC160",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.4:*:*:*:*:*:*:*",
                    "matchCriteriaId": "F5FDF363-24FA-45D2-879B-B1CF9B667AE2",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.5:*:*:*:*:*:*:*",
                    "matchCriteriaId": "03A81F55-2B6B-467C-9281-AA11ED31220F",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.6:*:*:*:*:*:*:*",
                    "matchCriteriaId": "A8143D88-890D-4C87-9120-46B33D7D63C8",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.7:*:*:*:*:*:*:*",
                    "matchCriteriaId": "3E5608F5-AC8A-4368-9323-A2CC09F18AAD",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.8:*:*:*:*:*:*:*",
                    "matchCriteriaId": "0ACEEB4D-D21D-4D89-881A-9FC33121F69C",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.9:*:*:*:*:*:*:*",
                    "matchCriteriaId": "BE3D1495-E577-492F-ADE1-B8E8FB7F241A",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.10:*:*:*:*:*:*:*",
                    "matchCriteriaId": "BCD623FF-E72B-4C63-B9E6-AFCDEFDD760A",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.11:*:*:*:*:*:*:*",
                    "matchCriteriaId": "EAA1E4C2-29CA-48C2-AFFA-5357B36655FB",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.12:*:*:*:*:*:*:*",
                    "matchCriteriaId": "EB358B7A-D258-4B86-BBD9-09388109653A",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.13:*:*:*:*:*:*:*",
                    "matchCriteriaId": "5C608597-03F7-4F01-803F-0E2B1E9E1D30",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.14:*:*:*:*:*:*:*",
                    "matchCriteriaId": "67C95ABA-1949-4B56-B9E3-44B4AF90274D",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.15:*:*:*:*:*:*:*",
                    "matchCriteriaId": "DD319AE0-3D8C-40DF-857D-C38EAFA88C68",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.0.16:*:*:*:*:*:*:*",
                    "matchCriteriaId": "34709EF4-D695-4184-816A-F51FD9DF8AE6",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.2.0:*:*:*:*:*:*:*",
                    "matchCriteriaId": "672CC7FA-188C-4F34-B10D-7E0C4E7857F4",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.2.1:*:*:*:*:*:*:*",
                    "matchCriteriaId": "FFCFF897-E65B-4D58-BA4D-B08FEF1201B6",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.2.2:*:*:*:*:*:*:*",
                    "matchCriteriaId": "1B6D0730-F774-4E29-9871-3FF4BA89981E",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.2.3:*:*:*:*:*:*:*",
                    "matchCriteriaId": "2D692C10-A24E-48EA-887C-7333C772744C",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.2.4:*:*:*:*:*:*:*",
                    "matchCriteriaId": "DCDB36D4-FB34-4FAB-8549-AF7D5244CCD4",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.0:*:*:*:*:*:*:*",
                    "matchCriteriaId": "5AFD153C-B0C3-4A91-8B09-839341FA4434",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.1:*:*:*:*:*:*:*",
                    "matchCriteriaId": "04D0BF47-C818-4834-BFA2-23DD25386CCC",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.2:*:*:*:*:*:*:*",
                    "matchCriteriaId": "7F54C49A-12CE-4AC5-A94A-9C5921414AC6",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.3:*:*:*:*:*:*:*",
                    "matchCriteriaId": "9CFF3F39-EF40-4D73-965F-98A51C39C02F",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.4:*:*:*:*:*:*:*",
                    "matchCriteriaId": "35BCB8FC-EE9C-4AA4-A4A0-E20A3E557129",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.5:*:*:*:*:*:*:*",
                    "matchCriteriaId": "A5B90365-2172-43E3-870B-A16F9FB45FD8",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.6:*:*:*:*:*:*:*",
                    "matchCriteriaId": "D4932202-9EEA-4B95-A24A-637678837179",
                    "vulnerable": true
                  },
                  {
                    "criteria": "cpe:2.3:a:rubygems:rubygems:2.4.7:*:*:*:*:*:*:*",
                    "matchCriteriaId": "EE86B4DE-776B-460F-B5C3-02C691243820",
                    "vulnerable": true
                  }
                ],
                "negate": false,
                "operator": "OR"
              }
            ]
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "RubyGems 2.0.x before 2.0.17, 2.2.x before 2.2.5, and 2.4.x before 2.4.8 does not validate the hostname when fetching gems or making API requests, which allows remote attackers to redirect requests to arbitrary domains via a crafted DNS SRV record with a domain that is suffixed with the original domain name, aka a \"DNS hijack attack.\" NOTE: this vulnerability exists because to an incomplete fix for CVE-2015-3900."
          },
          {
            "lang": "es",
            "value": "RubyGems 2.0.x en versiones anteriores a 2.0.17, 2.2.x en versiones anteriores a 2.2.5 y 2.4.x en versiones anteriores a 2.4.8 no valida el nombre del host cuando recupera gemas o hace peticiones API, lo que permite a atacantes remotos redirigir peticiones a dominios arbitrarios mediante un registro DNS SRV con un dominio que est\u00e1 seguido del nombre del dominio original, tambi\u00e9n conocido como un \"atacque de secuestro DNS\". NOTA: esta vulnerabilidad existe debido a una soluci\u00f3n incompleta para CVE-2015-3900."
          }
        ],
        "id": "CVE-2015-4020",
        "lastModified": "2026-05-06T22:30:45.220",
        "metrics": {
          "cvssMetricV2": [
            {
              "acInsufInfo": false,
              "baseSeverity": "MEDIUM",
              "cvssData": {
                "accessComplexity": "MEDIUM",
                "accessVector": "NETWORK",
                "authentication": "NONE",
                "availabilityImpact": "NONE",
                "baseScore": 4.3,
                "confidentialityImpact": "NONE",
                "integrityImpact": "PARTIAL",
                "vectorString": "AV:N/AC:M/Au:N/C:N/I:P/A:N",
                "version": "2.0"
              },
              "exploitabilityScore": 8.6,
              "impactScore": 2.9,
              "obtainAllPrivilege": false,
              "obtainOtherPrivilege": false,
              "obtainUserPrivilege": false,
              "source": "nvd@nist.gov",
              "type": "Primary",
              "userInteractionRequired": false
            }
          ]
        },
        "published": "2015-08-25T17:59:01.760",
        "references": [
          {
            "source": "cve@mitre.org",
            "tags": [
              "Vendor Advisory"
            ],
            "url": "http://blog.rubygems.org/2015/06/08/2.2.5-released.html"
          },
          {
            "source": "cve@mitre.org",
            "tags": [
              "Vendor Advisory"
            ],
            "url": "http://blog.rubygems.org/2015/06/08/2.4.8-released.html"
          },
          {
            "source": "cve@mitre.org",
            "tags": [
              "Third Party Advisory"
            ],
            "url": "http://www.oracle.com/technetwork/topics/security/bulletinoct2015-2511968.html"
          },
          {
            "source": "cve@mitre.org",
            "url": "http://www.securityfocus.com/bid/75431"
          },
          {
            "source": "cve@mitre.org",
            "url": "https://github.com/rubygems/rubygems/commit/5c7bfb5"
          },
          {
            "source": "cve@mitre.org",
            "url": "https://puppet.com/security/cve/CVE-2015-3900"
          },
          {
            "source": "cve@mitre.org",
            "tags": [
              "Third Party Advisory"
            ],
            "url": "https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-009/?fid=6478"
          },
          {
            "source": "cve@mitre.org",
            "tags": [
              "Third Party Advisory"
            ],
            "url": "https://www.trustwave.com/Resources/SpiderLabs-Blog/Attacking-Ruby-Gem-Security-with-CVE-2015-3900/"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "tags": [
              "Vendor Advisory"
            ],
            "url": "http://blog.rubygems.org/2015/06/08/2.2.5-released.html"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "tags": [
              "Vendor Advisory"
            ],
            "url": "http://blog.rubygems.org/2015/06/08/2.4.8-released.html"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "tags": [
              "Third Party Advisory"
            ],
            "url": "http://www.oracle.com/technetwork/topics/security/bulletinoct2015-2511968.html"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "url": "http://www.securityfocus.com/bid/75431"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "url": "https://github.com/rubygems/rubygems/commit/5c7bfb5"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "url": "https://puppet.com/security/cve/CVE-2015-3900"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "tags": [
              "Third Party Advisory"
            ],
            "url": "https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-009/?fid=6478"
          },
          {
            "source": "af854a3a-2127-422b-91ae-364da2661108",
            "tags": [
              "Third Party Advisory"
            ],
            "url": "https://www.trustwave.com/Resources/SpiderLabs-Blog/Attacking-Ruby-Gem-Security-with-CVE-2015-3900/"
          }
        ],
        "sourceIdentifier": "cve@mitre.org",
        "vulnStatus": "Modified",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-20"
              }
            ],
            "source": "nvd@nist.gov",
            "type": "Primary"
          }
        ]
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Important",
      "current_release_date": "2026-06-27T08:54:19+00:00",
      "cve": "CVE-2015-4020",
      "id": "CVE-2015-4020",
      "initial_release_date": "2015-05-18T00:00:00+00:00",
      "product_status:known_not_affected": "86",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "rubygems: incomplete fix for CVE-2015-3900",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2015/cve-2015-4020.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-09-01T02:31:07Z",
      "cve": "CVE-2015-4020",
      "id": "CVE-2015-4020",
      "initial_release_date": "2023-02-15T05:18:28Z",
      "product_status:known_not_affected": "373",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2015-4020",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2015-4020.json",
      "version": "12"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…