{"api_version":"1","generated_at":"2026-07-23T09:58:13+00:00","cve":"CVE-2017-0904","urls":{"html":"https://cve.report/CVE-2017-0904","api":"https://cve.report/api/cve/CVE-2017-0904.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2017-0904","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2017-0904"},"summary":{"title":"CVE-2017-0904","description":"The private_address_check ruby gem before 0.4.0 is vulnerable to a bypass due to use of Ruby's Resolv.getaddresses method, which is OS-dependent and should not be relied upon for security measures, such as when used to blacklist private network addresses to prevent server-side request forgery.","state":"PUBLISHED","assigner":"hackerone","published_at":"2017-11-13 17:29:00","updated_at":"2025-04-20 01:37:25"},"problem_types":["CWE-242","CWE-755","CWE-242 Use of Inherently Dangerous Function (CWE-242)"],"metrics":[{"version":"3.0","source":"nvd@nist.gov","type":"Primary","score":"8.1","severity":"HIGH","vector":"CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","data":{"version":"3.0","vectorString":"CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.1,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"}},{"version":"2.0","source":"nvd@nist.gov","type":"Primary","score":"6.8","severity":"","vector":"AV:N/AC:M/Au:N/C:P/I:P/A:P","data":{"version":"2.0","vectorString":"AV:N/AC:M/Au:N/C:P/I:P/A:P","baseScore":6.8,"accessVector":"NETWORK","accessComplexity":"MEDIUM","authentication":"NONE","confidentialityImpact":"PARTIAL","integrityImpact":"PARTIAL","availabilityImpact":"PARTIAL"}}],"references":[{"url":"https://hackerone.com/reports/287835","name":"https://hackerone.com/reports/287835","refsource":"af854a3a-2127-422b-91ae-364da2661108","tags":["Permissions Required","Third Party Advisory"],"title":"HackerOne","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://github.com/jtdowney/private_address_check/issues/1","name":"https://github.com/jtdowney/private_address_check/issues/1","refsource":"af854a3a-2127-422b-91ae-364da2661108","tags":["Issue Tracking","Third Party Advisory"],"title":"Resolv::getaddresses bug allows one to bypass your SSRF filter. · Issue #1 · jtdowney/private_address_check · GitHub","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://hackerone.com/reports/287245","name":"https://hackerone.com/reports/287245","refsource":"af854a3a-2127-422b-91ae-364da2661108","tags":["Issue Tracking","Mitigation","Patch","Third Party Advisory"],"title":"HackerOne","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://github.com/jtdowney/private_address_check/commit/58a0d7fe31de339c0117160567a5b33ad82b46af","name":"https://github.com/jtdowney/private_address_check/commit/58a0d7fe31de339c0117160567a5b33ad82b46af","refsource":"af854a3a-2127-422b-91ae-364da2661108","tags":["Third Party Advisory"],"title":"Fix bypass bug with malformed addresses · jtdowney/private_address_check@58a0d7f · GitHub","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://edoverflow.com/2017/ruby-resolv-bug/","name":"https://edoverflow.com/2017/ruby-resolv-bug/","refsource":"af854a3a-2127-422b-91ae-364da2661108","tags":["Issue Tracking","Third Party Advisory"],"title":"EdOverflow - Bypassing Server-Side Request Forgery filters by abusing a bug in Ruby's native resolver.","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://www.cve.org/CVERecord?id=CVE-2017-0904","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2017-0904","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"jtdowney","product":"private_address_check ruby gem","version":"affected Versions before 0.4.0","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[{"cve_year":"2017","cve_id":"904","vulnerable":"1","versionEndIncluding":"","cpe1":"cpe","cpe2":"2.3","cpe3":"a","cpe4":"private_address_check_project","cpe5":"private_address_check","cpe6":"*","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"*","cpe11":"ruby","cpe12":"*","cpe13":"*"}],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2017","cve_id":"904","cve":"CVE-2017-0904","epss":"0.008620000","percentile":"0.752310000","score_date":"2026-05-13","updated_at":"2026-05-14 00:03:18"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"adp":[{"providerMetadata":{"dateUpdated":"2024-08-05T13:25:16.406Z","orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE"},"references":[{"tags":["x_refsource_MISC","x_transferred"],"url":"https://hackerone.com/reports/287245"},{"tags":["x_refsource_MISC","x_transferred"],"url":"https://edoverflow.com/2017/ruby-resolv-bug/"},{"tags":["x_refsource_CONFIRM","x_transferred"],"url":"https://github.com/jtdowney/private_address_check/issues/1"},{"tags":["x_refsource_MISC","x_transferred"],"url":"https://hackerone.com/reports/287835"},{"tags":["x_refsource_CONFIRM","x_transferred"],"url":"https://github.com/jtdowney/private_address_check/commit/58a0d7fe31de339c0117160567a5b33ad82b46af"}],"title":"CVE Program Container"}],"cna":{"affected":[{"product":"private_address_check ruby gem","vendor":"jtdowney","versions":[{"status":"affected","version":"Versions before 0.4.0"}]}],"datePublic":"2017-11-05T00:00:00.000Z","descriptions":[{"lang":"en","value":"The private_address_check ruby gem before 0.4.0 is vulnerable to a bypass due to use of Ruby's Resolv.getaddresses method, which is OS-dependent and should not be relied upon for security measures, such as when used to blacklist private network addresses to prevent server-side request forgery."}],"problemTypes":[{"descriptions":[{"cweId":"CWE-242","description":"Use of Inherently Dangerous Function (CWE-242)","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2017-11-13T16:57:01.000Z","orgId":"36234546-b8fa-4601-9d6f-f4e334aa8ea1","shortName":"hackerone"},"references":[{"tags":["x_refsource_MISC"],"url":"https://hackerone.com/reports/287245"},{"tags":["x_refsource_MISC"],"url":"https://edoverflow.com/2017/ruby-resolv-bug/"},{"tags":["x_refsource_CONFIRM"],"url":"https://github.com/jtdowney/private_address_check/issues/1"},{"tags":["x_refsource_MISC"],"url":"https://hackerone.com/reports/287835"},{"tags":["x_refsource_CONFIRM"],"url":"https://github.com/jtdowney/private_address_check/commit/58a0d7fe31de339c0117160567a5b33ad82b46af"}],"x_legacyV4Record":{"CVE_data_meta":{"ASSIGNER":"support@hackerone.com","DATE_PUBLIC":"2017-11-05T00:00:00","ID":"CVE-2017-0904","STATE":"PUBLIC"},"affects":{"vendor":{"vendor_data":[{"product":{"product_data":[{"product_name":"private_address_check ruby gem","version":{"version_data":[{"version_value":"Versions before 0.4.0"}]}}]},"vendor_name":"jtdowney"}]}},"data_format":"MITRE","data_type":"CVE","data_version":"4.0","description":{"description_data":[{"lang":"eng","value":"The private_address_check ruby gem before 0.4.0 is vulnerable to a bypass due to use of Ruby's Resolv.getaddresses method, which is OS-dependent and should not be relied upon for security measures, such as when used to blacklist private network addresses to prevent server-side request forgery."}]},"problemtype":{"problemtype_data":[{"description":[{"lang":"eng","value":"Use of Inherently Dangerous Function (CWE-242)"}]}]},"references":{"reference_data":[{"name":"https://hackerone.com/reports/287245","refsource":"MISC","url":"https://hackerone.com/reports/287245"},{"name":"https://edoverflow.com/2017/ruby-resolv-bug/","refsource":"MISC","url":"https://edoverflow.com/2017/ruby-resolv-bug/"},{"name":"https://github.com/jtdowney/private_address_check/issues/1","refsource":"CONFIRM","url":"https://github.com/jtdowney/private_address_check/issues/1"},{"name":"https://hackerone.com/reports/287835","refsource":"MISC","url":"https://hackerone.com/reports/287835"},{"name":"https://github.com/jtdowney/private_address_check/commit/58a0d7fe31de339c0117160567a5b33ad82b46af","refsource":"CONFIRM","url":"https://github.com/jtdowney/private_address_check/commit/58a0d7fe31de339c0117160567a5b33ad82b46af"}]}}}},"cveMetadata":{"assignerOrgId":"36234546-b8fa-4601-9d6f-f4e334aa8ea1","assignerShortName":"hackerone","cveId":"CVE-2017-0904","datePublished":"2017-11-13T17:00:00.000Z","dateReserved":"2016-11-30T00:00:00.000Z","dateUpdated":"2024-09-17T01:56:09.414Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.1"},"nvd":{"publishedDate":"2017-11-13 17:29:00","lastModifiedDate":"2025-04-20 01:37:25","problem_types":["CWE-242","CWE-755","CWE-242 Use of Inherently Dangerous Function (CWE-242)"],"metrics":{"cvssMetricV30":[{"source":"nvd@nist.gov","type":"Primary","cvssData":{"version":"3.0","vectorString":"CVSS:3.0/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H","baseScore":8.1,"baseSeverity":"HIGH","attackVector":"NETWORK","attackComplexity":"HIGH","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"HIGH","integrityImpact":"HIGH","availabilityImpact":"HIGH"},"exploitabilityScore":2.2,"impactScore":5.9}],"cvssMetricV2":[{"source":"nvd@nist.gov","type":"Primary","cvssData":{"version":"2.0","vectorString":"AV:N/AC:M/Au:N/C:P/I:P/A:P","baseScore":6.8,"accessVector":"NETWORK","accessComplexity":"MEDIUM","authentication":"NONE","confidentialityImpact":"PARTIAL","integrityImpact":"PARTIAL","availabilityImpact":"PARTIAL"},"baseSeverity":"MEDIUM","exploitabilityScore":8.6,"impactScore":6.4,"acInsufInfo":false,"obtainAllPrivilege":false,"obtainUserPrivilege":false,"obtainOtherPrivilege":false,"userInteractionRequired":false}]},"configurations":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:a:private_address_check_project:private_address_check:*:*:*:*:*:ruby:*:*","versionEndExcluding":"0.4.0","matchCriteriaId":"0201F942-329A-43A4-B384-8A3257C7D6F9"}]}]}]},"legacy_mitre":{"record":{"CveYear":"2017","CveId":"904","Ordinal":"1","Title":"CVE-2017-0904","CVE":"CVE-2017-0904","Year":"2017"},"notes":[{"CveYear":"2017","CveId":"904","Ordinal":"1","NoteData":"The private_address_check ruby gem before 0.4.0 is vulnerable to a bypass due to use of Ruby's Resolv.getaddresses method, which is OS-dependent and should not be relied upon for security measures, such as when used to blacklist private network addresses to prevent server-side request forgery.","Type":"Description","Title":"CVE-2017-0904"},{"CveYear":"2017","CveId":"904","Ordinal":"2","NoteData":"2017-11-13","Type":"Other","Title":"Published"},{"CveYear":"2017","CveId":"904","Ordinal":"3","NoteData":"2017-11-13","Type":"Other","Title":"Modified"}]}}}