Quadratic ReDoS in parse_received() envelope-from extraction
A crafted 40 KB Received header cost about 10 seconds of CPU on any ordinary parse call. The maintainer credits us in the 4.9.0 release notes.
- Affected
- 4.2.0 – 4.8.0
- Fixed in
- 4.9.0
Security research
We audit the software we use and protect. When we find a flaw, we reproduce it, report it privately to the project and propose a fix.
01 — Record
Only flaws that each project has already fixed and published are listed. Reports still under review stay private until a fix ships.
mail-parser
mail-parser
A crafted 40 KB Received header cost about 10 seconds of CPU on any ordinary parse call. The maintainer credits us in the 4.9.0 release notes.
mailsuite
mailsuite
A message anyone can deliver into the Maildir could not be read, marked as read or moved aside, which stalled processing of that mailbox.
parsedmarc
parsedmarc
A single small email sent to the DMARC report address stopped mailbox processing on every run until someone deleted it by hand.
parsedmarc
parsedmarc
An XML report of a few KB, with no entities, made the parser spend tens of seconds of CPU and more than 1 GB of memory.
parsedmarc
parsedmarc
A subject with CJK characters or emoji exceeded the filesystem's byte limit (ENAMETOOLONG), held back the output batch and duplicated rows on every run.
parsedmarc
parsedmarc
Report fields reached the CSV unfiltered, where a spreadsheet could run them as formulas, and line breaks in subjects allowed forging log lines.
Better Auth for Convex
@convex-dev/better-auth
OAuth callbacks skipped the state cookie check, and the one-time token was appended to any redirect allowed by trustedOrigins, including wildcards such as *.vercel.app. This allowed taking over another user's session.
Better Auth for Convex
@convex-dev/better-auth
The x-better-auth-forwarded-* headers were restored for any caller, so an attacker could choose the host used in password reset and verification links.
RustDesk
rustdesk
Both peers encrypted with the same key and the same nonce counter, exposing the XOR of the plaintexts to a relay or on-path attacker. RustDesk already had another report of the same flaw and treated us as an independent reporter; the fix uses separate keys per direction.
02 — Method
Audits
We audit code, dependencies and infrastructure with the same method we use for these reports.