<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 29 Sep 2026 10:37:54 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-49477 — Soup Sieve: Regular Expression Denial of Service (ReDoS) in soupsieve Selector Parser</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-49477</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; facelessuser soupsieve&lt;/p&gt;
&lt;p&gt;Soup Sieve is a CSS selector library designed to be used with Beautiful Soup 4. Prior to 2.8.4, the CSS selector parser in soupsieve contains a regular expression vulnerable to catastrophic backtracking when processing an attribute selector with an unterminated quoted value in soupsieve/css_parser.py, allowing an attacker who can supply untrusted CSS selector strings to soupsieve.compile() or Beautiful Soup .select() / .select_one() to cause CPU exhaustion and denial of service. This issue is fixed in version 2.8.4.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; facelessuser soupsieve&lt;/p&gt;
&lt;p&gt;Soup Sieve is a CSS selector library designed to be used with Beautiful Soup 4. Prior to 2.8.4, the CSS selector parser in soupsieve contains a regular expression vulnerable to catastrophic backtracking when processing an attribute selector with an unterminated quoted value in soupsieve/css_parser.py, allowing an attacker who can supply untrusted CSS selector strings to soupsieve.compile() or Beautiful Soup .select() / .select_one() to cause CPU exhaustion and denial of service. This issue is fixed in version 2.8.4.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-49477</guid>
    </item>
    <item>
      <title>GHSA-836r-79rf-4m37 — Soup Sieve: Regular Expression Denial of Service (ReDoS) via Selector Parser</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-836r-79rf-4m37</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: soupsieve&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The CSS selector parser in soupsieve (the CSS selector engine for Beautiful Soup 4) contains a regular expression vulnerable to catastrophic backtracking. When processing an attribute selector with an unterminated quoted value, the `VALUE` regex pattern in `css_parser.py` enters exponential backtracking. A payload of only **300 bytes** causes the regex engine to hang for **over 3 seconds**, enabling a trivial Regular Expression Denial of Service (ReDoS) attack.&lt;/p&gt;
&lt;p&gt;To be completely transparent, AI tools helped surface this issue. However, this was independently reproduced and carefully validated.&lt;/p&gt;
&lt;p&gt;Any application that passes untrusted CSS selector strings to `soupsieve.compile()` or Beautiful Soup&amp;#39;s `.select()` / `.select_one()` is affected.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;**Affected code:** `soupsieve/css_parser.py`, line ~121 - `RE_VALUES` / `VALUE` regex pattern&lt;/p&gt;
&lt;p&gt;The soupsieve CSS parser uses a compiled regular expression to tokenise attribute selector values. This pattern matches both quoted strings (`&amp;#34;value&amp;#34;` or `&amp;#39;value&amp;#39;`) and unquoted identifiers. The regex contains alternation branches for:&lt;/p&gt;
&lt;p&gt;1. Double-quoted strings: `&amp;#34;[^&amp;#34;\\]*(?:\\.[^&amp;#34;\\]*)*&amp;#34;`
2. Single-quoted strings: `&amp;#39;[^&amp;#39;\\]*(?:\\.[^&amp;#39;\\]*)*&amp;#39;`
3. Unquoted identifiers&lt;/p&gt;
&lt;p&gt;When an attribute selector contains an **unterminated quoted value** - e.g., `[a=&amp;#34;xxxx...` (opening `&amp;#34;` but no closing `&amp;#34;`) -” the regex engine attempts to match the quoted-string branch. After that branch fails (no closing quote), the engine backtracks and at…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: soupsieve&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The CSS selector parser in soupsieve (the CSS selector engine for Beautiful Soup 4) contains a regular expression vulnerable to catastrophic backtracking. When processing an attribute selector with an unterminated quoted value, the `VALUE` regex pattern in `css_parser.py` enters exponential backtracking. A payload of only **300 bytes** causes the regex engine to hang for **over 3 seconds**, enabling a trivial Regular Expression Denial of Service (ReDoS) attack.&lt;/p&gt;
&lt;p&gt;To be completely transparent, AI tools helped surface this issue. However, this was independently reproduced and carefully validated.&lt;/p&gt;
&lt;p&gt;Any application that passes untrusted CSS selector strings to `soupsieve.compile()` or Beautiful Soup&amp;#39;s `.select()` / `.select_one()` is affected.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;**Affected code:** `soupsieve/css_parser.py`, line ~121 - `RE_VALUES` / `VALUE` regex pattern&lt;/p&gt;
&lt;p&gt;The soupsieve CSS parser uses a compiled regular expression to tokenise attribute selector values. This pattern matches both quoted strings (`&amp;#34;value&amp;#34;` or `&amp;#39;value&amp;#39;`) and unquoted identifiers. The regex contains alternation branches for:&lt;/p&gt;
&lt;p&gt;1. Double-quoted strings: `&amp;#34;[^&amp;#34;\\]*(?:\\.[^&amp;#34;\\]*)*&amp;#34;`
2. Single-quoted strings: `&amp;#39;[^&amp;#39;\\]*(?:\\.[^&amp;#39;\\]*)*&amp;#39;`
3. Unquoted identifiers&lt;/p&gt;
&lt;p&gt;When an attribute selector contains an **unterminated quoted value** - e.g., `[a=&amp;#34;xxxx...` (opening `&amp;#34;` but no closing `&amp;#34;`) -” the regex engine attempts to match the quoted-string branch. After that branch fails (no closing quote), the engine backtracks and at…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-836r-79rf-4m37</guid>
    </item>
    <item>
      <title>PYSEC-2026-3072 — Soup Sieve: Regular Expression Denial of Service (ReDoS) via Selector Parser</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-3072</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: soupsieve&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The CSS selector parser in soupsieve (the CSS selector engine for Beautiful Soup 4) contains a regular expression vulnerable to catastrophic backtracking. When processing an attribute selector with an unterminated quoted value, the `VALUE` regex pattern in `css_parser.py` enters exponential backtracking. A payload of only **300 bytes** causes the regex engine to hang for **over 3 seconds**, enabling a trivial Regular Expression Denial of Service (ReDoS) attack.&lt;/p&gt;
