[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#1011331: marked as done (bullseye-pu: package node-raw-body/2.4.1-2+deb11u1)



Your message dated Sat, 09 Jul 2022 11:47:43 +0100
with message-id <2280fe8c78e64b02a6c1d04c6dde5a32e342ba81.camel@adam-barratt.org.uk>
and subject line Closing requests for updates included in 11.4
has caused the Debian Bug report #1011331,
regarding bullseye-pu: package node-raw-body/2.4.1-2+deb11u1
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
1011331: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1011331
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: bullseye
User: release.debian.org@packages.debian.org
Usertags: pu
X-Debbugs-Cc: Michael.Lescisin@uhn.ca, security@debian.org

[ Reason ]
node-raw-body embeds a patch that creates a Denial-of-Service
vulnerability into node-express.

[ Impact ]
Security issue, a simple request can crash any express application

[ Tests ]
I added a test that proves that bug is fixed: it fails with
node-raw-body 2.4.1-2 and succeeds with 2.4.1-2+deb11u1

[ Risks ]
No risk, Debian package is now exactly what upstream wrote.

[ Checklist ]
  [X] *all* changes are documented in the d/changelog
  [X] I reviewed all changes and I approve them
  [X] attach debdiff against the package in (old)stable
  [X] the issue is verified as fixed in unstable

[ Changes ]
Drop patch which replaced node-iconv-lite by node-iconv.

[ Other info ]
Thanks to Michael Lescisin for the report and the fix.
diff --git a/debian/changelog b/debian/changelog
index 1aee9e3..1934161 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+node-raw-body (2.4.1-2+deb11u1) bullseye; urgency=medium
+
+  * Team upload
+  * Drop use-iconv-not-lite.patch, fixes node-express potential DoS
+
+ -- Yadd <yadd@debian.org>  Fri, 20 May 2022 09:40:23 +0200
+
 node-raw-body (2.4.1-2) unstable; urgency=medium
 
   * Team upload
diff --git a/debian/control b/debian/control
index 1f6af0c..ee4fab3 100644
--- a/debian/control
+++ b/debian/control
@@ -9,7 +9,7 @@ Build-Depends:
  , mocha (>= 4) <!nocheck>
  , node-bytes (>= 3.0.0) <!nocheck>
  , node-http-errors <!nocheck>
- , node-iconv <!nocheck>
+ , node-iconv-lite <!nocheck>
  , node-unpipe <!nocheck>
  , node-readable-stream <!nocheck>
  , node-safe-buffer <!nocheck>
@@ -27,7 +27,7 @@ Depends:
  , nodejs
  , node-bytes (>= 3.0.0)
  , node-http-errors
- , node-iconv
+ , node-iconv-lite
  , node-unpipe
 Provides: nodetypes-raw-body (= ${source:Version})
 Description: Request body length validation supporting streams - Node.js
diff --git a/debian/patches/series b/debian/patches/series
deleted file mode 100644
index fd1b019..0000000
--- a/debian/patches/series
+++ /dev/null
@@ -1 +0,0 @@
-use-iconv-not-lite.patch
diff --git a/debian/patches/use-iconv-not-lite.patch b/debian/patches/use-iconv-not-lite.patch
deleted file mode 100644
index 121fe49..0000000
--- a/debian/patches/use-iconv-not-lite.patch
+++ /dev/null
@@ -1,64 +0,0 @@
-Description: use iconv, not iconv-lite
-Forwarded: not-needed, unless raw-body could be made compatible with both iconv and iconv-lite
-Author: Jérémy Lal <kapouer@melix.org>
-Reviewed-By: Xavier Guimard <yadd@debian.org>
-Last-Update: 2020-01-29
-
---- a/index.js
-+++ b/index.js
-@@ -14,7 +14,7 @@
- 
- var bytes = require('bytes')
- var createError = require('http-errors')
--var iconv = require('iconv-lite')
-+var iconv = require('iconv').Iconv
- var unpipe = require('unpipe')
- 
- /**
-@@ -29,7 +29,7 @@
-  * @private
-  */
- 
--var ICONV_ENCODING_MESSAGE_REGEXP = /^Encoding not recognized: /
-+var ICONV_ENCODING_MESSAGE_REGEXP = /^(?:Encoding not recognized: |Conversion from \S+ to utf\-8 is not supported)/i
- 
- /**
-  * Get the decoder for a given encoding.
-@@ -42,7 +42,7 @@
-   if (!encoding) return null
- 
-   try {
--    return iconv.getDecoder(encoding)
-+    return new iconv(encoding,'utf-8')
-   } catch (e) {
-     // error getting decoder
-     if (!ICONV_ENCODING_MESSAGE_REGEXP.test(e.message)) throw e
-@@ -249,7 +249,7 @@
-         type: 'entity.too.large'
-       }))
-     } else if (decoder) {
--      buffer += decoder.write(chunk)
-+      buffer += decoder.convert(chunk)
-     } else {
-       buffer.push(chunk)
-     }
-@@ -268,7 +268,7 @@
-       }))
-     } else {
-       var string = decoder
--        ? buffer + (decoder.end() || '')
-+        ? buffer
-         : Buffer.concat(buffer)
-       done(null, string)
-     }
---- a/package.json
-+++ b/package.json
-@@ -12,7 +12,7 @@
-   "dependencies": {
-     "bytes": "3.1.0",
-     "http-errors": "1.7.3",
--    "iconv-lite": "0.4.24",
-+    "iconv": ">= 2",
-     "unpipe": "1.0.0"
-   },
-   "devDependencies": {
diff --git a/debian/tests/control b/debian/tests/control
new file mode 100644
index 0000000..6c6f7c2
--- /dev/null
+++ b/debian/tests/control
@@ -0,0 +1,3 @@
+Tests: express-dos
+Depends: @, node-express, curl
+Restrictions: allow-stderr
diff --git a/debian/tests/express-dos b/debian/tests/express-dos
new file mode 100755
index 0000000..e27e51f
--- /dev/null
+++ b/debian/tests/express-dos
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+set -e
+
+node debian/tests/express-dos.js &
+PID=$!
+sleep 1
+HEADERS=`mktemp`
+
+curl --data-raw `perl -le 'print "[".chr(128)."]"'` -D $HEADERS -H 'Content-Type: application/json' http://localhost:56056/test
+curl -d name=val http://localhost:56056/test
+
+grep 400 $HEADERS
+
+CODE=0
+wait $PID || CODE=$?
+
+echo "express app exited with code $CODE"
+exit $CODE
diff --git a/debian/tests/express-dos.js b/debian/tests/express-dos.js
new file mode 100644
index 0000000..b6a3f19
--- /dev/null
+++ b/debian/tests/express-dos.js
@@ -0,0 +1,13 @@
+const express = require('express');
+const app = express();
+var server;
+
+app.use(express.json());
+
+app.post('/test', (req, res) => {
+  console.log(req.body);
+  res.send("OK\n");
+  server.close();
+});
+
+server = app.listen(56056);

--- End Message ---
--- Begin Message ---
Package: release.debian.org
Version: 11.4

(re-sending with fixed bug numbers)

Hi,

The updates discussed in these bugs were included in today's bullseye
point release.

Regards,

Adam

--- End Message ---

Reply to: