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

Bug#969369: marked as done (buster-pu: package node-elliptic/6.4.1_dfsg-1+deb10u1)



Your message dated Sat, 26 Sep 2020 11:36:30 +0100
with message-id <d50ba4de424290cd2840a09ef19950156fcf51ab.camel@adam-barratt.org.uk>
and subject line Closing bugs for fixes included in 10.6 point release
has caused the Debian Bug report #969369,
regarding buster-pu: package node-elliptic/6.4.1_dfsg-1+deb10u1
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.)


-- 
969369: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=969369
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: buster
User: release.debian.org@packages.debian.org
Usertags: pu

[ Reason ]
node-elliptic allows ECDSA signature maleability via variations in
encoding, leading '\0' bytes, or integer overflows (CVE-2020-13822).

[ Impact ]
This could conceivably have a security-relevant impact if an application
relied on a single canonical signature.

[ Tests ]
No new test, however upstream tests are OK during build and autopkgtest

[ Risks ]
Upstream change is little (just some tests on inputs) and test coverage
seems good

[ 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 ]
Just some checks on inputs
diff --git a/debian/changelog b/debian/changelog
index 74b516f..3bc7a59 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,9 @@
+node-elliptic (6.4.1~dfsg-1+deb10u1) buster; urgency=medium
+
+  * Prevent malleability and overflows (Closes: CVE-2020-13822)
+
+ -- Xavier Guimard <yadd@debian.org>  Tue, 01 Sep 2020 13:24:44 +0200
+
 node-elliptic (6.4.1~dfsg-1) unstable; urgency=medium
 
   [ upstream ]
diff --git a/debian/patches/CVE-2020-13822.patch b/debian/patches/CVE-2020-13822.patch
new file mode 100644
index 0000000..179ecb9
--- /dev/null
+++ b/debian/patches/CVE-2020-13822.patch
@@ -0,0 +1,89 @@
+Description: signature: prevent malleability and overflows
+ CVE-2020-13822
+Author: Fedor Indutny <fedor@indutny.com>
+Origin: upstream, https://github.com/indutny/elliptic/commit/856fe4d9
+Bug: https://github.com/indutny/elliptic/issues/226
+Forwarded: not-needed
+Reviewed-By: Xavier Guimard <yadd@debian.org>
+Last-Update: 2020-09-01
+
+--- a/lib/elliptic/ec/signature.js
++++ b/lib/elliptic/ec/signature.js
+@@ -33,11 +33,24 @@
+     return initial;
+   }
+   var octetLen = initial & 0xf;
++
++  // Indefinite length or overflow
++  if (octetLen === 0 || octetLen > 4) {
++    return false;
++  }
++
+   var val = 0;
+   for (var i = 0, off = p.place; i < octetLen; i++, off++) {
+     val <<= 8;
+     val |= buf[off];
++    val >>>= 0;
+   }
++
++  // Leading zeroes
++  if (val <= 0x7f) {
++    return false;
++  }
++
+   p.place = off;
+   return val;
+ }
+@@ -61,6 +74,9 @@
+     return false;
+   }
+   var len = getLength(data, p);
++  if (len === false) {
++    return false;
++  }
+   if ((len + p.place) !== data.length) {
+     return false;
+   }
+@@ -68,21 +84,37 @@
+     return false;
+   }
+   var rlen = getLength(data, p);
++  if (rlen === false) {
++    return false;
++  }
+   var r = data.slice(p.place, rlen + p.place);
+   p.place += rlen;
+   if (data[p.place++] !== 0x02) {
+     return false;
+   }
+   var slen = getLength(data, p);
++  if (slen === false) {
++    return false;
++  }
+   if (data.length !== slen + p.place) {
+     return false;
+   }
+   var s = data.slice(p.place, slen + p.place);
+-  if (r[0] === 0 && (r[1] & 0x80)) {
+-    r = r.slice(1);
+-  }
+-  if (s[0] === 0 && (s[1] & 0x80)) {
+-    s = s.slice(1);
++  if (r[0] === 0) {
++    if (r[1] & 0x80) {
++      r = r.slice(1);
++    } else {
++      // Leading zeroes
++      return false;
++    }
++  }
++  if (s[0] === 0) {
++    if (s[1] & 0x80) {
++      s = s.slice(1);
++    } else {
++      // Leading zeroes
++      return false;
++    }
+   }
+ 
+   this.r = new BN(r);
diff --git a/debian/patches/series b/debian/patches/series
index 0ee9429..d86ab76 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1 +1,2 @@
 use-assert.patch
+CVE-2020-13822.patch

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

Hi,

Each of these bugs relates to an update that was included in today's
stable point release.

Regards,

Adam

--- End Message ---

Reply to: