Your message dated Thu, 27 Apr 2023 19:02:34 +0200
with message-id <a0b4da2a-91f8-99cc-238a-77004839c...@debian.org>
and subject line Re: Bug#1034664: unblock: node-xml2js/0.4.23+~cs15.4.0+dfsg-5
has caused the Debian Bug report #1034664,
regarding unblock: node-xml2js/0.4.23+~cs15.4.0+dfsg-5
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 ow...@bugs.debian.org
immediately.)


-- 
1034664: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1034664
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: node-xml...@packages.debian.org
Control: affects -1 + src:node-xml2js

Please unblock package node-xml2js

[ Reason ]
node-xml2js version 0.4.23 allows an external attacker to edit or add new
properties to an object (#1034148, CVE-2023-0842)

[ Impact ]
Medium security issue

[ Tests ]
Test updates, passed

[ Risks ]
Low risk, patch is trivial and tested

[ 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 testing

Cheers,
Yadd

unblock node-xml2js/0.4.23+~cs15.4.0+dfsg-5
diff --git a/debian/changelog b/debian/changelog
index 98492d7..9d9dac7 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,12 @@
+node-xml2js (0.4.23+~cs15.4.0+dfsg-5) unstable; urgency=medium
+
+  * Team upload
+  * Update standards version to 4.6.2, no changes needed.
+  * Update nodejs dependency to nodejs:any
+  * Add patch to prevent prototype pollution (Closes: #1034148, CVE-2023-0842)
+
+ -- Yadd <y...@debian.org>  Fri, 21 Apr 2023 11:11:13 +0400
+
 node-xml2js (0.4.23+~cs15.4.0+dfsg-4) unstable; urgency=medium
 
   * Team upload
diff --git a/debian/control b/debian/control
index dc4d6d0..406a88d 100644
--- a/debian/control
+++ b/debian/control
@@ -10,7 +10,7 @@ Build-Depends:
  , node-sax <!nocheck>
  , dh-sequence-nodejs
  , node-diff
-Standards-Version: 4.6.1
+Standards-Version: 4.6.2
 Vcs-Browser: https://salsa.debian.org/js-team/node-xml2js
 Vcs-Git: https://salsa.debian.org/js-team/node-xml2js.git
 Homepage: https://github.com/Leonidas-from-XIV/node-xml2js
@@ -21,8 +21,8 @@ Architecture: all
 Depends:
  ${misc:Depends}
  , node-sax
- , nodejs
  , node-diff
+ , nodejs:any
 Provides: ${nodejs:Provides}
 Description: simple XML to JavaScript object converter - Node.js module
  xml2js parses XML using node-sax and converts it to a plain JavaScript
diff --git a/debian/patches/CVE-2023-0842.patch 
b/debian/patches/CVE-2023-0842.patch
new file mode 100644
index 0000000..3d80ed9
--- /dev/null
+++ b/debian/patches/CVE-2023-0842.patch
@@ -0,0 +1,103 @@
+Description: use Object.create(null) to create all parsed objects
+ (prevent prototype replacement)
+Author: James Crosby <ja...@coggle.it>
+Origin: upstream, commit:581b19a6
+Bug: https://github.com/advisories/GHSA-776f-qx25-q3cc
+Bug-Debian: https://bugs.debian.org/1034148
+Forwarded: not-needed
+Applied-Upstream: 0.5.0, commit:581b19a6
+Reviewed-By: Yadd <y...@debian.org>
+Last-Update: 2023-04-21
+
+--- a/src/parser.coffee
++++ b/src/parser.coffee
+@@ -103,12 +103,12 @@
+     charkey = @options.charkey
+ 
+     @saxParser.onopentag = (node) =>
+-      obj = {}
++      obj = Object.create(null)
+       obj[charkey] = ""
+       unless @options.ignoreAttrs
+         for own key of node.attributes
+           if attrkey not of obj and not @options.mergeAttrs
+-            obj[attrkey] = {}
++            obj[attrkey] = Object.create(null)
+           newValue = if @options.attrValueProcessors then 
processItem(@options.attrValueProcessors, node.attributes[key], key) else 
node.attributes[key]
+           processedKey = if @options.attrNameProcessors then 
processItem(@options.attrNameProcessors, key) else key
+           if @options.mergeAttrs
+@@ -161,7 +161,7 @@
+       # put children into <childkey> property and unfold chars if necessary
+       if @options.explicitChildren and not @options.mergeAttrs and typeof obj 
is 'object'
+         if not @options.preserveChildrenOrder
+-          node = {}
++          node = Object.create(null)
+           # separate attributes
+           if @options.attrkey of obj
+             node[@options.attrkey] = obj[@options.attrkey]
+@@ -179,7 +179,7 @@
+           # append current node onto parent's <childKey> array
+           s[@options.childkey] = s[@options.childkey] or []
+           # push a clone so that the node in the children array can receive 
the #name property while the original obj can do without it
+-          objClone = {}
++          objClone = Object.create(null)
+           for own key of obj
+             objClone[key] = obj[key]
+           s[@options.childkey].push objClone
+@@ -196,7 +196,7 @@
+         if @options.explicitRoot
+           # avoid circular references
+           old = obj
+-          obj = {}
++          obj = Object.create(null)
+           obj[nodeName] = old
+ 
+         @resultObject = obj
+--- a/test/parser.test.coffee
++++ b/test/parser.test.coffee
+@@ -531,13 +531,13 @@
+ 
+   'test single attrNameProcessors': skeleton(attrNameProcessors: 
[nameToUpperCase], (r)->
+     console.log 'Result object: ' + util.inspect r, false, 10
+-    equ r.sample.attrNameProcessTest[0].$.hasOwnProperty('CAMELCASEATTR'), 
true
+-    equ r.sample.attrNameProcessTest[0].$.hasOwnProperty('LOWERCASEATTR'), 
true)
++    equ {}.hasOwnProperty.call(r.sample.attrNameProcessTest[0].$, 
'CAMELCASEATTR'), true
++    equ {}.hasOwnProperty.call(r.sample.attrNameProcessTest[0].$, 
'LOWERCASEATTR'), true)
+ 
+   'test multiple attrNameProcessors': skeleton(attrNameProcessors: 
[nameToUpperCase, nameCutoff], (r)->
+     console.log 'Result object: ' + util.inspect r, false, 10
+-    equ r.sample.attrNameProcessTest[0].$.hasOwnProperty('CAME'), true
+-    equ r.sample.attrNameProcessTest[0].$.hasOwnProperty('LOWE'), true)
++    equ {}.hasOwnProperty.call(r.sample.attrNameProcessTest[0].$, 'CAME'), 
true
++    equ {}.hasOwnProperty.call(r.sample.attrNameProcessTest[0].$, 'LOWE'), 
true)
+ 
+   'test single attrValueProcessors': skeleton(attrValueProcessors: 
[nameToUpperCase], (r)->
+     console.log 'Result object: ' + util.inspect r, false, 10
+@@ -559,21 +559,21 @@
+ 
+   'test single tagNameProcessors': skeleton(tagNameProcessors: 
[nameToUpperCase], (r)->
+     console.log 'Result object: ' + util.inspect r, false, 10
+-    equ r.hasOwnProperty('SAMPLE'), true
+-    equ r.SAMPLE.hasOwnProperty('TAGNAMEPROCESSTEST'), true)
++    equ {}.hasOwnProperty.call(r, 'SAMPLE'), true
++    equ {}.hasOwnProperty.call(r.SAMPLE, 'TAGNAMEPROCESSTEST'), true)
+ 
+   'test single tagNameProcessors in simple callback': (test) ->
+     fs.readFile fileName, (err, data) ->
+       xml2js.parseString data, tagNameProcessors: [nameToUpperCase], (err, 
r)->
+         console.log 'Result object: ' + util.inspect r, false, 10
+-        equ r.hasOwnProperty('SAMPLE'), true
+-        equ r.SAMPLE.hasOwnProperty('TAGNAMEPROCESSTEST'), true
++        equ {}.hasOwnProperty.call(r, 'SAMPLE'), true
++        equ {}.hasOwnProperty.call(r.SAMPLE, 'TAGNAMEPROCESSTEST'), true
+         test.finish()
+ 
+   'test multiple tagNameProcessors': skeleton(tagNameProcessors: 
[nameToUpperCase, nameCutoff], (r)->
+     console.log 'Result object: ' + util.inspect r, false, 10
+-    equ r.hasOwnProperty('SAMP'), true
+-    equ r.SAMP.hasOwnProperty('TAGN'), true)
++    equ {}.hasOwnProperty.call(r, 'SAMP'), true
++    equ {}.hasOwnProperty.call(r.SAMP, 'TAGN'), true)
+ 
+   'test attrValueProcessors key param': skeleton(attrValueProcessors: 
[replaceValueByName], (r)->
+     console.log 'Result object: ' + util.inspect r, false, 10
diff --git a/debian/patches/series b/debian/patches/series
index 2840ff2..c9bf5bb 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,2 +1,3 @@
 fix-for-coffeescript-2.patch
 drop-test-not-compatible-with-coffe-2.patch
+CVE-2023-0842.patch

--- End Message ---
--- Begin Message ---
Hi,

On 21-04-2023 09:16, Yadd wrote:
unblock node-xml2js/0.4.23+~cs15.4.0+dfsg-5

unblocked -8.

Paul

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


--- End Message ---

Reply via email to