GHSA-C5F8-35QR-Q4FM
Vulnerability from github – Published: 2021-03-26 19:53 – Updated: 2024-09-30 20:35Impact
The notification emails sent for notifications for missed messages or for an expiring account are subject to HTML injection. In the case of the notification for missed messages, this could allow an attacker to insert forged content into the email.
The account expiry feature is not enabled by default and the HTML injection is not controllable by an attacker.
Patches
This issue is fixed in #9200.
Workarounds
For the missed messages notifications:
The notif.html, notif_mail.html, and room.html templates can be overridden with custom templates that manually escapes the variables using JInja2's escape filter. See the email.template_dir setting.
For the account expiry notifications:
-
Account expiry can be disabled via the
account_validity.enabledsetting. -
The
notice_expiry.htmltemplate can be overridden with a custom template that manually escapes the variables using JInja2'sescapefilter. See theemail.template_dirsetting.
{
"affected": [
{
"package": {
"ecosystem": "PyPI",
"name": "matrix-synapse"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "1.27.0"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2021-21333"
],
"database_specific": {
"cwe_ids": [
"CWE-74",
"CWE-79"
],
"github_reviewed": true,
"github_reviewed_at": "2021-03-26T19:52:46Z",
"nvd_published_at": "2021-03-26T20:15:00Z",
"severity": "MODERATE"
},
"details": "### Impact\nThe notification emails sent for notifications for missed messages or for an expiring account are subject to HTML injection. In the case of the notification for missed messages, this could allow an attacker to insert forged content into the email.\n\nThe account expiry feature is not enabled by default and the HTML injection is not controllable by an attacker.\n\n### Patches\nThis issue is fixed in #9200.\n\n### Workarounds\nFor the missed messages notifications:\n\nThe `notif.html`, `notif_mail.html`, and `room.html` templates can be overridden with custom templates that manually escapes the variables using [JInja2\u0027s `escape` filter](https://jinja.palletsprojects.com/en/2.11.x/templates/#escape). See the `email.template_dir` setting.\n\nFor the account expiry notifications:\n\n1. Account expiry can be disabled via the `account_validity.enabled` setting.\n\n2. The `notice_expiry.html` template can be overridden with a custom template that manually escapes the variables using [JInja2\u0027s `escape` filter](https://jinja.palletsprojects.com/en/2.11.x/templates/#escape). See the `email.template_dir` setting.",
"id": "GHSA-c5f8-35qr-q4fm",
"modified": "2024-09-30T20:35:33Z",
"published": "2021-03-26T19:53:04Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/matrix-org/synapse/security/advisories/GHSA-c5f8-35qr-q4fm"
},
{
"type": "ADVISORY",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2021-21333"
},
{
"type": "WEB",
"url": "https://github.com/matrix-org/synapse/pull/9200"
},
{
"type": "WEB",
"url": "https://github.com/matrix-org/synapse/commit/e54746bdf7d5c831eabe4dcea76a7626f1de73df"
},
{
"type": "PACKAGE",
"url": "https://github.com/matrix-org/synapse"
},
{
"type": "WEB",
"url": "https://github.com/matrix-org/synapse/releases/tag/v1.27.0"
},
{
"type": "WEB",
"url": "https://github.com/pypa/advisory-database/tree/main/vulns/matrix-synapse/PYSEC-2021-134.yaml"
},
{
"type": "WEB",
"url": "https://lists.fedoraproject.org/archives/list/package-announce@lists.fedoraproject.org/message/TNNAJOZNMVMXM6AS7RFFKB4QLUJ4IFEY"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:C/C:N/I:H/A:N",
"type": "CVSS_V3"
},
{
"score": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:N/SI:H/SA:N",
"type": "CVSS_V4"
}
],
"summary": "HTML injection in email and account expiry notifications"
}
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.