CVE-2015-4020
Estado: ModificadaMedia (4.3)—
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.
CVSS
- Versión: 2.0
- Vector: AV:N/AC:M/Au:N/C:N/I:P/A:N
- Puntuación base: 4.3
Probabilidad de explotación (EPSS)
- Probabilidad de explotación en los próximos 30 días: 3.46%
- Percentil entre todas las CVEs puntuadas: 89
- Fecha de la puntuación: 5/10/2026
EPSS (Exploit Prediction Scoring System, de FIRST) estima la probabilidad de que una vulnerabilidad sea explotada en 30 días. Complementa a CVSS (impacto) y a CISA KEV (explotación confirmada).
Tecnologías afectadas (2)
CWE
- CWE-20
Referencias
- http://blog.rubygems.org/2015/06/08/2.2.5-released.html
- http://blog.rubygems.org/2015/06/08/2.4.8-released.html
- http://www.oracle.com/technetwork/topics/security/bulletinoct2015-2511968.html
- http://www.securityfocus.com/bid/75431
- https://github.com/rubygems/rubygems/commit/5c7bfb5
- https://puppet.com/security/cve/CVE-2015-3900
- https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-009/?fid=6478
- https://www.trustwave.com/Resources/SpiderLabs-Blog/Attacking-Ruby-Gem-Security-with-CVE-2015-3900/
- http://blog.rubygems.org/2015/06/08/2.2.5-released.html
- http://blog.rubygems.org/2015/06/08/2.4.8-released.html
- http://www.oracle.com/technetwork/topics/security/bulletinoct2015-2511968.html
- http://www.securityfocus.com/bid/75431
- https://github.com/rubygems/rubygems/commit/5c7bfb5
- https://puppet.com/security/cve/CVE-2015-3900
- https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-009/?fid=6478
- https://www.trustwave.com/Resources/SpiderLabs-Blog/Attacking-Ruby-Gem-Security-with-CVE-2015-3900/
JSON original (NVD)
Mostrar
{
"id": "CVE-2015-4020",
"cveTags": [],
"metrics": {
"cvssMetricV2": [
{
"type": "Primary",
"source": "nvd@nist.gov",
"cvssData": {
"version": "2.0",
"baseScore": 4.3,
"accessVector": "NETWORK",
"vectorString": "AV:N/AC:M/Au:N/C:N/I:P/A:N",
"authentication": "NONE",
"integrityImpact": "PARTIAL",
"accessComplexity": "MEDIUM",
"availabilityImpact": "NONE",
"confidentialityImpact": "NONE"
},
"acInsufInfo": false,
"impactScore": 2.9,
"baseSeverity": "MEDIUM",
"obtainAllPrivilege": false,
"exploitabilityScore": 8.6,
"obtainUserPrivilege": false,
"obtainOtherPrivilege": false,
"userInteractionRequired": false
}
]
},
"affected": [
{
"source": "cve@mitre.org",
"affectedData": [
{
"vendor": "n/a",
"product": "n/a",
"versions": [
{
"status": "affected",
"version": "n/a"
}
]
}
]
}
],
"published": "2015-08-25T17:59:01.760",
"references": [
{
"url": "http://blog.rubygems.org/2015/06/08/2.2.5-released.html",
"tags": [
"Vendor Advisory"
],
"source": "cve@mitre.org"
},
{
"url": "http://blog.rubygems.org/2015/06/08/2.4.8-released.html",
"tags": [
"Vendor Advisory"
],
"source": "cve@mitre.org"
},
{
"url": "http://www.oracle.com/technetwork/topics/security/bulletinoct2015-2511968.html",
"tags": [
"Third Party Advisory"
],
"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"
},
{
"url": "https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-009/?fid=6478",
"tags": [
"Third Party Advisory"
],
"source": "cve@mitre.org"
},
{
"url": "https://www.trustwave.com/Resources/SpiderLabs-Blog/Attacking-Ruby-Gem-Security-with-CVE-2015-3900/",
"tags": [
"Third Party Advisory"
],
"source": "cve@mitre.org"
},
{
"url": "http://blog.rubygems.org/2015/06/08/2.2.5-released.html",
"tags": [
"Vendor Advisory"
],
"source": "af854a3a-2127-422b-91ae-364da2661108"
},
{
"url": "http://blog.rubygems.org/2015/06/08/2.4.8-released.html",
"tags": [
"Vendor Advisory"
],
"source": "af854a3a-2127-422b-91ae-364da2661108"
},
{
"url": "http://www.oracle.com/technetwork/topics/security/bulletinoct2015-2511968.html",
"tags": [
"Third Party Advisory"
],
"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"
},
{
"url": "https://www.trustwave.com/Resources/Security-Advisories/Advisories/TWSL2015-009/?fid=6478",
"tags": [
"Third Party Advisory"
],
"source": "af854a3a-2127-422b-91ae-364da2661108"
},
{
"url": "https://www.trustwave.com/Resources/SpiderLabs-Blog/Attacking-Ruby-Gem-Security-with-CVE-2015-3900/",
"tags": [
"Third Party Advisory"
],
"source": "af854a3a-2127-422b-91ae-364da2661108"
}
],
"vulnStatus": "Modified",
"weaknesses": [
{
"type": "Primary",
"source": "nvd@nist.gov",
"description": [
{
"lang": "en",
"value": "CWE-20"
}
]
}
],
"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á seguido del nombre del dominio original, también conocido como un \"atacque de secuestro DNS\". NOTA: esta vulnerabilidad existe debido a una solución incompleta para CVE-2015-3900."
}
],
"lastModified": "2026-06-17T00:26:38.357",
"configurations": [
{
"nodes": [
{
"negate": false,
"cpeMatch": [
{
"criteria": "cpe:2.3:o:oracle:solaris:11.3:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "79A602C5-61FE-47BA-9786-F045B6C6DBA8"
}
],
"operator": "OR"
}
]
},
{
"nodes": [
{
"negate": false,
"cpeMatch": [
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "F2D82506-3FB5-41BA-8704-CC324C0B0DB2"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:preview2:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "28EF4773-AA97-4209-951F-942286A92413"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:preview2.1:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "2A3D3005-679A-4761-AC38-CAE1C1CB20AC"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:preview2.2:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "344FF6A4-8041-4652-A0EA-F18BB0FCFB26"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:rc1:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "E6CC620F-8E83-4256-9872-CCCDF5A4ED35"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.0:rc2:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "F22B79F6-5CA1-4E5C-9223-345A39EDD507"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.1:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "260A155C-ED09-44E7-8279-5B94A4AC8CA4"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.2:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "C4E0506F-F2E6-45A2-B637-576C341A71B7"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.3:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "C2EC4513-B653-438A-A1E4-406D055FC160"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.4:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "F5FDF363-24FA-45D2-879B-B1CF9B667AE2"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.5:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "03A81F55-2B6B-467C-9281-AA11ED31220F"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.6:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "A8143D88-890D-4C87-9120-46B33D7D63C8"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.7:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "3E5608F5-AC8A-4368-9323-A2CC09F18AAD"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.8:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "0ACEEB4D-D21D-4D89-881A-9FC33121F69C"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.9:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "BE3D1495-E577-492F-ADE1-B8E8FB7F241A"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.10:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "BCD623FF-E72B-4C63-B9E6-AFCDEFDD760A"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.11:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "EAA1E4C2-29CA-48C2-AFFA-5357B36655FB"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.12:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "EB358B7A-D258-4B86-BBD9-09388109653A"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.13:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "5C608597-03F7-4F01-803F-0E2B1E9E1D30"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.14:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "67C95ABA-1949-4B56-B9E3-44B4AF90274D"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.15:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "DD319AE0-3D8C-40DF-857D-C38EAFA88C68"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.0.16:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "34709EF4-D695-4184-816A-F51FD9DF8AE6"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.2.0:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "672CC7FA-188C-4F34-B10D-7E0C4E7857F4"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.2.1:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "FFCFF897-E65B-4D58-BA4D-B08FEF1201B6"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.2.2:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "1B6D0730-F774-4E29-9871-3FF4BA89981E"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.2.3:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "2D692C10-A24E-48EA-887C-7333C772744C"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.2.4:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "DCDB36D4-FB34-4FAB-8549-AF7D5244CCD4"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.4.0:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "5AFD153C-B0C3-4A91-8B09-839341FA4434"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.4.1:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "04D0BF47-C818-4834-BFA2-23DD25386CCC"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.4.2:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "7F54C49A-12CE-4AC5-A94A-9C5921414AC6"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.4.3:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "9CFF3F39-EF40-4D73-965F-98A51C39C02F"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.4.4:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "35BCB8FC-EE9C-4AA4-A4A0-E20A3E557129"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.4.5:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "A5B90365-2172-43E3-870B-A16F9FB45FD8"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.4.6:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "D4932202-9EEA-4B95-A24A-637678837179"
},
{
"criteria": "cpe:2.3:a:rubygems:rubygems:2.4.7:*:*:*:*:*:*:*",
"vulnerable": true,
"matchCriteriaId": "EE86B4DE-776B-460F-B5C3-02C691243820"
}
],
"operator": "OR"
}
]
}
],
"sourceIdentifier": "cve@mitre.org"
}