{"api_version":"1","generated_at":"2026-07-23T08:47:52+00:00","cve":"CVE-2015-9238","urls":{"html":"https://cve.report/CVE-2015-9238","api":"https://cve.report/api/cve/CVE-2015-9238.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2015-9238","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2015-9238"},"summary":{"title":"CVE-2015-9238","description":"secure-compare 3.0.0 and below do not actually compare two strings properly. compare was actually comparing the first argument with itself, meaning the check passed for any two strings of the same length.","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-134"],"metrics":[],"references":[{"url":"https://github.com/vdemedes/secure-compare/pull/1","name":"https://github.com/vdemedes/secure-compare/pull/1","refsource":"MISC","tags":["Third Party Advisory"],"title":"Fix major oopsie by daguej · Pull Request #1 · vadimdemedes/secure-compare · GitHub","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://nodesecurity.io/advisories/50","name":"https://nodesecurity.io/advisories/50","refsource":"MISC","tags":["Third Party Advisory"],"title":"Overview","mime":"text/html","httpstatus":"200","archivestatus":"200"},{"url":"https://www.cve.org/CVERecord?id=CVE-2015-9238","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2015-9238","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[{"cve_year":"2015","cve_id":"9238","vulnerable":"1","versionEndIncluding":"","cpe1":"cpe","cpe2":"2.3","cpe3":"a","cpe4":"secure-compare_project","cpe5":"secure-compare","cpe6":"*","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"*","cpe11":"node.js","cpe12":"*","cpe13":"*"},{"cve_year":"2015","cve_id":"9238","vulnerable":"1","versionEndIncluding":"1","cpe1":"cpe","cpe2":"2.3","cpe3":"a","cpe4":"secure-compare_project","cpe5":"secure-compare","cpe6":"*","cpe7":"*","cpe8":"*","cpe9":"*","cpe10":"*","cpe11":"node.js","cpe12":"*","cpe13":"*"}],"vendor_comments":[],"enrichments":{"kev":null,"epss":null,"legacy_qids":[{"cve":"CVE-2015-9238","qid":"983392","title":"Nodejs (npm) Security Update for secure-compare (GHSA-h9x2-5rm7-x4gm)"}]},"source_records":{"cve_program":{"CVE_data_meta":{"ASSIGNER":"support@hackerone.com","DATE_PUBLIC":"2018-04-26T00:00:00","ID":"CVE-2015-9238","STATE":"PUBLIC"},"affects":{"vendor":{"vendor_data":[{"product":{"product_data":[{"product_name":"secure-compare node module","version":{"version_data":[{"version_value":"<=3.0.0"}]}}]},"vendor_name":"HackerOne"}]}},"data_format":"MITRE","data_type":"CVE","data_version":"4.0","description":{"description_data":[{"lang":"eng","value":"secure-compare 3.0.0 and below do not actually compare two strings properly. compare was actually comparing the first argument with itself, meaning the check passed for any two strings of the same length."}]},"problemtype":{"problemtype_data":[{"description":[{"lang":"eng","value":"Incorrect Comparison (CWE-697)"}]}]},"references":{"reference_data":[{"name":"https://github.com/vdemedes/secure-compare/pull/1","refsource":"MISC","url":"https://github.com/vdemedes/secure-compare/pull/1"},{"name":"https://nodesecurity.io/advisories/50","refsource":"MISC","url":"https://nodesecurity.io/advisories/50"}]}},"nvd":{"publishedDate":"2018-05-31 20:29:00","lastModifiedDate":"2019-10-09 23:15:00","problem_types":["CWE-134"],"metrics":{"baseMetricV3":{"cvssV3":{"version":"3.0","vectorString":"CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N","attackVector":"NETWORK","attackComplexity":"LOW","privilegesRequired":"NONE","userInteraction":"NONE","scope":"UNCHANGED","confidentialityImpact":"NONE","integrityImpact":"LOW","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:N/I:P/A:N","accessVector":"NETWORK","accessComplexity":"LOW","authentication":"NONE","confidentialityImpact":"NONE","integrityImpact":"PARTIAL","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:secure-compare_project:secure-compare:*:*:*:*:*:node.js:*:*","versionEndExcluding":"3.0.1","cpe_name":[]}]}]}},"legacy_mitre":{"record":{"CveYear":"2015","CveId":"9238","Ordinal":"113920","Title":"CVE-2015-9238","CVE":"CVE-2015-9238","Year":"2015"},"notes":[{"CveYear":"2015","CveId":"9238","Ordinal":"1","NoteData":"secure-compare 3.0.0 and below do not actually compare two strings properly. compare was actually comparing the first argument with itself, meaning the check passed for any two strings of the same length.","Type":"Description","Title":null},{"CveYear":"2015","CveId":"9238","Ordinal":"2","NoteData":"2018-05-31","Type":"Other","Title":"Published"},{"CveYear":"2015","CveId":"9238","Ordinal":"3","NoteData":"2018-05-31","Type":"Other","Title":"Modified"}]}}}