Package: release.debian.org
Severity: normal
Tags: bookworm
User: release.debian....@packages.debian.org
Usertags: pu
X-Debbugs-Cc: node-webp...@packages.debian.org
Control: affects -1 + src:node-webpack

[ Reason ]
node-webpack is vulnerable to cross-realm object access
(#1032904, CVE-2023-28154).

[ Impact ]
Medium security issue

[ Tests ]
Test updated, passed

[ Risks ]
Low risk, patch is trivial

[ 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

Regards,
Yadd
diff --git a/debian/changelog b/debian/changelog
index 0053d7ee..a07dd9d4 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+node-webpack (5.75.0+dfsg+~cs17.16.14-1+deb12u1) bookworm; urgency=medium
+
+  * Team upload
+  * Avoid cross-realm objects (Closes: #1032904, CVE-2023-28154)
+
+ -- Yadd <y...@debian.org>  Mon, 29 May 2023 07:53:16 +0400
+
 node-webpack (5.75.0+dfsg+~cs17.16.14-1) unstable; urgency=medium
 
   * Team upload
diff --git a/debian/patches/CVE-2023-28154.patch 
b/debian/patches/CVE-2023-28154.patch
new file mode 100644
index 00000000..2f651167
--- /dev/null
+++ b/debian/patches/CVE-2023-28154.patch
@@ -0,0 +1,80 @@
+Description: avoid cross-realm objects
+Author: Jack Works <jackwo...@protonmail.com>
+Origin: upstream, https://github.com/webpack/webpack/commit/4b4ca3bb
+Bug: https://www.cve.org/CVERecord?id=CVE-2023-28154
+Bug-Debian: https://bugs.debian.org/1032904
+Forwarded: not-needed
+Applied-Upstream: 5.76.1, commit:4b4ca3bb
+Reviewed-By: Yadd <y...@debian.org>
+Last-Update: 2023-05-29
+
+--- a/lib/dependencies/ImportParserPlugin.js
++++ b/lib/dependencies/ImportParserPlugin.js
+@@ -137,7 +137,7 @@
+                               if (importOptions.webpackInclude !== undefined) 
{
+                                       if (
+                                               !importOptions.webpackInclude ||
+-                                              
importOptions.webpackInclude.constructor.name !== "RegExp"
++                                              !(importOptions.webpackInclude 
instanceof RegExp)
+                                       ) {
+                                               parser.state.module.addWarning(
+                                                       new 
UnsupportedFeatureWarning(
+@@ -146,13 +146,13 @@
+                                                       )
+                                               );
+                                       } else {
+-                                              include = new 
RegExp(importOptions.webpackInclude);
++                                              include = 
importOptions.webpackInclude;
+                                       }
+                               }
+                               if (importOptions.webpackExclude !== undefined) 
{
+                                       if (
+                                               !importOptions.webpackExclude ||
+-                                              
importOptions.webpackExclude.constructor.name !== "RegExp"
++                                              !(importOptions.webpackExclude 
instanceof RegExp)
+                                       ) {
+                                               parser.state.module.addWarning(
+                                                       new 
UnsupportedFeatureWarning(
+@@ -161,7 +161,7 @@
+                                                       )
+                                               );
+                                       } else {
+-                                              exclude = new 
RegExp(importOptions.webpackExclude);
++                                              exclude = 
importOptions.webpackExclude;
+                                       }
+                               }
+                               if (importOptions.webpackExports !== undefined) 
{
+--- a/lib/javascript/JavascriptParser.js
++++ b/lib/javascript/JavascriptParser.js
+@@ -3635,17 +3635,27 @@
+                       return EMPTY_COMMENT_OPTIONS;
+               }
+               let options = {};
++              /** @type {unknown[]} */
+               let errors = [];
+               for (const comment of comments) {
+                       const { value } = comment;
+                       if (value && webpackCommentRegExp.test(value)) {
+                               // try compile only if webpack options comment 
is present
+                               try {
+-                                      const val = 
vm.runInNewContext(`(function(){return {${value}};})()`);
+-                                      Object.assign(options, val);
++                                      for (let [key, val] of Object.entries(
++                                              
vm.runInNewContext(`(function(){return {${value}};})()`)
++                                      )) {
++                                              if (typeof val === "object" && 
val !== null) {
++                                                      if 
(val.constructor.name === "RegExp") val = new RegExp(val);
++                                                      else val = 
JSON.parse(JSON.stringify(val));
++                                              }
++                                              options[key] = val;
++                                      }
+                               } catch (e) {
+-                                      e.comment = comment;
+-                                      errors.push(e);
++                                      const newErr = new 
Error(String(e.message));
++                                      newErr.stack = String(e.stack);
++                                      Object.assign(newErr, { comment });
++                                      errors.push(newErr);
+                               }
+                       }
+               }
diff --git a/debian/patches/series b/debian/patches/series
index 16f26f45..dd57ffb6 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -4,3 +4,4 @@ webpack-cli-path.patch
 terser-webpack-plugin.patch
 fix-for-jest-29.patch
 fix-tsconfig.patch
+CVE-2023-28154.patch
-- 
Pkg-javascript-devel mailing list
Pkg-javascript-devel@alioth-lists.debian.net
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/pkg-javascript-devel

Reply via email to