Package: release.debian.org
Severity: normal
User: release.debian....@packages.debian.org
Usertags: unblock
X-Debbugs-Cc: config...@packages.debian.org
Control: affects -1 + src:configobj

Please unblock package configobj

[ Reason ]
Resolves a (minor) security issue. The patch only became available
recently.

It resolves a ReDoS attack (regular expression denial of service)
potentially caused by parsing untrusted configuration files.

[ Impact ]
Ship with an outstanding (very minor) security issue.

[ Tests ]
The patch includes a regression test.

The package test suite passes.

[ Risks ]
Trivial change to a regex, which looks reasonable.

The upstream hasn't reviewed it, yet.

[ 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

unblock configobj/5.0.8-2
diff -Nru configobj-5.0.8/debian/changelog configobj-5.0.8/debian/changelog
--- configobj-5.0.8/debian/changelog    2023-01-26 18:57:36.000000000 -0400
+++ configobj-5.0.8/debian/changelog    2023-06-03 16:23:41.000000000 -0400
@@ -1,3 +1,11 @@
+configobj (5.0.8-2) unstable; urgency=medium
+
+  * Patch: Resolve CVE-2023-26112, a Regular Expression Denial of Service
+    attack. (Closes: #1034152)
+  * Clean correctly.
+
+ -- Stefano Rivera <stefa...@debian.org>  Sat, 03 Jun 2023 16:23:41 -0400
+
 configobj (5.0.8-1) unstable; urgency=medium
 
   * New upstream release!
diff -Nru configobj-5.0.8/debian/clean configobj-5.0.8/debian/clean
--- configobj-5.0.8/debian/clean        1969-12-31 20:00:00.000000000 -0400
+++ configobj-5.0.8/debian/clean        2023-06-03 16:23:41.000000000 -0400
@@ -0,0 +1 @@
+src/configobj.egg-info/*
diff -Nru configobj-5.0.8/debian/patches/CVE-2023-26112 
configobj-5.0.8/debian/patches/CVE-2023-26112
--- configobj-5.0.8/debian/patches/CVE-2023-26112       1969-12-31 
20:00:00.000000000 -0400
+++ configobj-5.0.8/debian/patches/CVE-2023-26112       2023-06-03 
16:23:41.000000000 -0400
@@ -0,0 +1,48 @@
+From: cdcadman <mythi...@gmail.com>
+Date: Wed, 17 May 2023 03:57:08 -0700
+Subject: Address CVE-2023-26112 ReDoS
+
+Origin: https://github.com/DiffSK/configobj/pull/236
+---
+ src/configobj/validate.py         |  2 +-
+ src/tests/test_validate_errors.py | 10 +++++++++-
+ 2 files changed, 10 insertions(+), 2 deletions(-)
+
+diff --git a/src/configobj/validate.py b/src/configobj/validate.py
+index 9267a3f..98d879f 100644
+--- a/src/configobj/validate.py
++++ b/src/configobj/validate.py
+@@ -541,7 +541,7 @@ class Validator(object):
+     """
+ 
+     # this regex does the initial parsing of the checks
+-    _func_re = re.compile(r'(.+?)\((.*)\)', re.DOTALL)
++    _func_re = re.compile(r'([^\(\)]+?)\((.*)\)', re.DOTALL)
+ 
+     # this regex takes apart keyword arguments
+     _key_arg = re.compile(r'^([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*(.*)$',  
re.DOTALL)
+diff --git a/src/tests/test_validate_errors.py 
b/src/tests/test_validate_errors.py
+index 399daa8..f7d6c27 100644
+--- a/src/tests/test_validate_errors.py
++++ b/src/tests/test_validate_errors.py
+@@ -3,7 +3,7 @@ import os
+ import pytest
+ 
+ from configobj import ConfigObj, get_extra_values, ParseError, NestingError
+-from configobj.validate import Validator
++from configobj.validate import Validator, VdtUnknownCheckError
+ 
+ @pytest.fixture()
+ def thisdir():
+@@ -77,3 +77,11 @@ def test_no_parent(tmpdir, specpath):
+     ini.write('[[haha]]')
+     with pytest.raises(NestingError):
+         conf = ConfigObj(str(ini), configspec=specpath, file_error=True)
++
++
++def test_re_dos(val):
++    value = "aaa"
++    i = 165100
++    attack = '\x00'*i + ')' + '('*i
++    with pytest.raises(VdtUnknownCheckError):
++        val.check(attack, value)
diff -Nru configobj-5.0.8/debian/patches/series 
configobj-5.0.8/debian/patches/series
--- configobj-5.0.8/debian/patches/series       1969-12-31 20:00:00.000000000 
-0400
+++ configobj-5.0.8/debian/patches/series       2023-06-03 16:23:41.000000000 
-0400
@@ -0,0 +1 @@
+CVE-2023-26112

Reply via email to