CVE-2026-68749
Quadratic regex backtracking in the html_sanitize_ex CSS scrubber allows CPU-exhaustion denial of service
Description
Inefficient Regular Expression Complexity vulnerability in the CSS scrubber in rrrene html_sanitize_ex allows an unauthenticated remote attacker to exhaust server CPU via a long CSS declaration in sanitized HTML. The declaration regex in HtmlSanitizeEx.Scrubber.CSS.scrub/1 matches the property name with an unbounded greedy [-\w]+ followed by a mandatory :, so a long run of word characters not followed by a colon makes the engine give back one character at a time and retry the colon at every start offset. The work is quadratic in the length of the run, and no length cap is applied to the CSS handed to the scrubber. An 80 KB <style> body costs roughly 2.4 seconds of scheduler time, so a few concurrent requests saturate the BEAM scheduler pool and make the application unresponsive. The impact is CPU exhaustion only. Nothing is read, modified or disclosed. This issue affects html_sanitize_ex: from 0.3.1 before 1.4.5 and from 1.5.0-rc.0 before 1.5.3.
INFO
Published Date :
Aug. 6, 2026, 4:16 p.m.
Last Modified :
Oct. 24, 2026, 4:10 p.m.
Remotely Exploit :
Yes !
Source :
6b3ad84c-e1a6-4bf7-a703-f496b71e49db
Affected Products
The following products are affected by CVE-2026-68749
vulnerability.
Even if cvefeed.io is aware of the exact versions of the
products
that
are
affected, the information is not represented in the table below.
CVSS Scores
| Score | Version | Severity | Vector | Exploitability Score | Impact Score | Source |
|---|---|---|---|---|---|---|
| CVSS | 134c704f-9b21-4f2e-91b3-4a467353bcc0 | |||||
| CVSS 3.1 | HIGH | [email protected] | ||||
| CVSS 4.0 | HIGH | 6b3ad84c-e1a6-4bf7-a703-f496b71e49db | ||||
| CVSS 4.0 | HIGH | 6b3ad84c-e1a6-4bf7-a703-f496b71e49db |
Solution
- Update html_sanitize_ex to version 1.5.3 or later.
- Apply a length cap to CSS input.
- Limit CPU resources for the application.
References to Advisories, Solutions, and Tools
Here, you will find a curated list of external links that provide in-depth
information, practical solutions, and valuable tools related to
CVE-2026-68749.
| URL | Resource |
|---|---|
| https://cna.erlef.org/cves/CVE-2026-68749.html | Patch Third Party Advisory |
| https://github.com/rrrene/html_sanitize_ex/commit/4f4bd9eb254881462c0461fbab74b29188c2c133 | Patch |
| https://github.com/rrrene/html_sanitize_ex/commit/b673df33ddf982c8bd0a8bd6348aa247080b3b14 | |
| https://github.com/rrrene/html_sanitize_ex/security/advisories/GHSA-4cx2-987x-rr2x | Broken Link |
| https://osv.dev/vulnerability/EEF-CVE-2026-68749 | Patch Third Party Advisory |
CWE - Common Weakness Enumeration
While CVE identifies
specific instances of vulnerabilities, CWE categorizes the common flaws or
weaknesses that can lead to vulnerabilities. CVE-2026-68749 is
associated with the following CWEs:
Common Attack Pattern Enumeration and Classification (CAPEC)
Common Attack Pattern Enumeration and Classification
(CAPEC)
stores attack patterns, which are descriptions of the common attributes and
approaches employed by adversaries to exploit the CVE-2026-68749
weaknesses.
We scan GitHub repositories to detect new proof-of-concept exploits. Following list is a collection of public exploits and proof-of-concepts, which have been published on GitHub (sorted by the most recently updated).
Results are limited to the first 15 repositories due to potential performance issues.
The following list is the news that have been mention
CVE-2026-68749 vulnerability anywhere in the article.
The following table lists the changes that have been made to the
CVE-2026-68749 vulnerability over time.
Vulnerability history details can be useful for understanding the evolution of a vulnerability, and for identifying the most recent changes that may impact the vulnerability's severity, exploitability, or other characteristics.
-
CVE Translated by [email protected]
Oct. 24, 2026
Action Type Old Value New Value Changed Translation Title: html_sanitize_ex de rrrene, Description: Una vulnerabilidad de complejidad de expresión regular ineficiente en el depurador CSS en rrrene html_sanitize_ex permite a un atacante remoto no autenticado agotar la CPU del servidor a través de una declaración CSS larga en HTML saneado. La expresión regular de declaración en HtmlSanitizeEx.Scrubber.CSS.scrub/1 coincide con el nombre de la propiedad con un [-\w]+ codicioso ilimitado seguido de un : obligatorio, por lo que una secuencia larga de caracteres de palabra no seguida por dos puntos hace que el motor retroceda un carácter a la vez y reintente los dos puntos en cada desplazamiento de inicio. El trabajo es cuadrático en la longitud de la secuencia, y no se aplica ningún límite de longitud al CSS entregado al depurador. Un cuerpo [style] de 80 KB cuesta aproximadamente 2.4 segundos de tiempo de planificador, por lo que unas pocas solicitudes concurrentes saturan el pool de planificadores BEAM y hacen que la aplicación no responda. El impacto es solo agotamiento de CPU. Nada es leído, modificado o divulgado. Este problema afecta a html_sanitize_ex: desde 0.3.1 antes de 1.5.3. Title: html_sanitize_ex de rrrene, Description: Una vulnerabilidad de complejidad de expresión regular ineficiente en el depurador CSS en rrrene html_sanitize_ex permite a un atacante remoto no autenticado agotar la CPU del servidor a través de una declaración CSS larga en HTML saneado. La expresión regular de declaración en HtmlSanitizeEx.Scrubber.CSS.scrub/1 coincide con el nombre de la propiedad con un [-\w]+ codicioso ilimitado seguido de un : obligatorio, por lo que una secuencia larga de caracteres de palabra no seguida por dos puntos hace que el motor retroceda un carácter a la vez y reintente los dos puntos en cada desplazamiento de inicio. El trabajo es cuadrático en la longitud de la secuencia, y no se aplica ningún límite de longitud al CSS entregado al depurador. Un cuerpo [style] de 80 KB cuesta aproximadamente 2.4 segundos de tiempo de planificador, por lo que unas pocas solicitudes concurrentes saturan el pool de planificadores BEAM y hacen que la aplicación no responda. El impacto es solo agotamiento de CPU. Nada es leído, modificado o divulgado. Este problema afecta a html_sanitize_ex: desde 0.3.1 antes de 1.5.3. -
CVE Translated by [email protected]
Oct. 23, 2026
Action Type Old Value New Value Added Translation Title: html_sanitize_ex de rrrene, Description: Una vulnerabilidad de complejidad de expresión regular ineficiente en el depurador CSS en rrrene html_sanitize_ex permite a un atacante remoto no autenticado agotar la CPU del servidor a través de una declaración CSS larga en HTML saneado. La expresión regular de declaración en HtmlSanitizeEx.Scrubber.CSS.scrub/1 coincide con el nombre de la propiedad con un [-\w]+ codicioso ilimitado seguido de un : obligatorio, por lo que una secuencia larga de caracteres de palabra no seguida por dos puntos hace que el motor retroceda un carácter a la vez y reintente los dos puntos en cada desplazamiento de inicio. El trabajo es cuadrático en la longitud de la secuencia, y no se aplica ningún límite de longitud al CSS entregado al depurador. Un cuerpo [style] de 80 KB cuesta aproximadamente 2.4 segundos de tiempo de planificador, por lo que unas pocas solicitudes concurrentes saturan el pool de planificadores BEAM y hacen que la aplicación no responda. El impacto es solo agotamiento de CPU. Nada es leído, modificado o divulgado. Este problema afecta a html_sanitize_ex: desde 0.3.1 antes de 1.5.3. -
CVE Modified by 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
Aug. 19, 2026
Action Type Old Value New Value Changed Affected [{'cpes': ['cpe:2.3:a:rrrene:html_sanitize_ex:*:*:*:*:*:*:*:*'], 'repo': 'https://github.com/rrrene/html_sanitize_ex', 'vendor': 'rrrene', 'modules': ["'Elixir.HtmlSanitizeEx.Scrubber.CSS'", "'Elixir.HtmlSanitizeEx'"], 'product': 'html_sanitize_ex', 'versions': [{'status': 'affected', 'version': '0.3.1', 'lessThan': '1.5.3', 'versionType': 'semver'}], 'packageURL': 'pkg:hex/html_sanitize_ex', 'packageName': 'html_sanitize_ex', 'programFiles': ['lib/html_sanitize_ex/scrubber/css.ex', 'lib/html_sanitize_ex.ex'], 'collectionURL': 'https://repo.hex.pm', 'defaultStatus': 'unaffected', 'programRoutines': [{'name': "'Elixir.HtmlSanitizeEx.Scrubber.CSS':scrub/1"}, {'name': "'Elixir.HtmlSanitizeEx':html5/1"}]}, {'cpes': ['cpe:2.3:a:rrrene:html_sanitize_ex:*:*:*:*:*:*:*:*'], 'repo': 'https://github.com/rrrene/html_sanitize_ex', 'vendor': 'rrrene', 'modules': ["'Elixir.HtmlSanitizeEx.Scrubber.CSS'", "'Elixir.HtmlSanitizeEx'"], 'product': 'html_sanitize_ex', 'versions': [{'status': 'affected', 'version': '21f90012eb21aa36f4e3701b7547e12faf0f3c8b', 'lessThan': '4f4bd9eb254881462c0461fbab74b29188c2c133', 'versionType': 'git'}], 'packageURL': 'pkg:github/rrrene/html_sanitize_ex', 'packageName': 'rrrene/html_sanitize_ex', 'programFiles': ['lib/html_sanitize_ex/scrubber/css.ex', 'lib/html_sanitize_ex.ex'], 'collectionURL': 'https://github.com', 'defaultStatus': 'unaffected', 'programRoutines': [{'name': "'Elixir.HtmlSanitizeEx.Scrubber.CSS':scrub/1"}, {'name': "'Elixir.HtmlSanitizeEx':html5/1"}]}] [{'cpes': ['cpe:2.3:a:rrrene:html_sanitize_ex:*:*:*:*:*:*:*:*'], 'repo': 'https://github.com/rrrene/html_sanitize_ex', 'vendor': 'rrrene', 'modules': ["'Elixir.HtmlSanitizeEx.Scrubber.CSS'", "'Elixir.HtmlSanitizeEx'"], 'product': 'html_sanitize_ex', 'versions': [{'status': 'affected', 'version': '0.3.1', 'lessThan': '1.4.5', 'versionType': 'semver'}, {'status': 'affected', 'version': '1.5.0-rc.0', 'lessThan': '1.5.3', 'versionType': 'semver'}], 'packageURL': 'pkg:hex/html_sanitize_ex', 'packageName': 'html_sanitize_ex', 'programFiles': ['lib/html_sanitize_ex/scrubber/css.ex', 'lib/html_sanitize_ex.ex'], 'collectionURL': 'https://repo.hex.pm', 'defaultStatus': 'unaffected', 'programRoutines': [{'name': "'Elixir.HtmlSanitizeEx.Scrubber.CSS':scrub/1"}, {'name': "'Elixir.HtmlSanitizeEx':html5/1"}]}, {'cpes': ['cpe:2.3:a:rrrene:html_sanitize_ex:*:*:*:*:*:*:*:*'], 'repo': 'https://github.com/rrrene/html_sanitize_ex', 'vendor': 'rrrene', 'modules': ["'Elixir.HtmlSanitizeEx.Scrubber.CSS'", "'Elixir.HtmlSanitizeEx'"], 'product': 'html_sanitize_ex', 'versions': [{'status': 'affected', 'changes': [{'at': '4f4bd9eb254881462c0461fbab74b29188c2c133', 'status': 'unaffected'}, {'at': 'b673df33ddf982c8bd0a8bd6348aa247080b3b14', 'status': 'unaffected'}], 'version': '21f90012eb21aa36f4e3701b7547e12faf0f3c8b', 'lessThan': '*', 'versionType': 'git'}], 'packageURL': 'pkg:github/rrrene/html_sanitize_ex', 'packageName': 'rrrene/html_sanitize_ex', 'programFiles': ['lib/html_sanitize_ex/scrubber/css.ex', 'lib/html_sanitize_ex.ex'], 'collectionURL': 'https://github.com', 'defaultStatus': 'unaffected', 'programRoutines': [{'name': "'Elixir.HtmlSanitizeEx.Scrubber.CSS':scrub/1"}, {'name': "'Elixir.HtmlSanitizeEx':html5/1"}]}] Changed Description Inefficient Regular Expression Complexity vulnerability in the CSS scrubber in rrrene html_sanitize_ex allows an unauthenticated remote attacker to exhaust server CPU via a long CSS declaration in sanitized HTML. The declaration regex in HtmlSanitizeEx.Scrubber.CSS.scrub/1 matches the property name with an unbounded greedy [-\w]+ followed by a mandatory :, so a long run of word characters not followed by a colon makes the engine give back one character at a time and retry the colon at every start offset. The work is quadratic in the length of the run, and no length cap is applied to the CSS handed to the scrubber. An 80 KB <style> body costs roughly 2.4 seconds of scheduler time, so a few concurrent requests saturate the BEAM scheduler pool and make the application unresponsive. The impact is CPU exhaustion only. Nothing is read, modified or disclosed. This issue affects html_sanitize_ex: from 0.3.1 before 1.5.3. Inefficient Regular Expression Complexity vulnerability in the CSS scrubber in rrrene html_sanitize_ex allows an unauthenticated remote attacker to exhaust server CPU via a long CSS declaration in sanitized HTML. The declaration regex in HtmlSanitizeEx.Scrubber.CSS.scrub/1 matches the property name with an unbounded greedy [-\w]+ followed by a mandatory :, so a long run of word characters not followed by a colon makes the engine give back one character at a time and retry the colon at every start offset. The work is quadratic in the length of the run, and no length cap is applied to the CSS handed to the scrubber. An 80 KB <style> body costs roughly 2.4 seconds of scheduler time, so a few concurrent requests saturate the BEAM scheduler pool and make the application unresponsive. The impact is CPU exhaustion only. Nothing is read, modified or disclosed. This issue affects html_sanitize_ex: from 0.3.1 before 1.4.5 and from 1.5.0-rc.0 before 1.5.3. Added Reference https://github.com/rrrene/html_sanitize_ex/commit/b673df33ddf982c8bd0a8bd6348aa247080b3b14 -
Initial Analysis by [email protected]
Aug. 11, 2026
Action Type Old Value New Value Added CVSS V3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H Added CPE Configuration OR *cpe:2.3:a:rrrene:htmlsanitizeex:*:*:*:*:*:*:*:* versions from (including) 0.3.1 up to (excluding) 1.5.3 Added Reference Type EEF: https://cna.erlef.org/cves/CVE-2026-68749.html Types: Patch, Third Party Advisory Added Reference Type EEF: https://github.com/rrrene/html_sanitize_ex/commit/4f4bd9eb254881462c0461fbab74b29188c2c133 Types: Patch Added Reference Type EEF: https://github.com/rrrene/html_sanitize_ex/security/advisories/GHSA-4cx2-987x-rr2x Types: Broken Link Added Reference Type EEF: https://osv.dev/vulnerability/EEF-CVE-2026-68749 Types: Patch, Third Party Advisory -
CVE Modified by 134c704f-9b21-4f2e-91b3-4a467353bcc0
Aug. 06, 2026
Action Type Old Value New Value Added SSVC {'id': 'CVE-2026-68749', 'role': 'CISA Coordinator', 'options': [{'exploitation': 'none'}, {'automatable': 'no'}, {'technicalImpact': 'partial'}], 'version': '2.0.3', 'timestamp': '2026-08-06T15:44:14.739175Z'} -
New CVE Received by 6b3ad84c-e1a6-4bf7-a703-f496b71e49db
Aug. 06, 2026
Action Type Old Value New Value Added Affected [{'cpes': ['cpe:2.3:a:rrrene:html_sanitize_ex:*:*:*:*:*:*:*:*'], 'repo': 'https://github.com/rrrene/html_sanitize_ex', 'vendor': 'rrrene', 'modules': ["'Elixir.HtmlSanitizeEx.Scrubber.CSS'", "'Elixir.HtmlSanitizeEx'"], 'product': 'html_sanitize_ex', 'versions': [{'status': 'affected', 'version': '0.3.1', 'lessThan': '1.5.3', 'versionType': 'semver'}], 'packageURL': 'pkg:hex/html_sanitize_ex', 'packageName': 'html_sanitize_ex', 'programFiles': ['lib/html_sanitize_ex/scrubber/css.ex', 'lib/html_sanitize_ex.ex'], 'collectionURL': 'https://repo.hex.pm', 'defaultStatus': 'unaffected', 'programRoutines': [{'name': "'Elixir.HtmlSanitizeEx.Scrubber.CSS':scrub/1"}, {'name': "'Elixir.HtmlSanitizeEx':html5/1"}]}, {'cpes': ['cpe:2.3:a:rrrene:html_sanitize_ex:*:*:*:*:*:*:*:*'], 'repo': 'https://github.com/rrrene/html_sanitize_ex', 'vendor': 'rrrene', 'modules': ["'Elixir.HtmlSanitizeEx.Scrubber.CSS'", "'Elixir.HtmlSanitizeEx'"], 'product': 'html_sanitize_ex', 'versions': [{'status': 'affected', 'version': '21f90012eb21aa36f4e3701b7547e12faf0f3c8b', 'lessThan': '4f4bd9eb254881462c0461fbab74b29188c2c133', 'versionType': 'git'}], 'packageURL': 'pkg:github/rrrene/html_sanitize_ex', 'packageName': 'rrrene/html_sanitize_ex', 'programFiles': ['lib/html_sanitize_ex/scrubber/css.ex', 'lib/html_sanitize_ex.ex'], 'collectionURL': 'https://github.com', 'defaultStatus': 'unaffected', 'programRoutines': [{'name': "'Elixir.HtmlSanitizeEx.Scrubber.CSS':scrub/1"}, {'name': "'Elixir.HtmlSanitizeEx':html5/1"}]}] Added Description Inefficient Regular Expression Complexity vulnerability in the CSS scrubber in rrrene html_sanitize_ex allows an unauthenticated remote attacker to exhaust server CPU via a long CSS declaration in sanitized HTML. The declaration regex in HtmlSanitizeEx.Scrubber.CSS.scrub/1 matches the property name with an unbounded greedy [-\w]+ followed by a mandatory :, so a long run of word characters not followed by a colon makes the engine give back one character at a time and retry the colon at every start offset. The work is quadratic in the length of the run, and no length cap is applied to the CSS handed to the scrubber. An 80 KB <style> body costs roughly 2.4 seconds of scheduler time, so a few concurrent requests saturate the BEAM scheduler pool and make the application unresponsive. The impact is CPU exhaustion only. Nothing is read, modified or disclosed. This issue affects html_sanitize_ex: from 0.3.1 before 1.5.3. Added CVSS V4.0 AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X Added CWE CWE-1333 Added Reference https://cna.erlef.org/cves/CVE-2026-68749.html Added Reference https://github.com/rrrene/html_sanitize_ex/commit/4f4bd9eb254881462c0461fbab74b29188c2c133 Added Reference https://github.com/rrrene/html_sanitize_ex/security/advisories/GHSA-4cx2-987x-rr2x Added Reference https://osv.dev/vulnerability/EEF-CVE-2026-68749