{"api_version":"1","generated_at":"2026-04-22T19:58:18+00:00","cve":"CVE-2015-9236","urls":{"html":"https://cve.report/CVE-2015-9236","api":"https://cve.report/api/cve/CVE-2015-9236.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2015-9236","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2015-9236"},"summary":{"title":"CVE-2015-9236","description":"Hapi versions less than 11.0.0 implement CORS incorrectly and allowed for configurations that at best returned inconsistent headers and at worst allowed cross-origin activities that were expected to be forbidden. If the connection has CORS enabled but one route has it off, and the route is not GET, the OPTIONS prefetch request will return the default CORS headers and then the actual request will go through and return no CORS headers. This defeats the purpose of turning CORS on the route.","state":"PUBLIC","assigner":"support@hackerone.com","published_at":"2018-05-31 20:29:00","updated_at":"2019-10-09 23:15:00"},"problem_types":["CWE-200"],"metrics":[],"references":[{"url":"https://github.com/hapijs/hapi/issues/2850","name":"https://github.com/hapijs/hapi/issues/2850","refsource":"MISC","tags":["Release Notes","Third Party Advisory"],"title":"11.0.0 Release Notes · Issue #2850 · hapijs/hapi · GitHub","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://github.com/hapijs/hapi/issues/2840","name":"https://github.com/hapijs/hapi/issues/2840","refsource":"MISC","tags":["Patch","Third Party Advisory"],"title":"CORS route-specific override can conflict with connection defaults · Issue #2840 · hapijs/hapi · GitHub","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://nodesecurity.io/advisories/45","name":"https://nodesecurity.io/advisories/45","refsource":"MISC","tags":["Third Party Advisory"],"title":"Node Security Project |","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://www.cve.org/CVERecord?id=CVE-2015-9236","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2015-9236","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[{"cve_year":"2015","cve_id":"9236","vulnerable":"1","versionEndIncluding":"","cpe1":"cpe","cpe2":"2.3","cpe3":"a","cpe4":"hapijs","cpe5":"hapi","cpe6":"*","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"*","cpe11":"node.js","cpe12":"*","cpe13":"*"},{"cve_year":"2015","cve_id":"9236","vulnerable":"1","versionEndIncluding":"1","cpe1":"cpe","cpe2":"2.3","cpe3":"a","cpe4":"hapijs","cpe5":"hapi","cpe6":"*","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"*","cpe11":"node.js","cpe12":"*","cpe13":"*"}],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[{"cve":"CVE-2015-9236","qid":"984056","title":"Nodejs (npm) Security Update for hapi (GHSA-vwrf-r5r4-7775)"}]},"source_records":{"cve_program":{"CVE_data_meta":{"ASSIGNER":"support@hackerone.com","DATE_PUBLIC":"2018-04-26T00:00:00","ID":"CVE-2015-9236","STATE":"PUBLIC"},"affects":{"vendor":{"vendor_data":[{"product":{"product_data":[{"product_name":"hapi node module","version":{"version_data":[{"version_value":"<11.0.0"}]}}]},"vendor_name":"HackerOne"}]}},"data_format":"MITRE","data_type":"CVE","data_version":"4.0","description":{"description_data":[{"lang":"eng","value":"Hapi versions less than 11.0.0 implement CORS incorrectly and allowed for configurations that at best returned inconsistent headers and at worst allowed cross-origin activities that were expected to be forbidden. If the connection has CORS enabled but one route has it off, and the route is not GET, the OPTIONS prefetch request will return the default CORS headers and then the actual request will go through and return no CORS headers. This defeats the purpose of turning CORS on the route."}]},"problemtype":{"problemtype_data":[{"description":[{"lang":"eng","value":"Improper Access Control - Generic (CWE-284)"}]}]},"references":{"reference_data":[{"name":"https://github.com/hapijs/hapi/issues/2850","refsource":"MISC","url":"https://github.com/hapijs/hapi/issues/2850"},{"name":"https://github.com/hapijs/hapi/issues/2840","refsource":"MISC","url":"https://github.com/hapijs/hapi/issues/2840"},{"name":"https://nodesecurity.io/advisories/45","refsource":"MISC","url":"https://nodesecurity.io/advisories/45"}]}},"nvd":{"publishedDate":"2018-05-31 20:29:00","lastModifiedDate":"2019-10-09 23:15:00","problem_types":["CWE-200"],"metrics":{"baseMetricV3":{"cvssV3":{"version":"3.0","vectorString":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"LOW","integrityImpact":"NONE","availabilityImpact":"NONE","baseScore":5.3,"baseSeverity":"MEDIUM"},"exploitabilityScore":3.9,"impactScore":1.4},"baseMetricV2":{"cvssV2":{"version":"2.0","vectorString":"AV:N/AC:L/Au:N/C:P/I:N/A:N","accessVector":"NETWORK","accessComplexity":"LOW","authentication":"NONE","confidentialityImpact":"PARTIAL","integrityImpact":"NONE","availabilityImpact":"NONE","baseScore":5},"severity":"MEDIUM","exploitabilityScore":10,"impactScore":2.9,"acInsufInfo":true,"obtainAllPrivilege":false,"obtainUserPrivilege":false,"obtainOtherPrivilege":false,"userInteractionRequired":false}},"configurations":{"CVE_data_version":"4.0","nodes":[{"operator":"OR","children":[],"cpe_match":[{"vulnerable":true,"cpe23Uri":"cpe:2.3:a:hapijs:hapi:*:*:*:*:*:node.js:*:*","versionEndExcluding":"11.0.0","cpe_name":[]}]}]}},"legacy_mitre":{"record":{"CveYear":"2015","CveId":"9236","Ordinal":"113918","Title":"CVE-2015-9236","CVE":"CVE-2015-9236","Year":"2015"},"notes":[{"CveYear":"2015","CveId":"9236","Ordinal":"1","NoteData":"Hapi versions less than 11.0.0 implement CORS incorrectly and allowed for configurations that at best returned inconsistent headers and at worst allowed cross-origin activities that were expected to be forbidden. If the connection has CORS enabled but one route has it off, and the route is not GET, the OPTIONS prefetch request will return the default CORS headers and then the actual request will go through and return no CORS headers. This defeats the purpose of turning CORS on the route.","Type":"Description","Title":null},{"CveYear":"2015","CveId":"9236","Ordinal":"2","NoteData":"2018-05-31","Type":"Other","Title":"Published"},{"CveYear":"2015","CveId":"9236","Ordinal":"3","NoteData":"2018-05-31","Type":"Other","Title":"Modified"}]}}}