{"id":"PYSEC-2026-3831","summary":"eml_parser has a URL extraction bypass via HTML entities in URLs","details":"## Summary\n\n`eml_parser` performs certain validations on potential URL strings to discard bogus values. In versions prior to `3.0.2`, this validation was performed before unescaping any HTML entities that might occur in the string. This caused the library to wrongfully reject valid URLs that use HTML entities for the `:`, `/`, or `.` characters. These URLs would then not be included in the list of extracted URLs. Similarly, the host parts of such URLs would not be extracted.\n\nFor example, neither the URL `https&#58;&#47;&#47;phishing&#46;example&#46;com` nor its host (`phishing.example.com`) would appear in the parsing result.\n\n## Impact\n\n`eml_parser` is used in email security gateways and SOC pipelines to extract URLs as IOCs. Those URLs are then checked against threat-intel feeds, URL reputation services, and sandboxes. A URL that is not extracted is never checked.\n\n## Patches\n\nSince version 3.0.2 the library unescapes all HTML entities in every URL before deciding to accept or reject it. A test was added to prevent regressions.","aliases":["CVE-2026-55618","GHSA-fxgq-9m89-cxj9"],"modified":"2026-09-10T12:15:03.038244940Z","published":"2026-09-10T09:44:56.643484Z","references":[{"type":"WEB","url":"https://github.com/GOVCERT-LU/eml_parser/security/advisories/GHSA-fxgq-9m89-cxj9"},{"type":"WEB","url":"https://github.com/GOVCERT-LU/eml_parser/pull/90"},{"type":"WEB","url":"https://github.com/GOVCERT-LU/eml_parser/commit/746a69f86443eb0b6a47f77db3cfe727c21f92b3"},{"type":"PACKAGE","url":"https://github.com/GOVCERT-LU/eml_parser"},{"type":"WEB","url":"https://github.com/GOVCERT-LU/eml_parser/releases/tag/v3.0.2"},{"type":"PACKAGE","url":"https://pypi.org/project/eml-parser"},{"type":"ADVISORY","url":"https://github.com/advisories/GHSA-fxgq-9m89-cxj9"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-55618"}],"affected":[{"package":{"name":"eml-parser","ecosystem":"PyPI","purl":"pkg:pypi/eml-parser"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"3.0.2"}]}],"versions":["0.9","1.0","1.1","1.10","1.11","1.11.1","1.11.2","1.11.4","1.11.5","1.11.6","1.11.7","1.12.0","1.13.0","1.14.0","1.14.1","1.14.2","1.14.3","1.14.4","1.14.5","1.14.6","1.14.7","1.14.8","1.15.0","1.16.0","1.17.0","1.17.1","1.17.2","1.17.3","1.17.4","1.17.5","1.3","1.4","1.5","1.6","1.7","1.8","1.9","2.0.0","2.0.1","3.0.0","3.0.1"],"database_specific":{"source":"https://github.com/pypa/advisory-database/blob/main/vulns/eml-parser/PYSEC-2026-3831.yaml"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:N"}]}