&lt;p&gt;To be completely transparent, AI tools helped surface this issue. However, this was independently reproduced and carefully validated.&lt;/p&gt;
&lt;p&gt;Any application that passes untrusted CSS selector strings to `soupsieve.compile()` or Beautiful Soup&amp;#39;s `.select()` / `.select_one()` is affected.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;**Affected code:** `soupsieve/css_parser.py`, line ~121 - `RE_VALUES` / `VALUE` regex pattern&lt;/p&gt;
&lt;p&gt;The soupsieve CSS parser uses a compiled regular expression to tokenise attribute selector values. This pattern matches both quoted strings (`&amp;#34;value&amp;#34;` or `&amp;#39;value&amp;#39;`) and unquoted identifiers. The regex contains alternation branches for:&lt;/p&gt;
&lt;p&gt;1. Double-quoted strings: `&amp;#34;[^&amp;#34;\\]*(?:\\.[^&amp;#34;\\]*)*&amp;#34;`
2. Single-quoted strings: `&amp;#39;[^&amp;#39;\\]*(?:\\.[^&amp;#39;\\]*)*&amp;#39;`
3. Unquoted identifiers&lt;/p&gt;
&lt;p&gt;When an attribute selector contains an **unterminated quoted value** - e.g., `[a=&amp;#34;xxxx...` (opening `&amp;#34;` but no closing `&amp;#34;`) -” the regex engine attempts to match the quoted-string branch. After that branch fails (no closing quote), the engine backtracks and at…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: soupsieve&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;The CSS selector parser in soupsieve (the CSS selector engine for Beautiful Soup 4) contains a regular expression vulnerable to catastrophic backtracking. When processing an attribute selector with an unterminated quoted value, the `VALUE` regex pattern in `css_parser.py` enters exponential backtracking. A payload of only **300 bytes** causes the regex engine to hang for **over 3 seconds**, enabling a trivial Regular Expression Denial of Service (ReDoS) attack.&lt;/p&gt;
&lt;p&gt;To be completely transparent, AI tools helped surface this issue. However, this was independently reproduced and carefully validated.&lt;/p&gt;
&lt;p&gt;Any application that passes untrusted CSS selector strings to `soupsieve.compile()` or Beautiful Soup&amp;#39;s `.select()` / `.select_one()` is affected.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;**Affected code:** `soupsieve/css_parser.py`, line ~121 - `RE_VALUES` / `VALUE` regex pattern&lt;/p&gt;
&lt;p&gt;The soupsieve CSS parser uses a compiled regular expression to tokenise attribute selector values. This pattern matches both quoted strings (`&amp;#34;value&amp;#34;` or `&amp;#39;value&amp;#39;`) and unquoted identifiers. The regex contains alternation branches for:&lt;/p&gt;
&lt;p&gt;1. Double-quoted strings: `&amp;#34;[^&amp;#34;\\]*(?:\\.[^&amp;#34;\\]*)*&amp;#34;`
2. Single-quoted strings: `&amp;#39;[^&amp;#39;\\]*(?:\\.[^&amp;#39;\\]*)*&amp;#39;`
3. Unquoted identifiers&lt;/p&gt;
&lt;p&gt;When an attribute selector contains an **unterminated quoted value** - e.g., `[a=&amp;#34;xxxx...` (opening `&amp;#34;` but no closing `&amp;#34;`) -” the regex engine attempts to match the quoted-string branch. After that branch fails (no closing quote), the engine backtracks and at…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-3072</guid>
    </item>
  </channel>
</rss>
